我怎么知道我的文件是使用PyPDF2附加到我的PDF中的?

问题描述 投票:1回答:1

我正在尝试使用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")

我不知道我是否做对了。如果有人知道,请帮助我。

python pdf attachment pypdf2
1个回答
0
投票

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

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

这里是一个更有效的示例:

write

接下来,要检查附加是否成功,您可以使用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) 比较附加.exe文件前后的文件大小(以字节为单位)。>>

以下是检查文件大小的相同示例:(我正在将Python 3.6+用于f字符串

os.stat.st_size

上面的代码打印出来

os.stat.st_size

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

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

from PyPDF2 import PdfFileWriter, PdfFileReader import os 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", "rb") as exe: output.addAttachment("client.exe", exe.read()) with open("out.pdf", "wb") as f: output.write(f) print(f"size of OUTPUT: {os.stat('out.pdf').st_size}")

[作为旁注,我不确定要将exe文件附加到PDF时要做什么,但是似乎可以附加它们,但是size of SOURCE: 42942 size of EXE: 989744 size of OUTPUT: 1031773 可能无法打开。您可以使用上面相同的代码来附加另一个PDF文件(或其他文档),而不是附加一个可执行文件,它仍然可以工作。


0
投票

感谢它的工作,但引发了此错误我知道为什么我会收到此错误吗?

© www.soinside.com 2019 - 2024. All rights reserved.