PyPDF2 - 字节数据与二进制数据 - TypeError

PyPDF2 - Byte Data vs Binary Data - TypeError

我正在尝试将 PDF 的一页打印到新的 PDF 文档中。我正在使用以下代码:

from PyPDF2 import PdfFileReader, PdfFileWriter

file_path = "/file_path/.pdf"

input_pdf = PdfFileReader(file_path)
output_file = PdfFileWriter()

cover_page = input_pdf.getPage(0)
output_file.addPage(cover_page)

with open("portion.pdf", "wb") as output_file:
    output_file.write(output_file)

当我 运行 此代码时,出现以下错误:

Traceback (most recent call last):
  File ".../Extract a portion of PDF.py", line 18, in <module>
    output_file.write(output_file)
TypeError: a bytes-like object is required, not '_io.BufferedWriter'

我已经指定输出需要写二进制,为什么说我必须使用类字节对象?

干杯,

with 语句中,您将打开的文件命名为 output_file。这实质上将 output_filePdfFileWriter() 重新分配给您刚刚打开的文件流。当您尝试执行 output_file.write(output_file) 时,这基本上是在尝试将文件流对象本身写入文件流,这没有任何意义并导致 TypeError.

要解决此问题,只需重命名您在 with 语句中使用的变量:

with open("portion.pdf", "wb") as output_file_stream:
    output_file.write(output_file_stream)

或者,您也可以将 PdfFileWriter() 重命名为 output_pdf 而不是 output_file 并将 with 语句更改为类似以下内容:

with open("portion.pdf", "wb") as output_file:
    output_pdf.write(output_file)

这可能更有意义。