有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Q:如何在pdf中展开文本空白?

有没有办法编辑pdf格式的内容,并根据内容的长度展开文本空白

pypdf2似乎只能合并两个pdf,而不能更改原始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合并成一个

在某些形式中,我们必须填空,例如姓名、年龄等。但是如果我只是将“标记.pdf”与表单合并,我就不能改变空白的样子,也就是说,如果名称太长,文本将不在名称中。p>

我尝试使用java中的Itext来提供这个功能。但它要求文本空白在生成pdf时具有“文本区域”属性。我使用的pdf格式(由客户提供)可能没有这个属性

所以我想知道有没有一种方法可以用来改变文本空白的长度和宽度,以适应我想要添加的文本


共 (0) 个答案