Skip to content

izerui/pdf-processor

Repository files navigation

pdf 处理

按单按行处理多个pdf(添加订单货品的head头区域),并支持将处理完的多个pdf合并成一个pdf,提供打印预览服务

第三方库对比: https://dothinking.github.io/2021-01-02-Python%E5%A4%84%E7%90%86PDF%E7%9A%84%E7%AC%AC%E4%B8%89%E6%96%B9%E5%BA%93%E5%AF%B9%E6%AF%94/

  1. 初始化 python 虚拟环境: python3 -m venv pdf-processor/venv
  2. 并切换到当前环境 cd pdf-processor && source ./venv/bin/activate, windows 下自行google。
  3. 安装依赖 pip install -r requirements.txt
  4. 启动应用: uvicorn main:app --host 0.0.0.0 --timeout-keep-alive 60 --workers 8

依赖管理:

# 安装依赖
pip install -r requirements.txt
# 生成依赖描述文件
pip freeze > requirements.txt

流程图:

sequenceDiagram
	autonumber
	源PDF ->> head头PDF处理: 传入工单信息、货品信息、工艺信息等,并指定A4横版。
	head头PDF处理 ->> head头PDF处理: 加载中文字体,按A4*2宽度生成head头pdf文件,并写入排版信息。
	head头PDF处理 ->> pdf页面合并处理: 获取源页面旋转角度,按横版A4版面进行旋转
	pdf页面合并处理 ->> pdf页面合并处理: 合并源pdf页面及head头页面为结果页
	pdf页面合并处理 ->> 生成目标PDF: 将多个源PDF生成的结果页组合成独立PDF
Loading

样例: readme.png

  • pip3 config set global.index-url https://mirror.baidu.com/pypi/simple/
  • pip install PyMuPDF==1.24.5
  • pip install fonttools
  • pip install pymupdf-fonts
  • pip install qrcode
  • pip install fastapi[all]
  • pip install uvicorn[standard]
  • pip install tqdm
  • pip install Pillow
  • pip install matplotlib
  • pip install qiniu
  • pip install prettytable
  • pip install apscheduler
  • pip install scalar-fastapi

压力测试工具:

  • pip install locust

pymupdf介绍: https://artifex.com/blog/text-extraction-with-pymupdf

有用的方法:

page.get_text("dict", sort=True)

dom树: https://pymupdf.readthedocs.io/en/latest/_images/img-textpage.png

可选支持参考: https://pymupdf.readthedocs.io/en/latest/installation.html#notes

如何标记非水平文本 https://pymupdf.readthedocs.io/en/latest/recipes-text.html#how-to-mark-non-horizontal-text

分析字体特征 https://pymupdf.readthedocs.io/en/latest/recipes-text.html#how-to-analyze-font-characteristics

字体处理: https://pymupdf.readthedocs.io/en/latest/recipes-text.html#how-to-fill-a-text-box

test file:

About

pdf 处理,不改变原PDF质量的前提下, 修改pdf每页添加header头,并合并为一个PDF

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors