Python 3.x 在python中合并旋转pdf和非旋转pdf

Python 3.x 在python中合并旋转pdf和非旋转pdf,python-3.x,pdf,reportlab,pypdf2,Python 3.x,Pdf,Reportlab,Pypdf2,我正在使用python库PyPDF2和reportlab将文本字段添加到现有PDF中。 我目前正在使用这个函数 def makeTextFields(): packet = io.BytesIO() can = canvas.Canvas(packet, pagesize=landscape(letter)) can.acroForm.textfield(name='fname', tooltip='First Name', x

我正在使用python库
PyPDF2
reportlab
将文本字段添加到现有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.mergePage
替换为
page.mergeRotatedTranslatedPage
,但由于运气不佳,我还尝试设置了
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不是最佳的工作语言,请使用其他语言

text\u field\u page.mergeRotatedTranslatedPage(page,-90,page.mediaBox.getWidth()/2,page.mediaBox.getWidth()/2)