PyPDF2 writer 函数创建空白页
PyPDF2 writer function creates blank page
正在尝试编写一个函数来合并 PDF 文档中的页面。流式输出会因未知原因创建一个空白页面这是测试用例
from PyPDF2 import PdfReader, PdfWriter
dr = r"C:\GC"
ldr = dr + r"L.pdf"
writer = PdfWriter()
with open(ldr, "rb") as f:
reader = PdfReader(f)
page = reader.pages[0]
writer.add_page(page)
f.close()
with open(dr + r"\new.pdf", "wb") as output_stream:
writer.write(output_stream)
output_stream.close()
编辑:我对我的 PE 进行了一些更改并获得了更多信息。
writer.write(output_stream)
引发错误
ValueError: I/O operation on closed file: C:\GCL.pdf
我通过保持 reader 文件打开并将语法更改为建议进行了一些故障排除,但我仍然提出错误。
由于您使用的是上下文管理器,因此无需显式调用 .close()
。试试这个:
from PyPDF2 import PdfReader, PdfWriter
dr = r"C:\GC"
ldr = dr + r"L.pdf"
writer = PdfWriter()
with open(ldr, "rb") as f:
reader = PdfReader(f)
page = reader.pages[0]
writer.add_page(page)
with open(dr + r"\new.pdf", "wb") as output_stream:
writer.write(output_stream)
下面的代码打开一个有 12 页的 PDF 文件,获取第一页并将该页写入新的 PDF 文件。
from PyPDF2 import PdfFileWriter, PdfFileReader
input_pdf = open('test.pdf', 'rb')
writer = PdfFileWriter()
reader = PdfFileReader(input_pdf)
in1 = writer.addPage(reader.getPage(0))
input_pdf.close()
output_pdf = open('new_test.pdf', 'wb')
writer.write(output_pdf)
output_pdf.close()
----------------------------------------
My system information
----------------------------------------
Platform: Apple
OS Version: macOS Catalina 10.15.7
Python Version: 3.9
PyPDF2 Version: 1.26.0
----------------------------------------
这就是有效的方法。不使用 open() as f 语法不会初始化 writer 对象的字段。在写入输出之前关闭文件会产生错误。我想文件必须是打开的,这样对象才能指向实例。
from PyPDF2 import PdfFileReader, PdfFileWriter
dr = r"C:\GC"
ldr = dr + r"\pgSrcL.pdf"
rdr = dr + r"\pgSrcR.pdf"
r5 = dr + r"\pgSrc\pg5R.pdf"
writer = PdfFileWriter()
with open(ldr, "rb") as f:
reader = PdfFileReader(f)
page = reader.getPage(5)
writer.addPage(page)
with open(dr + r"\new.pdf", "wb") as outputStream:
writer.write(outputStream)
正在尝试编写一个函数来合并 PDF 文档中的页面。流式输出会因未知原因创建一个空白页面这是测试用例
from PyPDF2 import PdfReader, PdfWriter
dr = r"C:\GC"
ldr = dr + r"L.pdf"
writer = PdfWriter()
with open(ldr, "rb") as f:
reader = PdfReader(f)
page = reader.pages[0]
writer.add_page(page)
f.close()
with open(dr + r"\new.pdf", "wb") as output_stream:
writer.write(output_stream)
output_stream.close()
编辑:我对我的 PE 进行了一些更改并获得了更多信息。
writer.write(output_stream)
引发错误
ValueError: I/O operation on closed file: C:\GCL.pdf
我通过保持 reader 文件打开并将语法更改为建议进行了一些故障排除,但我仍然提出错误。
由于您使用的是上下文管理器,因此无需显式调用 .close()
。试试这个:
from PyPDF2 import PdfReader, PdfWriter
dr = r"C:\GC"
ldr = dr + r"L.pdf"
writer = PdfWriter()
with open(ldr, "rb") as f:
reader = PdfReader(f)
page = reader.pages[0]
writer.add_page(page)
with open(dr + r"\new.pdf", "wb") as output_stream:
writer.write(output_stream)
下面的代码打开一个有 12 页的 PDF 文件,获取第一页并将该页写入新的 PDF 文件。
from PyPDF2 import PdfFileWriter, PdfFileReader
input_pdf = open('test.pdf', 'rb')
writer = PdfFileWriter()
reader = PdfFileReader(input_pdf)
in1 = writer.addPage(reader.getPage(0))
input_pdf.close()
output_pdf = open('new_test.pdf', 'wb')
writer.write(output_pdf)
output_pdf.close()
----------------------------------------
My system information
----------------------------------------
Platform: Apple
OS Version: macOS Catalina 10.15.7
Python Version: 3.9
PyPDF2 Version: 1.26.0
----------------------------------------
这就是有效的方法。不使用 open() as f 语法不会初始化 writer 对象的字段。在写入输出之前关闭文件会产生错误。我想文件必须是打开的,这样对象才能指向实例。
from PyPDF2 import PdfFileReader, PdfFileWriter
dr = r"C:\GC"
ldr = dr + r"\pgSrcL.pdf"
rdr = dr + r"\pgSrcR.pdf"
r5 = dr + r"\pgSrc\pg5R.pdf"
writer = PdfFileWriter()
with open(ldr, "rb") as f:
reader = PdfFileReader(f)
page = reader.getPage(5)
writer.addPage(page)
with open(dr + r"\new.pdf", "wb") as outputStream:
writer.write(outputStream)