Есть ли способ, которым я могу редактировать содержимое в pdf и расширять пустой текст в соответствии с длиной содержимого?
Кажется, что pypdf2 может объединить только два pdf вместо изменения исходного.
Itext может редактировать pdf на основе атрибута «текстовая зона», но я могу просто использовать положение пустого текста в pdf и объединить текст напрямую.
Кто-нибудь может мне помочь? Большое спасибо.
Обновление 4.27 Мой код:
def createmark(marks):
width = letter[0]
height = letter[1]
markpdf = "mark.pdf"
c = canvas.Canvas(markpdf, pagesize=letter)
c.translate(0, height)
#reportlab.pdfbase.pdfmetrics.registerFont(reportlab.pdfbase.ttfonts.TTFont('guofu', os.path.join(DataDir, 'font.ttf')))
for mark in marks:
text = str(mark["text"])
bounding = mark["boundingBoxes"][0]
leftx = bounding[0] * width
leftupy = bounding[1] * height
leftdowny = bounding[-1] * height
gap = leftdowny - leftupy
fontsize = random.uniform(gap / 3, gap / 2)
#c.setFont('guofu', fontsize)
position = random.uniform(leftupy, leftdowny + gap / 4)
#c.drawString(leftx, -leftdowny + gap / 2, text)
c.drawString(leftx, -position, text)
c.setFillAlpha(1)
c.save()
def genpdf(inpdf, markpdf, outpdf):
pdf_output = PdfFileWriter()
input_stream = open(inpdf, 'rb')
pdf_input = PdfFileReader(input_stream, strict=False)
pdf_watermark = PdfFileReader(open(markpdf, 'rb'), strict=False)
page = pdf_input.getPage(0)
page.mergePage(pdf_watermark.getPage(0))
page.compressContentStreams()
pdf_output.addPage(page)
pdf_output.write(open(outpdf, 'wb'))
Если я хочу использовать «pypdf2» для добавления текста в PDF, я должен создать « mark.pdf ", который содержит текст, который я хочу добавить первым. А затем я объединяю два файла PDF в один.
В некоторых формах , мы должны заполнить пробел, например, имя, возраст и т. Д. c. Но если я просто объединю «mark.pdf» с формой, я не смогу изменить вид пробела, что означает, что если имя слишком длинное, текст будет пустым из имени.
Я попытался использовать Itext в java, который может обеспечить эту функцию. Но это требует, чтобы текстовый бланк имел атрибут «текстовая зона» при генерации PDF. И форма pdf (предоставляемая клиентами), которую я использую, может не иметь этого атрибута.
Поэтому мне было интересно, есть ли способ, которым я могу использовать, чтобы изменить длину и ширину текстовых пробелов, чтобы они соответствовали тексту, который я хочу добавить.