0

使用 PyMuPDF,我想从 pdf 中提取所有图像并单独保存它们,并将 pdf 中的所有图像替换为相同图像位置的图像名称并保存为另一个文档。我可以使用以下代码保存所有图像。

import fitz
#This creates the Document object doc
doc = fitz.open("Article_Example_1_2.pdf")
html_text=""
for i in range(len(doc)):
    print(doc[i]._getContents())
    for img in doc.getPageImageList(i):
        xref = img[0]
        pix = fitz.Pixmap(doc, xref)
        if pix.n - pix.alpha < 4:       # this is GRAY or RGB   or pix.n < 5
            pix.writePNG("p%s-%s.png" % (i, xref))
        else:               # CMYK: convert to RGB first
            pix1 = fitz.Pixmap(fitz.csRGB, pix)
            pix1.writePNG("p%s-%s.png" % (i, xref))
            pix1 = None
        pix = None

doc.save(filename=r"new.pdf")

doc.close()

但不确定如何将它们全部替换为 pdf 中存储的图像名称。如果有人可以在这里帮助我,将不胜感激。

4

1 回答 1

1

来自 repo 维护者的消息:

我不确定我们是否在回购的问题博客中讨论过这个问题。您可以做的是使用新功能“编辑注释”。基本方法:

  1. 通过 计算每个图像的 bbox Page.getImageBbox()
  2. 通过添加编辑注释Page.addRedactAnnot(bbox, text=filename, ...)
  3. 完成页面后,执行Page.apply_redactions(). 这将删除所有图像和所有编辑。选择的文件名将出现在以前的图像 bbox 中。
  4. 另存为新文档。

确保使用 PyMuPDF v1.17.0 或更高版本。

于 2020-06-11T14:00:53.643 回答