我如何知道使用PyPDF2将文件附加在pdf中?

我正在尝试使用pypDF2将(.exe)文件附加到pdf中。 我运行代码。它运行完美。但我的pdf文件仍然是相同大小。 我不知道我的文件是否已附加。

这就是我想要做的

from pypDF2 import PdfFileWriter,PdfFileReader
output = PdfFileWriter()
input1 = PdfFileReader(open ("doc1.pdf","rb"))
#check it's whether work or not
print("doc1 has %d pages" % input1.getNumPages())
output.addAttachment("doc1.pdf","client.exe")

,我不知道我是否正确执行此操作。 如果有人知道这一点,请帮帮我。

yangpq008 回答:我如何知道使用PyPDF2将文件附加在pdf中?

首先,您必须正确使用PdfFileWriter类。

您可以使用appendPagesFromReader将页面从源PDF(“ doc1.pdf ”)复制到输出PDF(例如“ out.pdf ”)。然后,对于addAttachment,第一个参数是要附加文件的文件名,第二个参数是附件数据(文档中不清楚,但必须是类似字节的序列)。对于附件数据,可以在binary mode中打开.exe文件,然后在read()中打开。

然后,您需要使用write实际上将PdfFileWriter对象保存到实际 PDF文件中。

from PyPDF2 import PdfFileWriter,PdfFileReader

output = PdfFileWriter()

input_pdf = PdfFileReader("doc1.pdf")
output.appendPagesFromReader(input_pdf)

with open("client.exe","rb") as exe:
    output.addAttachment("client.exe",exe.read())

with open("out.pdf","wb") as f:
    output.write(f)

接下来,要检查附加是否成功,可以使用os.stat.st_size比较附加.exe文件前后的文件大小(以字节为单位)。

使用Python 3.6+作为f字符串

output = PdfFileWriter()

print(f"size of SOURCE: {os.stat('doc1.pdf').st_size}")
input_pdf = PdfFileReader("doc1.pdf")
output.appendPagesFromReader(input_pdf)

print(f"size of EXE: {os.stat('client.exe').st_size}")
with open("client.exe","wb") as f:
    output.write(f)
print(f"size of OUTPUT: {os.stat('out.pdf').st_size}")

上面的代码会打印出来

size of SOURCE: 42942
size of EXE: 989744
size of OUTPUT: 1031773

...这表明.exe文件已添加到PDF。

当然,您可以通过在Adobe Reader中打开PDF来手动检查它:

enter image description here

作为旁注,我不确定要将exe文件附加到PDF的目的,但是似乎可以附加它们,但Adobe treats them as security risks可能无法打开。您可以使用上面相同的代码来附加另一个PDF文件而不是EXE文件,它仍然可以正常工作。

本文链接:https://www.f2er.com/2844014.html

大家都在问