python 如何将内容转换为PDF中的流?

kadbb459  于 2023-05-05  发布在  Python
关注(0)|答案(2)|浏览(150)

我需要使用PyPDF 2制作PDF编辑器。但可悲的是,有大约4-6个视频围绕这个模块,他们都显示了如何编辑和操纵一般屏幕,而不是PDF。所以我自己使用文档来学习如何使用它。我能够单独使用文档完成大部分工作,但是一旦我达到编辑文本的地步,我就找不到任何方法来这样做。
以下是我目前编辑PDF内容尝试:

import PyPDF2

pdf_file = open('pdf name goes here', 'rb')
pdf_reader = PyPDF2.PdfReader(pdf_file)
# Get the page that you want to modify
page = pdf_reader.pages[0]

content_object = page["/Contents"].get_object()
content = content_object.get_data()

modified_content = content + b"\n(new text)"

new_content_object = # i don't know how to create the new content object ):

page.__setitem__("/Contents", new_content_object)

pdf_writer = PyPDF2.PdfFileWriter()
pdf_writer.addPage(page)
with open('output.pdf', 'wb') as pdf_output:
    pdf_writer.write(pdf_output)

正如你所看到的,我的问题是我不知道如何创建一个新的内容对象。然而,如果有人能建议我一个python模块来编辑文本,我会非常高兴。谢谢!

pbpqsu0x

pbpqsu0x1#

您可以使用来自reportlab的Canvas对象来添加文本,然后合并两个PDF。Here解释了如何做到这一点。或者here,他们使用fpdf来替换文件中的文本。

1hdlvixo

1hdlvixo2#

**免责声明:**我是borb的作者,在这个答案中使用的库。

许多PDF库根本无法轻松地将内容添加到PDF。PDF不是一种简单的格式,大多数库只是将这一困难转嫁给用户。
例如:

  • 强制您计算内容的特定坐标
  • 让您直接操作内容流
  • 不自动打断文本

如果您可以更改正在使用的工具,请尝试使用borb

pip install borb

然后你可以这样做:

from borb.pdf import Document
from borb.pdf import Page
from borb.pdf import SingleColumnlayout
from borb.pdf import Paragraph
from borb.pdf import PDF

# create an empty Document
doc = Document()

# add an empty Page
page = Page()
doc.add_page(page)

# use a PageLayout to be able to automatically add
# content whilst taking into account margin, previous content
# on the page, etc
layout = SingleColumnLayout(page)

# add a Paragraph
layout.add(Paragraph("Hello there!"))

# add a second Paragraph
layout.add(Paragraph("This content is going to be added neatly beneath the first paragraph."))

# store the PDF
with open("output.pdf", "wb") as pdf_file_handle:
    PDF.dumps(pdf_file_handle, doc)

您可以在(examples) GitHub repository中找到更多文档。

相关问题