如何在pdf中插入文本到特定位置?



我有一个坐标数据编码的地理空间Pdf,我有UTM X和UTM Y可用,我想在那个位置插入一个文本'Hello world',但我不知道如何做到这一点。我尝试使用不同的python库,但不知道如何做到这一点。你能指导如何解决这个问题,因为我知道我可以使用我尝试过的这个代码在pdf的特定像素插入文本。请你能帮我解决这个问题吗?我将非常感谢你。

import io
from reportlab.pdfgen import canvas
from PyPDF2 import PdfReader, PdfWriter
input_pdf = PdfReader(open('geo.pdf', 'rb'))
buffer = io.BytesIO()
c = canvas.Canvas(buffer)
c.drawString(165.546086513, 490.0217355398, "Hello, World!")
c.save()
buffer.seek(0)

text_pdf = PdfReader(buffer)
output_pdf = PdfWriter()
for i in range(len(input_pdf.pages)):
page = input_pdf.pages[i]
if i == 0:
page.merge_page(text_pdf.pages[0])
output_pdf.add_page(page)
with open('output.pdf', 'wb') as f:
output_pdf.write(f)

一个PyMuPDF解决方案:

import fitz  # import PyMuPDF
filename = 'geo.pdf'
doc = fitz.open(filename)  # open PDF with PyMuPDF
# you need to know which page to write to, example: first page
page = doc[0]
point = fitz.Point(165.546086513, 490.0217355398)  # insertion start point
page.insert_text(point, "Hello, World!")  # insert the text
doc.save("output.pdf")  # save to new file

你可以选择不同的字体,字体大小,文字颜色等等。除了保存到一个新文件,你也可以修改现有的文件:用doc.saveIncr()替换最后一条语句doc.save(...)

最新更新