import fitz
import os
import shutil
def flatten_pdf_form(input_pdf_path):
"""将PDF表单字段转换为只读文本,并将内容转换为图片形式"""
# 创建临时文件路径
temp_path = input_pdf_path + ".temp"
# 打开PDF文件
pdf_document = fitz.open(input_pdf_path)
# 创建新的PDF文档
new_pdf = fitz.open()
# 遍历每一页
for page in pdf_document:
# 创建新页面
new_page = new_pdf.new_page(width=page.rect.width, height=page.rect.height)
# 首先复制原始页面内容
new_page.show_pdf_page(new_page.rect, pdf_document, page.number)
# 处理表单字段
fields = page.widgets()
for field in fields:
if field.field_value:
rect = field.rect
text = field.field_value
# 计算更小的字体大小
font_size = min(10, 20)
new_page.insert_textbox(
rect, # 文本框区域
text, # 要显示的文本
fontsize=font_size, # 字体大小
align=1, # 居中对齐
fontname="msyhbd", # 使用中文字体
fontfile="C:/Windows/Fonts/msyhbd.ttc", # 指定字体文件路径
color=(0, 0, 0), # 黑色文本
)
# 先保存到临时文件
new_pdf.save(temp_path, garbage=4, deflate=True)
new_pdf.close()
pdf_document.close()
# 删除原文件并重命名临时文件
os.remove(input_pdf_path)
os.rename(temp_path, input_pdf_path)
print(f"已将表单字段转换为图片并保存")
# 使用示例
input_pdf = r"C:\Users\51952\Downloads\1.pdf"
# 转换PDF
flatten_pdf_form(input_pdf)
pdf提取时部分字体无法显示问题处理
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 1、问题描述: 加载pdf时界面不显示部分字体的内容且控制台提示警告: The CMap "baseUrl" pa...
- 一般ZSH字体都很漂亮,不是Meslo就是DroidSansMono,但是vscode的终端显示不出来,如下: 参...
- 昨天在学习bootstarp的过程中,出现了一个bootstarp的字体无法引入的问题。 在使用bootstarp...