【问题标题】:Anti aliasing rendered PDFs using wxPython + pymupdf使用 wxPython + pymupdf 抗锯齿渲染的 PDF
【发布时间】:2019-06-18 15:23:48
【问题描述】:

我是 wxPython 和 pymupdf 的新手,并且看过 wxPython + pymupdf 的示例。它们可以工作,但是 pdf 页面(渲染)的质量很差。 我确信这可以改进。基本上我正在寻找一种抗锯齿解决方案。但是我不知道如何也无法在网上找到样品。 请有人提供使用 wxpython + pymupdf 显示 PDF 的示例。

这是我尝试过的:

# https://pymupdf.readthedocs.io/en/latest/tutorial/#rendering-a-page
# if you used alpha=True (or letting default it):
bitmap = wx.Bitmap.FromBufferRGBA(pix.width, pix.height, pix.samples)

# if you used alpha=False:
bitmap = wx.Bitmap.FromBuffer(pix.width, pix.height, pix.samples)

还有这个:

# http://code.activestate.com/recipes/580621-wxpython-pdf-xps-viewer-using-pymupdf-binding-for-/
pix = page.getPixmap(matrix = self.matrix)
bmp = wx.BitmapFromBuffer(pix.w, pix.h, pix.samplesRGB())

【问题讨论】:

  • 有一个wx.lib.pdfviewer。查看演示。
  • 大声笑,不敢相信我错过了。太棒了,请发布您的答案,以便我接受。我对 pdfviewer 呈现的 PDF 的质量感到满意。

标签: python pdf wxpython pymupdf


【解决方案1】:

以下仅使用 pymupdf 为我生成了相当高质量的图像:

doc = fitz.open(fname)
for idx, page in enumerate(doc):
    pix = page.getPixmap(alpha = False)
    mat = fitz.Matrix(2.0, 2.0)
    pix = page.getPixmap(matrix = mat)
    pix.writeImage(dest + idx + '.jpg')

【讨论】:

  • 此外,PyMuPDF还支持直接设置抗锯齿参数以提高图像质量,包括渲染的文档页面。
  • @JorjMcKie 很有趣,如果您提供示例可能对其他人有所帮助。
【解决方案2】:

这是一个关于如何在 PyMuPDF 中设置抗锯齿级别的示例:

>>> import fitz
>>> fitz.TOOLS.anti_aliasing_values()
{'graphics': 8, 'text': 8, 'graphics_min_line_width': 0.0}
>>> fitz.TOOLS.set_aa_level(4)
>>> fitz.TOOLS.anti_aliasing_values()
{'graphics': 4, 'text': 4, 'graphics_min_line_width': 0.0}
>>> # now generate your pixmap etc., do not forget to also use gamma correction:
>>> pix.gammaWith(factor)  # factor > 1.0
>>> # change the AA values again anytime

有关推动实施的完整讨论线程,请参阅此处https://github.com/pymupdf/PyMuPDF/issues/467

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-07
    • 1970-01-01
    • 2013-04-12
    • 1970-01-01
    • 2021-03-05
    相关资源
    最近更新 更多