【问题标题】:merging rotated pdf with non rotated pdf in python在python中将旋转的pdf与非旋转的pdf合并
【发布时间】:2021-06-07 07:24:26
【问题描述】:

我正在使用 python 库 PyPDF2reportlab 将文本字段添加到现有 PDF 中。 我目前正在使用该功能

def makeTextFields():

    packet = io.BytesIO()
    can = canvas.Canvas(packet, pagesize=landscape(letter))

    can.acroForm.textfield(name='fname', tooltip='First Name',
                    x=500, y=20, borderStyle='inset',
                    borderColor=blue, fillColor=blue, 
                    width=79, height=24,
                    textColor=black, forceBorder=False, annotationFlags ="")

    can.showPage()
    can.save()

    packet.seek(0)
    text_fields = PdfFileReader(packet)
    return text_fields

使用文本字段创建 PDF,然后加载基本 pdf,合并并保存

main = PdfFileReader(open("master.pdf", 'rb'))
text_fields = makeTextFields()

output = PdfFileWriter()
text_field_page = text_fields.getPage(0)
page = main.getPage(0)

page.mergePage(text_field_page)

output.addPage(text_field_page)

stream = open("dest.pdf", "wb")
output.write(stream)
stream.close()

此解决方案可以正常工作,但是 master.pdf 的旋转为 90 这意味着当调用 page.mergePage 时,文本字段 pdf 会自动旋转 90 度以匹配基本 pdf,并将文本字段保留 90 度侧面文字

我的尝试

我尝试用page.mergeRotatedTranslatedPage 替换page.mergePage 不走运,我还尝试设置annotationFlags ="norotate",根据reportlab 文档应该允许文本字段忽略画布旋转,但这不起作用。最后我尝试了

can.saveState()
can.rotate(90)
can.acroForm.textfield(name='fname', tooltip='First Name',
                    x=500, y=20, borderStyle='inset',
                    borderColor=blue, fillColor=blue, 
                    width=79, height=24,
                    textColor=black, forceBorder=False, annotationFlags ="")
can.restoreState()

希望将文本字段旋转 90 度偏移页面,这样当页面旋转到 90 时它将为 0,但这似乎没有影响

我相信解决方案将在于找到一种方法来取消文本字段的旋转, 对文本字段应用初始旋转,或在不匹配旋转的情况下合并两个 pdf。但是,任何其他解决方案/库都可以使用。

我也愿意在另一个程序中创建 pdf 并使用 python 合并它们。或者如果 python 不是该工作的最佳语言,则使用不同的语言

【问题讨论】:

    标签: python-3.x pdf reportlab pypdf2


    【解决方案1】:

    试试这个

    text_field_page.mergeRotatedTranslatedPage(page , -90, page .mediaBox.getWidth() / 2, page .mediaBox.getWidth() / 2)

    【讨论】:

      猜你喜欢
      • 2022-06-23
      • 2021-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多