在python中使用pymypdf(fitz)创建一个可编辑的PDF文件

这里面主要是利用了fitz的组件Widget来实现,在实现过程中主要遇到的问题是设置的中文默认值部分显示不全的问题.

安装模块

pip install PyMuPDF

实现

第一版代码

import fitz

pdf_document = fitz.open()
page = pdf_document.new_page()

rect = fitz.Rect(0, 0, 800, 50)
widget = fitz.Widget()
widget.rect = rect
widget.field_name = 'input'
widget.field_type = 7
widget.text_fontsize = 40
widget.field_value = '测试123你好'

annot = page.add_widget(widget)

annot.update()

# 保存修改后的PDF
pdf_document.save("tmp.pdf")
# 关闭PDF
pdf_document.close()

保存下来的文件如下图,其中中文测试未展示出来

中文显示不全

经过查看源码,发现有个pdf_set_document_language函数,测试能解决上述问题

第二版

import fitz

pdf_document = fitz.open()
page = pdf_document.new_page()
# 设置字体
fitz.mupdf.pdf_set_document_language(fitz._as_pdf_document(pdf_document), fitz.mupdf.FZ_LANG_zh_Hans)
rect = fitz.Rect(0, 0, 800, 50)
widget = fitz.Widget()
widget.rect = rect
widget.field_name = 'input'
widget.field_type = 7
widget.text_fontsize = 40
widget.field_value = '测试123你好'

annot = page.add_widget(widget)

annot.update()

# 保存修改后的PDF
pdf_document.save("tmp.pdf")
# 关闭PDF
pdf_document.close()

结果如下


image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容