Python 3.x 使用PyPDF2在已有的PDF文件添加文本文字

有时我们需要向指定的pdf添加一些文字,在python 3.x 提供了PyPDF2和io.BytesIO,我们可以使用它们来完成次任务。

Python3.x 示例如下:

from PyPDF2 import PdfFileWriter, PdfFileReader
import io
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter
packet = io.BytesIO()
# 使用Reportlab创建一个新的PDF
can = canvas.Canvas(packet, pagesize=letter)
can.drawString(10, 100, "Hello world")
can.save()
#buffer从偏移0开始
packet.seek(0)
new_pdf = PdfFileReader(packet)
#读取已有的PDF
existing_pdf = PdfFileReader(open("original.pdf", "rb"))
output = PdfFileWriter()
#
page = existing_pdf.getPage(0)
page.mergePage(new_pdf.getPage(0))
output.addPage(page)
# 最后,向目标的pdf写出
outputStream = open("destination.pdf", "wb")
output.write(outputStream)
outputStream.close()

如果是Python2.7,可以使用pyPdf和StringIO来向指定的pdf添加一些文字。

Python2.7示例如下:

from pyPdf import PdfFileWriter, PdfFileReader
import StringIO
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter
packet = StringIO.StringIO()
# 使用Reportlab创建新的PDF
can = canvas.Canvas(packet, pagesize=letter)
can.drawString(10, 100, "Hello world")
can.save()
#StringIO buffer从偏移0开始
packet.seek(0)
new_pdf = PdfFileReader(packet)
# 读取已有的PDF
existing_pdf = PdfFileReader(file("original.pdf", "rb"))
output = PdfFileWriter()
#
page = existing_pdf.getPage(0)
page.mergePage(new_pdf.getPage(0))
output.addPage(page)
# 最后,向目的pdf写出
outputStream = file("destination.pdf", "wb")
output.write(outputStream)
outputStream.close()

版权声明:著作权归作者所有。

相关推荐

Python 3.x使用nonlocal定义变量

Python 3新增了nolocal来声明变量。语法:nonlocal 变量名 一般情况下我们在函数内对变量赋值,那么变量会被认为是本地变量。def getvar()     v = 1     return v getvar() v就是一个本地变量。有时我

Bootstrap在图片内居中显示文字

图片的父容器position设置为relative。文字position设置为absolute。.thumbnail {   position: relative; } .caption {   position: absolute;  top: 45%;  left: 0;  &nbs

Linux使用grep查找文本所在的所有文件

显示所在文件及匹配到的文本grep -rin 'search' /path/  -r/-R:递归遍历目录-i:忽略大小写-n:显示出现在文件的行号仅显示所在文件grep -ril 'search' /path/ -l:显示所在的文件,而不是匹配到的文本包含/排除目录可以使用--exclude, --include, --excl

Python替换文件里的文本

在原来的文件直接替换文本使用fileinput在文件上直接替换:#!/usr/bin/env python3 import fileinput with fileinput.FileInput(fileToSearch, inplace=True, backup='.bak') as file:   &nb