plantuml-ascii
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChinesePlantUML ASCII Art Diagram Generator
PlantUML ASCII艺术图生成器
Overview
概述
Create text-based ASCII art diagrams using PlantUML. Perfect for documentation in terminal environments, README files, emails, or any scenario where graphical diagrams aren't suitable.
使用PlantUML创建基于文本的ASCII艺术图。非常适合终端环境、README文件、电子邮件或任何不适合使用图形图的场景中的文档编写。
What is PlantUML ASCII Art?
什么是PlantUML ASCII艺术图?
PlantUML can generate diagrams as plain text (ASCII art) instead of images. This is useful for:
- Terminal-based workflows
- Git commits/PRs without image support
- Documentation that needs to be version-controlled
- Environments where graphical tools aren't available
PlantUML可以生成纯文本(ASCII艺术图)格式的图,而非图片。这在以下场景中非常有用:
- 基于终端的工作流
- 不支持图片的Git提交/PR
- 需要版本控制的文档
- 无法使用图形工具的环境
Installation
安装
bash
undefinedbash
undefinedmacOS
macOS
brew install plantuml
brew install plantuml
Linux (varies by distro)
Linux (因发行版而异)
sudo apt-get install plantuml # Ubuntu/Debian
sudo yum install plantuml # RHEL/CentOS
sudo apt-get install plantuml # Ubuntu/Debian
sudo yum install plantuml # RHEL/CentOS
Or download JAR directly
或直接下载JAR包
undefinedOutput Formats
输出格式
| Flag | Format | Description |
|---|---|---|
| ASCII | Pure ASCII characters |
| Unicode ASCII | Enhanced with box-drawing characters |
| 标志 | 格式 | 说明 |
|---|---|---|
| ASCII | 纯ASCII字符 |
| Unicode ASCII | 使用方框绘制字符增强显示 |
Basic Workflow
基本工作流
1. Create PlantUML Diagram File
1. 创建PlantUML图文件
plantuml
@startuml
participant Bob
actor Alice
Bob -> Alice : hello
Alice -> Bob : Is it ok?
@endumlplantuml
@startuml
participant Bob
actor Alice
Bob -> Alice : hello
Alice -> Bob : Is it ok?
@enduml2. Generate ASCII Art
2. 生成ASCII艺术图
bash
undefinedbash
undefinedStandard ASCII output
标准ASCII输出
plantuml -txt diagram.puml
plantuml -txt diagram.puml
Unicode-enhanced output (better looking)
Unicode增强输出(视觉效果更好)
plantuml -utxt diagram.puml
plantuml -utxt diagram.puml
Using JAR directly
直接使用JAR包
java -jar plantuml.jar -txt diagram.puml
java -jar plantuml.jar -utxt diagram.puml
undefinedjava -jar plantuml.jar -txt diagram.puml
java -jar plantuml.jar -utxt diagram.puml
undefined3. View Output
3. 查看输出
Output is saved as (ASCII) or (Unicode).
diagram.atxtdiagram.utxt输出将保存为(ASCII格式)或(Unicode格式)。
diagram.atxtdiagram.utxtDiagram Types Supported
支持的图类型
Sequence Diagram
序列图
plantuml
@startuml
actor User
participant "Web App" as App
database "Database" as DB
User -> App : Login Request
App -> DB : Validate Credentials
DB --> App : User Data
App --> User : Auth Token
@endumlplantuml
@startuml
actor User
participant "Web App" as App
database "Database" as DB
User -> App : Login Request
App -> DB : Validate Credentials
DB --> App : User Data
App --> User : Auth Token
@endumlClass Diagram
类图
plantuml
@startuml
class User {
+id: int
+name: string
+email: string
+login(): bool
}
class Order {
+id: int
+total: float
+items: List
+calculateTotal(): float
}
User "1" -- "*" Order : places
@endumlplantuml
@startuml
class User {
+id: int
+name: string
+email: string
+login(): bool
}
class Order {
+id: int
+total: float
+items: List
+calculateTotal(): float
}
User "1" -- "*" Order : places
@endumlActivity Diagram
活动图
plantuml
@startuml
start
:Initialize;
if (Is Valid?) then (yes)
:Process Data;
:Save Result;
else (no)
:Log Error;
stop
endif
:Complete;
stop
@endumlplantuml
@startuml
start
:Initialize;
if (Is Valid?) then (yes)
:Process Data;
:Save Result;
else (no)
:Log Error;
stop
endif
:Complete;
stop
@endumlState Diagram
状态图
plantuml
@startuml
[*] --> Idle
Idle --> Processing : start
Processing --> Success : complete
Processing --> Error : fail
Success --> [*]
Error --> Idle : retry
@endumlplantuml
@startuml
[*] --> Idle
Idle --> Processing : start
Processing --> Success : complete
Processing --> Error : fail
Success --> [*]
Error --> Idle : retry
@endumlComponent Diagram
组件图
plantuml
@startuml
[Client] as client
[API Gateway] as gateway
[Service A] as svcA
[Service B] as svcB
[Database] as db
client --> gateway
gateway --> svcA
gateway --> svcB
svcA --> db
svcB --> db
@endumlplantuml
@startuml
[Client] as client
[API Gateway] as gateway
[Service A] as svcA
[Service B] as svcB
[Database] as db
client --> gateway
gateway --> svcA
gateway --> svcB
svcA --> db
svcB --> db
@endumlUse Case Diagram
用例图
plantuml
@startuml
actor "User" as user
actor "Admin" as admin
rectangle "System" {
user -- (Login)
user -- (View Profile)
user -- (Update Settings)
admin -- (Manage Users)
admin -- (Configure System)
}
@endumlplantuml
@startuml
actor "User" as user
actor "Admin" as admin
rectangle "System" {
user -- (Login)
user -- (View Profile)
user -- (Update Settings)
admin -- (Manage Users)
admin -- (Configure System)
}
@endumlDeployment Diagram
部署图
plantuml
@startuml
actor "User" as user
node "Load Balancer" as lb
node "Web Server 1" as ws1
node "Web Server 2" as ws2
database "Primary DB" as db1
database "Replica DB" as db2
user --> lb
lb --> ws1
lb --> ws2
ws1 --> db1
ws2 --> db1
db1 --> db2 : replicate
@endumlplantuml
@startuml
actor "User" as user
node "Load Balancer" as lb
node "Web Server 1" as ws1
node "Web Server 2" as ws2
database "Primary DB" as db1
database "Replica DB" as db2
user --> lb
lb --> ws1
lb --> ws2
ws1 --> db1
ws2 --> db1
db1 --> db2 : replicate
@endumlCommand-Line Options
命令行选项
bash
undefinedbash
undefinedSpecify output directory
指定输出目录
plantuml -txt -o ./output diagram.puml
plantuml -txt -o ./output diagram.puml
Process all files in directory
处理目录中的所有文件
plantuml -txt ./diagrams/
plantuml -txt ./diagrams/
Include dot files (hidden files)
包含点文件(隐藏文件)
plantuml -txt -includeDot diagrams/
plantuml -txt -includeDot diagrams/
Verbose output
详细输出
plantuml -txt -v diagram.puml
plantuml -txt -v diagram.puml
Specify charset
指定字符集
plantuml -txt -charset UTF-8 diagram.puml
undefinedplantuml -txt -charset UTF-8 diagram.puml
undefinedAnt Task Integration
Ant任务集成
xml
<target name="generate-ascii">
<plantuml dir="./src" format="txt" />
</target>
<target name="generate-unicode-ascii">
<plantuml dir="./src" format="utxt" />
</target>xml
<target name="generate-ascii">
<plantuml dir="./src" format="txt" />
</target>
<target name="generate-unicode-ascii">
<plantuml dir="./src" format="utxt" />
</target>Tips for Better ASCII Diagrams
优化ASCII图的技巧
- Keep it simple: Complex diagrams don't render well in ASCII
- Short labels: Long text breaks ASCII alignment
- Use Unicode (): Better visual quality with box-drawing chars
-utxt - Test before sharing: Verify in terminal with fixed-width font
- Consider alternatives: For complex diagrams, use Mermaid.js or graphviz
- 保持简洁:复杂图在ASCII格式下显示效果不佳
- 使用短标签:长文本会破坏ASCII的对齐效果
- 使用Unicode():通过方框绘制字符获得更好的视觉效果
-utxt - 分享前测试:在使用等宽字体的终端中验证显示效果
- 考虑替代方案:对于复杂图,可使用Mermaid.js或graphviz
Example Output Comparison
示例输出对比
Standard ASCII ():
-txt ,---. ,---.
|Bob| |Alice|
`---' `---'
| hello |
|------------->|
| |
| Is it ok? |
|<-------------|
| |Unicode ASCII ():
-utxt┌─────┐ ┌─────┐
│ Bob │ │Alice│
└─────┘ └─────┘
│ hello │
│─────────────>│
│ │
│ Is it ok? │
│<─────────────│
│ │标准ASCII():
-txt ,---. ,---.
|Bob| |Alice|
`---' `---'
| hello |
|------------->|
| |
| Is it ok? |
|<-------------|
| |Unicode ASCII():
-utxt┌─────┐ ┌─────┐
│ Bob │ │Alice│
└─────┘ └─────┘
│ hello │
│─────────────>│
│ │
│ Is it ok? │
│<─────────────│
│ │Quick Reference
快速参考
bash
undefinedbash
undefinedCreate sequence diagram in ASCII
创建ASCII格式的序列图
cat > seq.puml << 'EOF'
@startuml
Alice -> Bob: Request
Bob --> Alice: Response
@enduml
EOF
plantuml -txt seq.puml
cat seq.atxt
cat > seq.puml << 'EOF'
@startuml
Alice -> Bob: Request
Bob --> Alice: Response
@enduml
EOF
plantuml -txt seq.puml
cat seq.atxt
Create with Unicode
创建Unicode格式的图
plantuml -utxt seq.puml
cat seq.utxt
undefinedplantuml -utxt seq.puml
cat seq.utxt
undefinedTroubleshooting
故障排除
Problem: Garbled Unicode characters
- Solution: Ensure terminal supports UTF-8 and has proper font
Problem: Diagram looks misaligned
- Solution: Use fixed-width font (Courier, Monaco, Consolas)
Problem: Command not found
- Solution: Install PlantUML or use Java JAR directly
Problem: Output file not created
- Solution: Check file permissions, ensure PlantUML has write access
问题:Unicode字符显示乱码
- 解决方案:确保终端支持UTF-8并使用合适的字体
问题:图显示对齐错误
- 解决方案:使用等宽字体(Courier、Monaco、Consolas)
问题:命令未找到
- 解决方案:安装PlantUML或直接使用Java JAR包
问题:未生成输出文件
- 解决方案:检查文件权限,确保PlantUML有写入权限