我有以下代码:
import os
from pyPdf import PdfFileReader, PdfFileWriter
path = "C:/Real Python/Course materials/Chapter 12/Practice files"
input_file_name = os.path.join(path, "Pride and Prejudice.pdf")
input_file = PdfFileReader(file(input_file_name, "rb"))
output_PDF = PdfFileWriter()
for page_num in range(1, 4):
output_PDF.addPage(input_file.getPage(page_num))
output_file_name = os.path.join(path, "Output/portion.pdf")
output_file = file(output_file_name, "wb")
output_PDF.write(output_file)
output_file.close()
直到现在我只是从Pdfs阅读,后来学会了从Pdf写入txt ...但是现在这个...
为什么
PdfFileReader
与PdfFileWriter
如此不同有人可以解释吗?我希望这样的事情:
import os
from pyPdf import PdfFileReader, PdfFileWriter
path = "C:/Real Python/Course materials/Chapter 12/Practice files"
input_file_name = os.path.join(path, "Pride and Prejudice.pdf")
input_file = PdfFileReader(file(input_file_name, "rb"))
output_file_name = os.path.join(path, "out Pride and Prejudice.pdf")
output_file = PdfFileWriter(file(output_file_name, "wb"))
for page_num in range(1,4):
page = input_file.petPage(page_num)
output_file.addPage(page_num)
output_file.write(page)
有帮助吗???
谢谢
编辑0:.addPage()是做什么的?
for page_num in range(1, 4):
output_PDF.addPage(input_file.getPage(page_num))
它是否仅创建3个空白页面?
编辑1:何时有人可以解释发生了什么:
1)
output_PDF = PdfFileWriter()
2)
output_PDF.addPage(input_file.getPage(page_num))
3)
output_PDF.write(output_file)
第三个将JUST CREATED(!)对象传递给
output_PDF
,为什么? 最佳答案
问题基本上是PDF交叉引用表。
这是一个杂乱的意大利面条怪兽,涉及页面,字体,对象,元素,所有这些都需要链接在一起以允许随机访问。
每次更新文件时,都需要重建该表。该文件是首先在内存中创建的,因此只需执行一次,从而进一步减少了破坏文件的机会。
output_PDF = PdfFileWriter()
这将在内存中创建供PDF使用的空间。 (从旧的pdf中提取)
output_PDF.addPage(input_file.getPage(page_num))
将输入的pdf页面添加到内存中创建的PDF文件(所需页面)。
output_PDF.write(output_file)
最后,这会将存储在内存中的对象写入文件,构建头文件,交叉引用表,并将所有内容链接在一起。
编辑:大概是,JUST CREATED标志表明PyPDF开始建立适当的表并将事物链接在一起。
-
回应为什么vs .txt和csv:
从文本或CSV文件复制时,没有现有的数据结构可以理解和移动,以确保正确保存和创建格式,图像放置和表单数据(输入节等)之类的内容。
关于python - pyPdf PdfFileReader与PdfFileWriter,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28573256/