点击上方“程序员大咖”,选择“置顶公众号”
关键时刻,第一时间送达!
之前收集了很多优秀的 PDF
文档,但是需要看的时候不是很方便,需要去找到这个文件,如果是在手机上的话往往还需要下载 PDF
相关的插件才行,而且最大的问题是不便于资料的整理和分享。如果能够将 PDF
转换成网页,岂不是就能解决这些问题了?还能直接分享出去。
这里利用 PyPDF
包来处理 PDF
文件,为了方便快捷,我这里直接将一个页面转换成图片,就不需要去识别页面中的每一个 PDF
元素了,这是没必要的。
转换
核心代码很简单,就是将 PDF
文件读取出来,转换成 PdfFileReader
,然后就可以根据 PyPDF2
的API去获得每一个页面的二进制数据,拿到二进制数据过后,就能很方便的进行图片处理了,这里用 wand
包来进行图片处理。
# -*- coding: utf-8 -*-
import io
from wand.image import Image
from wand.color import Color
from PyPDF2 import PdfFileReader, PdfFileWriter
memo = {}
def getPdfReader(filename):
reader = memo.get(filename, None)
if reader is None:
reader = PdfFileReader(filename, strict=False)
memo[filename] = reader
return reader
def _run_convert(filename, page, res=120):
idx = page + 1
pdfile = getPdfReader(filename)
pageObj = pdfile.getPage(page)
dst_pdf = PdfFileWriter()
dst_pdf.addPage(pageObj)
pdf_bytes = io.BytesIO()
dst_pdf.write(pdf_bytes)
pdf_bytes.seek(0)
img = Image(file=pdf_bytes, resolution=res)
img.format = 'png'
img.compression_quality = 90
img.background_color = Color