使用 pymupdf 在 PDF 中将图像替换为图像名称



使用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 中存储的图像名称。如果有人能在这里帮助我,将不胜感激。

来自存储库维护者的消息:

我不确定我们是否在存储库的问题博客中讨论过这个问题。您可以做的是使用新功能"密文注释"。基本方法:

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

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

相关内容

  • 没有找到相关文章