Python操作PDF添加矩形与文本时文本倒置的解决方法
解决PyMuPDF插入文本倒置的问题
你的文本倒置核心原因是在insert_textbox时设置了rotate=180参数,同时部分矩形坐标设置不合理,以下是修正方案:
问题分析
- 强制旋转导致倒置:第二个文本插入时用了
rotate=180,直接让文本旋转180度,这是倒置的直接原因。 - 坐标异常:PDF的坐标系以页面左下角为原点,y轴向上,你设置的
text_rect = fitz.Rect(500, -50, 600, 50)包含负数y坐标,会超出页面可视范围,显示位置异常。 - 矩形坐标写法冗余:
fitz.Rect(60, 600, 0, 150)[::-1]通过反转调整坐标顺序,不如直接按(x0, y0, x1, y1)(x0<x1,y0<y1)的规范写法清晰。
修正后的代码
import pandas as pd import fitz doc = fitz.open("sample.pdf") page = doc[0] df = pd.read_excel("Book2.xlsx") text = str(df.iloc[0, 0]) # 直接用规范的矩形坐标(x0<x1,y0<y1),无需反转 rect = fitz.Rect(0, 150, 60, 600) fill_color = (0, 0, 1) page.draw_rect(rect, fill=fill_color, width=0) hardcore_text = "WARNING: This document contains confidential information!" hardcore_textbox = page.insert_textbox(rect, hardcore_text, fontsize=12, fontname="Helvetica", align=1) # 修正坐标到页面合理范围,移除rotate参数 text_rect = fitz.Rect(500, 50, 600, 100) textbox = page.insert_textbox(text_rect, text, fontsize=24, fontname="Helvetica", align=2) doc.save("output3.pdf")
关键修改说明
- 移除了
insert_textbox中的rotate=180参数,文本默认正显。 - 调整
text_rect的y坐标为正数(50到100),确保文本在页面可视区域内。 - 优化第一个矩形的坐标顺序,直接按
(左, 下, 右, 上)的规范定义,避免反转操作,提升代码可读性。
内容的提问来源于stack exchange,提问作者Sharath
相关产品推荐
相关产品推荐

