首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从python中增加plantUML中的图形大小?

从python中增加plantUML中的图形大小?
EN

Stack Overflow用户
提问于 2020-07-27 08:38:26
回答 2查看 1.9K关注 0票数 0

米维

要在(子)文件夹中生成PlantUML图:/Diagrams/,我使用以下python:

代码语言:javascript
运行
复制
from plantuml import PlantUML
import os
from os.path import abspath
from shutil import copyfile

os.environ['PLANTUML_LIMIT_SIZE'] = str(4096 * 4)                       # set max with to 4 times the default (16,384)

server = PlantUML(url='http://www.plantuml.com/plantuml/img/',
                          basic_auth={},
                          form_auth={}, http_opts={}, request_opts={})


diagram_dir = "./Diagrams"
#directory = os.fsencode()
for file in os.listdir(diagram_dir):
  filename = os.fsdecode(file)
  if filename.endswith(".txt"):
    server.processes_file(abspath(f'./Diagrams/{filename}'))

例如,它用于生成以下test.txt文件:

代码语言:javascript
运行
复制
@startuml

'Enforce straight lines
skinparam linetype ortho

' Set direction of graph hierarchy
Left to Right direction

' create work package data
rectangle "something something something" as ffd0
rectangle "something something something" as ffd1
rectangle "something something something something  something" as ffd2
rectangle "something something something something" as ffd3
rectangle "something something somethingsomethingsomething" as ffd4
rectangle "something something something something something something" as ffd5
rectangle "something something something something" as ffd6
rectangle "something something something " as ffd7

' Implement graph hierarchy
ffd0-->ffd1
ffd1-->ffd2
ffd2-->ffd3
ffd3-->ffd4
ffd4-->ffd5
ffd5-->ffd6
ffd6-->ffd7
@enduml

预期行为

因为我将PLANTUML_LIMIT_SIZE变量设置为常见问题建议的16384 (像素),所以我希望这将填充图的图片,所有块并排连接到最大宽度为4096 *4像素。

为了测试从python脚本中设置它是否不正确,我还尝试用:set PLANTUML_LIMIT_SIZE=16384手动设置它,以期待与上面段落中解释的相同行为(图片填充到16384像素)。

观察行为

相反,PlantUML在2000年水平图片上切断图片,如下图所示:

问题

如何确保PlantUML不从python脚本中切断n像素图的块(高度或宽度)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-07 14:38:02

我发现的防止图被切断的最佳方法是选择SVG输出,而不试图猜测大小或选择任意大的限制。

请注意,只有在本地运行PLANTUML_LIMIT_SIZE时,设置PlantUML才会产生效果,但是您使用的Python接口似乎会将图表发送给在线服务。我不知道该接口的内部结构,但是每个文献资料都应该能够使用http://www.plantuml.com/plantuml/svg/作为服务URL来获得SVG输出。

如果您需要PNG格式的最终图像,则需要使用另一个工具来转换它。

票数 1
EN

Stack Overflow用户

发布于 2020-11-16 20:26:16

方法1:

为了防止图被切断,我执行了以下步骤:

  1. 从这个位置下载了plantuml.jar http://sourceforge.net/projects/plantuml/files/plantuml.jar/download
  2. 将我在someLargeDiagram.txt文件中编写的图表放在与plantuml.jar文件相同的目录中。
  3. 在同一个目录中打开Ubuntu 20.04上的终端并运行:
代码语言:javascript
运行
复制
java -jar plantuml.jar -verbose someLargeDiagram.txt

它成功地生成了未被切断的.png文件的关系图。

办法2:

在创建了更大的图表之后,它们又被切断了,这给出了增加PLANTUML_LIMIT_SIZE的信息。我尝试使用:java -jar plantuml.jar -verbose -PLANTUML_LIMIT_SIZE=8192 Diagrams/latest.uml将这个大小作为参数在命令行中传递,但是这不起作用,..-PLANTUML_LIMIT_SIZE 8192..也不起作用。这个链接建议将其设置为一个环境变量,因此我在Ubuntu20.04中使用命令:export PLANTUML_LIMIT_SIZE 8192完成了这一操作,之后我成功地创建了一个更大的关系图,没有与命令断线:

代码语言:javascript
运行
复制
java -jar plantuml.jar -verbose Diagrams/latest.uml
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63111593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档