Max*_*kov 5 python pdf pdf-generation reportlab pypdf
我正在使用 python ReportLab canvas 生成带有水印的覆盖文档,以将其合并到源 pdf 文档中(使用PyPDF2)。最近,我遇到了包含旋转页面的文档的问题(pdf 中的页面对象存在 /Rotate 键)。该文档在设备和打印机上看起来没问题。但结果(合并)文档包含针对源文档旋转的水印。
所以源页面的 pdf 结构如下:
6 0 obj
<</Length 45>>
stream
q
1 0 0 1 2 4 cm
799 0 0 603 0 0 cm
/x5 Do
Q
endstream
endobj
7 0 obj
<</Type/Page/Parent 1 0 R
/Resources << /XObject << /x5 5 0 R >> >>
/MediaBox [0 0 792 612]
/Rotate 270/Contents 6 0 R
>>
endobj
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,页面旋转了 270 度。
我使用类似的脚本来生成和合并水印和源页面:
6 0 obj
<</Length 45>>
stream
q
1 0 0 1 2 4 cm
799 0 0 603 0 0 cm
/x5 Do
Q
endstream
endobj
7 0 obj
<</Type/Page/Parent 1 0 R
/Resources << /XObject << /x5 5 0 R >> >>
/MediaBox [0 0 792 612]
/Rotate 270/Contents 6 0 R
>>
endobj
Run Code Online (Sandbox Code Playgroud)
这样rotation_angle = 270我就得到了下一个结果:截图
对于rotation_angle = 0(根本不关心旋转)我有:截图
如何更改脚本来解决这种情况?
其实我在这里发现了类似的问题和解决方案
所以我用下一种方式改变了代码
# Merge source and watermark pages
page0 = source.getPage(0)
over0 = overlay.getPage(0)
if rotaion_angle:
page0.mergeRotatedAroundPointPage(
over0,
rotaion_angle,
over0.mediaBox.getWidth() / 2,
over0.mediaBox.getWidth() / 2)
#page0.mergeRotatedPage(overlay.getPage(0), rotaion_angle, True)
else:
page0.mergePage(over0)
Run Code Online (Sandbox Code Playgroud)
方法mergeRotatedAroundPointPage可以解决这个问题。
| 归档时间: |
|
| 查看次数: |
4570 次 |
| 最近记录: |