Python实现OFD文件转PDF

 更新时间:2024年10月31日 08:44:53   作者:大橙子打游戏  
OFD 文件是由中国国家标准化管理委员会制定的国家标准,是一种开放式文档格式,具有高度可扩展性和可编辑性,本文主要介绍了如何利用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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python如何利用Mitmproxy抓包

    python如何利用Mitmproxy抓包

    这篇文章主要介绍了python如何利用Mitmproxy抓包,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-10-10
  • Python shutil模块用法实例分析

    Python shutil模块用法实例分析

    这篇文章主要介绍了Python shutil模块用法,结合实例形式分析了Python使用shutil模块操作文件拷贝的相关实现技巧与注意事项,需要的朋友可以参考下
    2019-10-10
  • 详解Python中type与object的恩怨纠葛

    详解Python中type与object的恩怨纠葛

    估计很多人都会有这样一个困惑,object 的类型是 type,但它同时又是 type 的基类,这是怎么做到的?带着这个疑问,我们开始本文的内容
    2023-04-04
  • python写入已存在的excel数据实例

    python写入已存在的excel数据实例

    下面小编就为大家分享一篇python写入已存在的excel数据实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • 用python绘制樱花树

    用python绘制樱花树

    这篇文章主要介绍了如何用python绘制樱花树,帮助大家更好的使用python处理图片,感兴趣的朋友可以了解下
    2020-09-09
  • pandas系列之DataFrame 行列数据筛选实例

    pandas系列之DataFrame 行列数据筛选实例

    下面小编就为大家分享一篇pandas系列之DataFrame 行列数据筛选实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • 利用Python脚本批量生成SQL语句

    利用Python脚本批量生成SQL语句

    这篇文章主要介绍了利用Python脚本批量生成SQL语句,具有很好对参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • Python实现连接dr校园网示例详解

    Python实现连接dr校园网示例详解

    在校园里认证上网很麻烦需要web输入账号密码有时还会忘记web地址,所以为了解决这一问题,本文将为大家介绍通过Python实现校园网的连接,快来跟随小编一起学习吧
    2021-11-11
  • Python使用ntplib库同步校准当地时间的方法

    Python使用ntplib库同步校准当地时间的方法

    NTP网络时间协议其实大家平时或多或少都能接触到,包括Windows在内的操作系统中的很多Internet时间同步功能都是在NTP的基础上来做,这里我们来看一下Python使用ntplib库同步校准当地时间的方法
    2016-07-07
  • Python如何实现转换URL详解

    Python如何实现转换URL详解

    这篇文章主要介绍了Python如何实现转换URL详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07

最新评论