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...