You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python操作PDF添加矩形与文本时文本倒置的解决方法

解决PyMuPDF插入文本倒置的问题

你的文本倒置核心原因是在insert_textbox时设置了rotate=180参数,同时部分矩形坐标设置不合理,以下是修正方案:

问题分析

  1. 强制旋转导致倒置:第二个文本插入时用了rotate=180,直接让文本旋转180度,这是倒置的直接原因。
  2. 坐标异常:PDF的坐标系以页面左下角为原点,y轴向上,你设置的text_rect = fitz.Rect(500, -50, 600, 50)包含负数y坐标,会超出页面可视范围,显示位置异常。
  3. 矩形坐标写法冗余: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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 11:15:09