Python实现OFD文件转PDF
OFD 文件介绍
OFD 文件是由中国国家标准化管理委员会制定的国家标准,是一种开放式文档格式,具有高度可扩展性和可编辑性,可包含多种类型内容
数字化时代,电子发票已成为商务交易的常态。然而,对于许多用户来说,电子发票可能仍然是一个令人困惑的主题。特别是当涉及到OFD格式时,许多人可能不理解为什么它如此重要。在本文中,我们将探讨电子发票的OFD格式的重要性,以及为什么您应该了解并熟悉这种格式。
首先,让我们解释一下什么是OFD格式。OFD,全称是“开放式文件格式”,是中国自主研发的一种电子文件格式。由于其开放性和高效性,OFD格式被广泛用于电子发票等场景。
那么,为什么电子发票需要采用OFD格式呢?首先,OFD格式具有高度的可验证性。这意味着它可以轻松地验证电子发票的真实性和完整性,从而避免了假发票的风险。此外,OFD格式还有助于提高电子发票的处理效率。无论是打印、存储还是传输,OFD格式都能提供更高的效率和可靠性。
对于需要报销或归档电子发票的用户来说,OFD格式的重要性不言而喻。报销是许多公司和个人经常面临的一项任务,而电子发票可以大大简化这一过程。然而,为了确保电子发票能够被接受和认可,必须采用符合规定的格式。OFD格式恰好满足了这一需求,因此成为电子发票报销和归档的首选格式。
但是OFD文件格式并不能很顺畅的在普通阅读软件里使用,在代码中也不便于处理,于是我们需要将OFD格式的文件转成PDF。
转换代码
import base64 import os import sys from easyofd.ofd import OFD from reportlab.pdfbase import pdfmetrics from reportlab.pdfbase.ttfonts import TTFont pdfmetrics.registerFont(TTFont('宋体', '方正书宋简体.ttf')) def cvt_ofd(file_path): file_prefix = os.path.splitext(os.path.split(file_path)[1])[0] with open(file_path, "rb") as f: ofdb64 = str(base64.b64encode(f.read()), "utf-8") ofd = OFD() ofd.read(ofdb64, save_xml=True, xml_name=f"{file_prefix}_xml") pdf_bytes = ofd.to_pdf() # 转pdf img_np = ofd.to_jpg() # 转图片 ofd.del_data() with open(f"{file_prefix}.pdf", "wb") as f: f.write(pdf_bytes) for idx, img in enumerate(img_np): img.save(f"{file_prefix}_{idx}.jpg") if __name__ == "__main__": cvt_ofd("example.ofd")
安装所需依赖
pip install easyofd reportlab
常见问题
1.字体不存在
从免费字体库下载所需要的字体文件,参考使用 pdfmetrics.registerFont(TTFont('宋体', '方正书宋简体.ttf'))
注册对应的字体文件到指定的名字即可
2.转换的PDF文件丢失图片
通过pip安装的easyofd包可能不是最新版的源码,需要修改一下,easyofd/draw/draw_pdf.py
文件当中,SupportImgType的值,将IPEG
改为JPEG
即可。
到此这篇关于Python实现OFD文件转PDF的文章就介绍到这了,更多相关Python OFD转PDF内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
使用keras实现BiLSTM+CNN+CRF文字标记NER
这篇文章主要介绍了使用keras实现BiLSTM+CNN+CRF文字标记NER,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-06-06在django-xadmin中APScheduler的启动初始化实例
今天小编就为大家分享一篇在django-xadmin中APScheduler的启动初始化实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2019-11-11
最新评论