Flutterpumli 是一个用于 Dart 的 PlantUML 接口插件pumli的使用
Flutterpumli 是一个用于 Dart 的 PlantUML 接口插件pumli的使用
插件介绍
pumli
是一个用于 Dart 的 PlantUML 接口插件。它允许将 PlantUML 文本格式的图表转换为各种输出格式(如 SVG 和 PNG),并直接从 Dart 进行操作。该插件已经测试在 Ubuntu 20.04LTS 上,但预计在其他操作系统上也能正常工作。
特性
- Dart API:提供字符串形式的 PlantUML 图表到各种输出格式(目前支持 SVG 和 PNG)的转换。
PumliCmd
使用 PlantUML 命令行 API 进行转换。PumliREST
使用 Web API 进行转换。
- PumliServer:启动 Picoweb 服务的 PlantUML:
- 在 Picoweb 模式下启动植物 UML 命令(需要预先安装作为先决条件)。
- 在 Picoweb 模式下启动带有给定参数的 Java(如果已安装 PlantUML jar)。
示例代码
import 'dart:io';
import 'package:pumli/pumli.dart';
import 'package:pumli/src/assistance.dart';
import 'constants.dart';
const model = complexModel;
final _log = getLogger('pumli_example');
Future<void> main() async {
initLogging();
_log.info('Starting Pumli server.');
// 使用公共的 PlantUML 服务 www.plantuml.com
// 根据其服务条款和安全预期进行使用
final pumliREST = PumliREST(serviceURL: PumliREST.plantUmlUrl);
final stopwatch = Stopwatch()..start();
// 需要预先安装 plantuml 并且服务器运行: $plantuml -picoweb
// final pumliREST = PumliREST(server: 'http://127.0.0.1:8080');
stopwatch.reset();
_log.info('PumliREST - Converting model to PNG.');
final buffer = await pumliREST.getPNG(model);
_log.info('Elapse: ${stopwatch.elapsed}');
await File('${outPrefix}_rest.png').writeAsBytes(buffer);
stopwatch.reset();
_log.info('PumliREST - Converting model to SVG.');
final svg1 = await pumliREST.getSVG(model);
_log.info('Elapse: ${stopwatch.elapsed}');
await File('${outPrefix}_rest.svg').writeAsString(svg1);
_log.info('Creating PumliCmd.');
final pumliCmd1 = PumliCmd();
stopwatch.reset();
_log.info('PumliCmd - Converting model to PNG.');
final buffer2 = await pumliCmd1.getPNG(model);
_log.info('Elapse: ${stopwatch.elapsed}');
await File('${outPrefix}_cmd_plantuml.png').writeAsBytes(buffer2);
stopwatch.reset();
_log.info('PumliCmd - Converting model to SVG.');
final svg2 = await pumliCmd1.getSVG(model);
_log.info('Elapse: ${stopwatch.elapsed}');
await File('${outPrefix}_cmd_plantuml.svg').writeAsString(svg);
_log.info('Creating PumliCmdJar.');
final pumliCmdJar = PumliCmd(jar: jarPath);
stopwatch.reset();
_log.info('PumliCmdJar - Converting model to PNG.');
final buffer3 = await pumliCmdJar.getPNG(model);
_log.info('Elapse: ${stopwatch.elapsed}');
await File('${outPrefix}_cmd_jar.png').writeAsBytes(buffer3);
stopwatch.reset();
_log.info('PumliCmdJar - Converting model to SVG.');
final svg3 = await pumliCmdJar.getSVG(model);
_log.info('Elapse: ${stopwatch.elapsed}');
await File('${outPrefix}_cmd_jar.svg').writeAsString(svg3);
}
使用说明
-
使用公共 PlantUML 渲染服务:
const simpleModel = ''' [@startuml](/user/startuml) start :Hello Pumli user!; stop [@enduml](/user/enduml) '''; final svg = await PumliREST(serviceURL: PumliREST.plantUmlUrl).getSVG(simpleModel);
-
使用 PlantUML 命令行 API:
final pumliCmd = PumliCmd(); final svg2 = await pumliCmd.getSVG(model);
-
启动本地 PlantUML picoweb 渲染器:
final pumliServer = PumliServer(); await pumliServer.start();
-
获取生成的 SVG 文件:
final svg = await pumliREST.getSVG(model); await File('/tmp/simple_rest.svg').writeAsString(svg);
-
注意事项:
- 使用 raw string 以处理包含转义字符如
\n
的的模型:const rawString = r'demo\n';
- 使用 raw string 以处理包含转义字符如
更多关于Flutterpumli 是一个用于 Dart 的 PlantUML 接口插件pumli的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复