flutter - 将文本编辑器转换为 html,然后打印为 pdf
问题描述
我正在尝试从 ZefyrEditor 打印 pdf,我知道目前没有这样的功能。所以我读到唯一的方法是将 Zefyr markdown 转换为 HTML,然后从 HTML 转换为 pdf(请参阅此处的 Github 问题),但我不知道如何。我在 Firebase 数据库的文档字段中保存了一个 Json 数据(snapsh 是我的 DocumentSnapshot),因此如果该文档存在,我将解码 Json 并将 NotusDocument 和 Delta quill markdowsn 返回到我的编辑器控制器。当我按下按钮时,我想打印我的 pdf,但显然它给了我一个错误。
我尝试使用降价包,但我不明白如何将我的 Json 数据转换为正确的 html 数据。
import 'package:pdf/pdf.dart';
import 'package:pdf/widgets.dart' as pw;
import 'package:markdown/markdown.dart' as mk;
Future<NotusDocument> _loadDocument(snapsh) async {
testo =mk.markdownToHtml(jsonDecode(await snapsh['referto']));
if(await snapsh.exists) {
final contents =await snapsh['referto'];
return NotusDocument.fromJson(jsonDecode(contents));
}
final Delta delta = Delta()..insert('ciao\n',{'b':true});
return NotusDocument.fromDelta(delta);
}
_loadDocument(value).then((document) {
setState(() {
_controller = ZefyrController(document);
testoHtml = mk.markdownToHtml(_controller.toString());
});
}
return Scaffold(
appBar: AppBar(
backgroundColor: Colors.blueGrey.shade900,
title: Text("$dataVis - $nomePaz"),
actions: <Widget>[
IconButton(
icon: Icon(Icons.print),
onPressed: () async {
final pdf = pw.Document();
Directory appDocDirectory = await getApplicationDocumentsDirectory();
pdf.addPage(pw.Page(
pageFormat: PdfPageFormat.a4,
build: (pw.Context context) {
return pw.Center(
child: pw.Text("$testo"),
); // Center
}));
final file = File(appDocDirectory.path+'/example.pdf');
await file.writeAsBytes(pdf.save());
OpenFile.open(file.path);
},
),
解决方案
推荐阅读
- r - 如何在 wilcoxon 秩和检验中找到加性治疗效果的 95% 置信区间
- r - Xmin blogdown hugo 主题的语法高亮
- java - 将整数替换为字符串
- java - 如何使 GridLayoutManager 的内容居中?
- vb.net - 访问 Application.SaveAsText 读取十六进制值
- macos - Applescript,“一个类名不能在这个标识符错误之后出现”,这是什么意思?
- python - 在正则表达式字符串中搜索相似值
- javascript - 反应回调
- python - 用python中的某个单词替换单词列表
- c# - 如何嵌入 Twitch/Youtube/Facebook 游戏流?