【发布时间】:2022-01-09 00:27:30
【问题描述】:
我正在制作一个 Flutter 应用来查看 PDF 文件。
我尝试了一堆不同的包(native_pdf_view、flutter_cached_pdfview、uc_pdfview),似乎它们都导致渲染质量有点低。
当我使用 Google Drive 的 PDF 查看器查看同一个文件时,质量得到了显着提高。是否有我遗漏的抗锯齿设置可以提高 PDF 渲染性能?
放大的屏幕截图显示了 native_pdf_view 的抗锯齿效果不佳:
任何关于如何改进 PDF 呈现的建议都将不胜感激。 PdfView 小部件的相关代码部分如下。 (如果我增加 'width' 和 'height' 参数,质量看起来会稍微好一些,但仍远不及 Google Drive 的质量,但很快就会耗尽内存)
PdfView(
documentLoader: Center(child: CircularProgressIndicator()),
pageLoader: Center(child: CircularProgressIndicator()),
controller: _pdfController,
renderer: (PdfPage page) => page.render(
width: page.width * 2,
height: page.height * 2,
format: PdfPageFormat.JPEG,
backgroundColor: '#FFFFFF',
),
))
编辑:这是这些屏幕截图中使用的源 PDF 文件(尽管其他音乐 PDF 文件也显示相同的低质量渲染): https://www.free-scores.com/PDF_EN/chopin-frederic-prelude-15-296.pdf
此 PDF 使用字体显示音乐 (https://lilypond.org/doc/v2.18/Documentation/notation/the-feta-font)。
【问题讨论】:
-
我尝试过 .JPEG、.PNG 和 .WEBM(通过 native_pdf_viewer 库公开的三个选项);它们似乎都对最终的图像质量没有任何影响。将 *2 更改为 *1 会使它看起来更加阻塞。我认为没有任何其他设置可以更改 DPI - 只是宽度/高度(大概会缩小图像以适应屏幕)
-
两个屏幕截图都是在设备上拍摄的,它在没有互联网连接的情况下也能工作,这意味着 Google Drive 应用程序在设备上(而不是服务器端)呈现了更好的图像。此 PDF 使用字体 (lilypond.org/doc/v2.18/Documentation/notation/the-feta-font),所以是的,它是矢量图像。我想澄清一下,我的问题是如何提高 Flutter 的渲染质量?即使我不能使用 native_pdf_render 包并且需要更手动地渲染和显示 PDF 中的图像,很高兴知道有一种方法可以以更高的质量显示 PDF 文件。
-
当我增加 native_pdf_view 中的高度/宽度乘数时,大概会生成分辨率更高的图像。但是,它仍然不像同一设备上的 Google Drive 那样清晰。对于 native_pdf_view 开发人员来说,这可能更像是一个问题,看看他们是否可以向 Android PDF 渲染器公开任何其他设置来解决这个问题。或者,可以使用任何缩放选项来更好地缩小图像,使其在缩小时看起来不会像块状。
-
我对 native_pdf_view 有同样的问题。我也试过:宽度:page.width * 2 和高度:page.height * 2,但没有检测到改进。我成功了告诉我谢谢。