pymupdf 合成pdf

张映 发表于 2018-08-08

分类目录: 技术其他

标签:, ,

fpdf是一个基于php的pdf处理工具,但是有一个很严重的缺点,就是无法识别annots。pymupdf是基本mupdf的,基于python开发,功能比较强大,能识别annots

1,下载pymupdf

https://github.com/rk700/PyMuPDF

2,安装pymupdf

下载完成后,pymupdf/installation/centos,有安装方法

  1. # wget https://mupdf.com/downloads/mupdf-1.13.0-source.tar.gz  
  2. # tar -zxvf mupdf-1.13.0-source.tar.gz  
  3.   
  4. # cd mupdf-1.13.0-source  
  5. # export CFLAGS="-fPIC -std=gnu99"  
  6.   
  7. # make HAVE_X11=no HAVE_GLFW=no HAVE_GLUT=no prefix=/usr/local  
  8. # sudo make HAVE_X11=no HAVE_GLFW=no HAVE_GLUT=no prefix=/usr/local install  
  9.   
  10. # cd ..  
  11.   
  12. # rm -rf PyMuPDF  
  13. # git clone https://github.com/rk700/PyMuPDF.git  
  14. # cd PyMuPDF  
  15.   
  16. # sudo python setup.py build  
  17. # sudo python setup.py install  

3,测试代码

  1. # cat /root/mergePdf.py  
  2. #! python  
  3. ''' 
  4. @author: tank 
  5. @blog: blog.51yip.com 
  6.  
  7. v1.0 Created on Feb 25, 2018 
  8. '''  
  9. # coding:utf-8  
  10.   
  11. from __future__ import print_function  
  12.   
  13. import os, sys,fitz, json  
  14.   
  15. data = json.loads(sys.argv[1])  
  16.   
  17. doc = fitz.open(data['pdf'])  
  18. pageCount = doc.pageCount  
  19.   
  20. for index in range(pageCount):  
  21.     str_index = str(index)  
  22.     # if data['images'].has_key("'" + str(index) + "'"):  
  23.     if str_index in data['images'].keys():  
  24.   
  25.         page = doc[index]  
  26.         pix = fitz.Pixmap(data['images'][str_index])  
  27.         page.insertImage(page.rect, pixmap=pix, overlay=True)  
  28.   
  29. doc.save(sys.argv[2])  

传参数如下:

argv[1]对应参数如下:

  1. {  
  2.  "pdf""绝对径/1.pdf",  
  3.  "images": {  
  4.  "0""绝对径/2.png",  
  5.  "2""绝对径/3.png"  
  6.  }  
  7. }  

argv[2]对应参数如下:

绝对径/2.pdf

调用方法:

  1. # python mergePdf.py argv[1] argv[2]  

上面的这个例子,是将二张图片,合成到pdf的第一页和第三页,并且生成新的pdf



转载请注明
作者:海底苍鹰
地址:http://blog.51yip.com/other/1944.html

1 条评论

  1. 丸子 留言

    具体的安装步骤可以再说明白一点嘛......下载了作者给的两个链接的文件,安装步骤实在没明白