首先,您必须正确使用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来手动检查它:
作为旁注,我不确定要将exe文件附加到PDF的目的,但是似乎可以附加它们,但Adobe treats them as security risks可能无法打开。您可以使用上面相同的代码来附加另一个PDF文件而不是EXE文件,它仍然可以正常工作。
本文链接:https://www.f2er.com/2844014.html