pdf提取时部分字体无法显示问题处理

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)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容