python实现OFD电子发票转PNG图片

47 阅读2分钟

python实现OFD电子发票转PNG图片

这是一个用于将 OFD(Open Fixed Document)电子发票转换为 PNG 图片的 Python 包。支持单文件转换和多文件批量转换两种模式。

功能特点

  • 单文件转换:将单个 OFD 文件转换为 PNG 图片
  • 批量转换:将目录中的所有 OFD 文件转换为 PNG 图片
  • 自动创建输出目录:转换后的 PNG 文件将保存在与 OFD 文件相同目录下的 img 文件夹中
  • 按页命名:转换后的 PNG 文件将按页码命名,格式为 原文件名_页码.png

安装方法

从源代码安装

克隆或下载此仓库后,在项目根目录执行以下命令:

pip install ofd2png

开发模式安装

如果您需要修改代码并实时测试,可以使用开发模式安装:

pip install -e .

使用方法

Python API 调用

单文件转换
  • 转换单个 OFD 文件,转换后的 PNG 会保存在同一目录下的 temp_output_文件名文件夹中
  • python -c "from ofd2png import convert_file; print(convert_file('d:/ofdtopng/tempofd/ofd21.ofd'))"
from ofd2png import convert_file
convert_file('path/to/your/file.ofd')

示例


from ofd2png import convert_file
pngName=convert_file('d:/ofdtopng/tempofd/ofd1.ofd')
print(pngName)

运行结果:


['d:/ofdtopng/tempofd\\temp_output_ofd1\\page_1.png']
批量文件转换
  • python -c "from ofd2png import convert_folder; convert_folder('d:/ofdtopng/tempofd')"
from ofd2png import convert_folder

# 转换目录中的所有 OFD 文件,每个文件的 PNG 会保存在各自目录下的 img 文件夹中
convert_folder('path/to/your/ofd_directory')

示例:

from ofd2png import convert_folder
convert_folder('d:/ofdtopng/tempofd')    

运行结果:

--->正在转换文件: d:/ofdtopng/tempofd\ofd1.ofd,请稍等待...
************************已转换并保存图片: d:/ofdtopng/tempofd\img\ofd1_1.png ->转换时间: 238ms
--->正在转换文件: d:/ofdtopng/tempofd\ofd10.ofd,请稍等待...
************************已转换并保存图片: d:/ofdtopng/tempofd\img\ofd10_1.png ->转换时间: 263ms
--->正在转换文件: d:/ofdtopng/tempofd\ofd11.ofd,请稍等待...
************************已转换并保存图片: d:/ofdtopng/tempofd\img\ofd11_1.png ->转换时间: 200ms
--->正在转换文件: d:/ofdtopng/tempofd\ofd12.ofd,请稍等待...
************************已转换并保存图片: d:/ofdtopng/tempofd\img\ofd12_1.png ->转换时间: 467ms
批量转换完成!

项目结构

ofd2png-package/
├── src/
│   └── ofd2png/
│       ├── __init__.py      # 包的公共 API 入口
│       ├── cli.py           # 命令行工具实现
│       ├── converter.py     # 核心转换逻辑
│       └── utils.py         # 辅助工具函数
├── tests/
│   └── test_converter.py    # 单元测试文件
├── README.md                # 项目说明文档
├── LICENSE                  # 许可证文件
├── pyproject.toml           # 项目配置文件
├── setup.cfg                # 安装配置文件
└── setup.py                 # 安装脚本

依赖包

  • Pillow: 用于图片处理和生成
  • lxml: 用于解析 OFD 文件的 XML 结构

开发与测试

运行测试

pytest tests/test_converter.py

代码格式

建议使用以下工具保持代码格式一致:

  • black: Python 代码格式化工具
  • flake8: 代码风格检查工具

许可证

本项目使用 MIT 许可证,详情请见 LICENSE 文件。

贡献

欢迎提交 Issue 和 Pull Request!