当前位置: 代码网 > it编程>前端脚本>Python > Python实现OFD文件转PDF

Python实现OFD文件转PDF

2024年10月31日 Python 我要评论
ofd 文件介绍ofd 文件是由中国国家标准化管理委员会制定的国家标准,是一种开放式文档格式,具有高度可扩展性和可编辑性,可包含多种类型内容数字化时代,电子发票已成为商务交易的常态。然而,对于许多用户

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内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com