【问题标题】:How to draw pdf content in flutter canvas如何在颤振画布中绘制pdf内容
【发布时间】:2021-09-26 17:25:39
【问题描述】:
我正在使用带有 pdf 包的 Flutter。在自述文件中说使用printing 在应用程序中显示 pdf。
但是,我想在 pdf 内容的前面画图(记笔记/做注释)。所以我想我必须在我的CustomPaint 小部件中绘制 pdf 内容才能获得更多控制权。
我四处寻找,没有发现任何有用的经验。请让我知道我的方法是正确/合理的,如果有更好的方法。
谢谢!
【问题讨论】:
标签:
flutter
pdf
canvas
dart-pdf
【解决方案1】:
我认为您正在谈论的 README 部分是这个:
使用打印包https://pub.dev/packages/printing获取完整
Flutter 打印和分享操作。
此打印包用于打印到真实打印机。
您使用的 pdf 包仅用于在颤振应用程序中创建 pdf,而不是用于将其显示为小部件。
您想要实现的是在其上显示 pdf 和注释。您的方法是正确的:
- 使用 CustomPainter
- 添加一个 PDF 小部件作为其子部件
- 在前景画家上绘制注释。
要将 pdf 显示为小部件,您需要另一个包,例如 advance_pdf_viewer。
在前景画家上绘画很重要,因为如 CustomPaint 类文档中所述:
当被要求绘画时,CustomPaint 首先要求它的画家在上面绘画
当前画布,然后它绘制它的孩子,然后,在绘制之后
它的孩子,它要求它的foregroundPainter绘画。
代码应如下所示:
PDFDocument doc = await PDFDocument.fromAsset('assets/test.pdf');
return CustomPaint(
child: PDFViewer(doc: document)),
foregroundPainter: AnnotationsPainter(),
);