标签: pypdf

如何在python中将两个pdf页面拼接成一个

我正在使用 python,我想将两个 PDF 页面合并为一个页面。我的目的是将这两页合并为一个而不是两个 PDF。有什么办法可以将两个PDF一张一张合并起来吗?我不想合并这两个。在不重叠的情况下,有什么办法可以将它们结合起来吗?

python pdf pypdf

5
推荐指数
2
解决办法
3161
查看次数

使用 PyPDF2 纠正方向信息错误的 PDF 页面

我正在尝试将多个 PDF 文档合并为一个。然而,这些文档有不同的来源,其中一些是在计算机中创建的,其中一些是使用不同的扫描仪/软件扫描的。在加入之前,我将它们全部缩放到 A4 尺寸。

我的问题是某些文档显示正常,但当我检查方向时,文档看起来好像已旋转。

例如,对于此处的此文档,它在浏览器和 Acrobat Reader 中显示“正常”,但如果我使用 PyPDF2 获取信息:

from PyPDF2 import PdfReader

reader = PdfReader(path)
for page in reader.pages:
    orientation = page.get('/Rotate')
    print(f"Document: {path}")
    print(f"    Orientation: {orientation}")
    print(f"    mediabox:    {page.mediabox}")
    print(f"    artbox:      {page.artbox}")
    print(f"    bleedbox:    {page.bleedbox}")
    print(f"    cropbox:     {page.cropbox}")
    print(f"    trimbox:     {page.trimbox}")
Run Code Online (Sandbox Code Playgroud)

我得到:

        Orientation: 90
        mediaBox:    RectangleObject([0, 0, 792, 542])
        artBox:      RectangleObject([0, 0, 792, 542])
        bleedBox:    RectangleObject([0, 0, 792, 542])
        cropBox:     RectangleObject([0, 0, 792, 542])
        trimBox:     RectangleObject([0, 0, 792, 542])
Run Code Online (Sandbox Code Playgroud)

这很烦人,因为在后续步骤中,我向文档添加页码,但由于方向,它们都被放置错误。

请注意,页面显示正确,只是它们仅具有错误的方向数据。如果我尝试设置旋转页面的方向,例如

        Orientation: 90 …
Run Code Online (Sandbox Code Playgroud)

python pypdf

5
推荐指数
1
解决办法
1115
查看次数

如何使用 PyPDF2 在 Python 3 中将 PDF 中的所有页面作为单个字符串检索

为了从多页 PDF 中获取单个字符串,我这样做:

import PyPDF2
pdfFileObject = open('sample.pdf', 'rb')
pdfReader = PyPDF2.PdfFileReader(pdfFileObject)
count = pdfReader.numPages
for i in range(count):
    page = pdfReader.getPage(i)
    output = page.extractText()
output
Run Code Online (Sandbox Code Playgroud)

结果是来自单个页面(文档中的最后一页)的字符串 - 正如PyPDF2 文档中应有的那样。我应用这种方法是因为我读过一些人建议它阅读整个 PDF,但这对我来说不起作用。

显然,这是一个基本操作,对于我缺乏经验,我提前表示歉意。我尝试了其他解决方案,如 Tika、PDFMiner 和 Textract,但 PyPDF 似乎是迄今为止唯一让我满意的解决方案。

任何帮助,将不胜感激。

更新:

按照建议,我将 an 定义output为一个列表,然后将所有页面附加到它(正如我所想的)循环中,如下所示:

for i in range(count):
    page = pdfReader.getPage(i)
    output = []
    output.append(page.extractText())
Run Code Online (Sandbox Code Playgroud)

结果是列表中的单个字符串,例如['sample content from the last page of PDF']

python pdf pypdf python-3.x pdf-extraction

5
推荐指数
1
解决办法
2万
查看次数

错误:恢复损坏的文件时无法找到预告片字典

PyPDF2 有时会因解密某些 PDF 文件而失败,我正在尝试使用pikepdf解密它们 ,但出现此错误:在恢复损坏的文件时无法找到预告片字典 有什么想法吗?

python django pypdf pikepdf

5
推荐指数
1
解决办法
3256
查看次数

如何使用python在PDF文件的所有页面中添加水印?

我尝试向 PDF 文件的每一页添加水印。我的 PDF 文件有 58 页,但我的输出文件仅包含 PDF 文件的最后一页。

我的 PDF 文件有 59 页。

这是我的 PDF 输出文件。

这是我的代码:

from PyPDF2 import PdfFileReader, PdfFileWriter

watermark_pdf = PdfFileReader("watermark.pdf")
watermark_page = watermark_pdf.getPage(0)
reader = PdfFileReader("original_document.pdf")

for page in reader.pages:
    page.mergePage(watermark_page)
    output = PdfFileWriter()
    output.addPage(page)
    with open("watermarked_document.pdf", "wb") as fp:
        output.write(fp)
Run Code Online (Sandbox Code Playgroud)

请告诉我如何为所有页面添加水印。

python pypdf

5
推荐指数
1
解决办法
2万
查看次数

Python:使用 PyPDF2 读取 PDF 会导致多余空白错误

我一直在努力用 Python 阅读 PDF 中的文本。

我需要的是 PyPDF2 来查找给定的字符串并返回放置在该字符串旁边的参考号。

这就是我正在尝试的代码:

import os
import shutil
import PyPDF2
from PyPDF2 import PdfFileWriter, PdfFileReader

jobpath = r"C:\Scrpts\scr\testPDF"

for files in os.listdir(jobpath):
        if files.endswith('.pdf'):
            filename = os.path.join(jobpath, files)
            with open(filename, 'rb') as pageObj1:

                pdfReader1 = PyPDF2.PdfFileReader(pageObj1)
                pdfReader1._override_encryption = True
                pageObj1 = pdfReader1.getPage(0)

                text1 = pageObj1.extractText()
                refNum = text1.partition("Reference")

                text1 = refNum[2]
                text1 = text1[0:30]
                a = 'Reference'
                b = '\n'
                text1 = text1.split(a)[-1].split(b)[0]
                refNum = text1
                print(filename + ' ' + refNum)
Run Code Online (Sandbox Code Playgroud)

但这会产生多余的空白错误:

PdfReadWarning: Superfluous …
Run Code Online (Sandbox Code Playgroud)

python whitespace pypdf

5
推荐指数
0
解决办法
1283
查看次数

为什么 pypdf 在提取文本时会用额外的空格填充文本?

pypdf==3.11.0与以前的版本一样,返回偶尔插入单个空格的文本字符串。但是 Windows 搜索和 Adob​​e 阅读器中的“查找”功能会发现纯正的文本,并且如果您尝试查找插入了额外空格的文本字符串,则找不到该文本。

这里记录一个代码示例:

from pypdf import PdfReader

reader = PdfReader(path)
for page in reader.pages:
    text = page.extract_text()
    lines = text.splitlines()
Run Code Online (Sandbox Code Playgroud)

Acrobat reader 显示的 PDF 页面包含以下行:

HERMES INVESTMENT MGMT US SMID Equity L Hgd Acc(英镑)

pypdf提取的文本reader为:

HERMES INVESTMEN T MGMT US SMID Equity L Hgd Acc (英镑)

我理解从 PDF 中提取连续文本的困难,但是,这就是我的观点,在 Acrobat Reader 中搜索“INVESTMENT MGMT”会找到该字符串,而搜索“INVESTMEN T MGMT”则找不到该字符串。并且,使用 Windows 资源管理器搜索工具得到相同的结果。

如果 Windows Search 可以读取没有多余空格的字符串,为什么 pypdf 不能?

pypdf python-3.11

5
推荐指数
1
解决办法
1822
查看次数

使用Python生成和合并PDF文件

我想用Python自动生成预订确认PDF文件.大多数内容将是静态的(即徽标,预订条款,电话号码),以及一些动态位(日期,成本等).

从用户方面来说,最简单的方法是从包含静态内容的PDF文件开始,然后使用python添加动态部分.这是一个简单的过程吗?

通过进行一些搜索,似乎我可以使用reportlab创建内容,并使用pyPdf将PDF合并在一起.这是最好的方法吗?还是有一种我还没有遇到的非常时髦的方式?

谢谢!

python pdf merge reportlab pypdf

4
推荐指数
1
解决办法
6104
查看次数

关闭python pypdf的问题 - 写作.获取valueError:关闭文件的I/O操作

(刮互联网网站转换成PDF类的一部分)应该合并使用pypdf网页生成的PDF文件可以不明白这了这个功能.

这是方法代码:

def mergePdf(self,mainname,inputlist=0):
    """merging the pdf pages
    getting an inputlist to merge or defaults to the class instance self.pdftomerge list"""
    from pyPdf import PdfFileWriter, PdfFileReader
    self._mergelist = inputlist or self.pdftomerge
    self.pdfoutput = PdfFileWriter()

    for name in self._mergelist:
        print "merging %s into main pdf file: %s" % (name,mainname)
        self._filestream = file(name,"rb")
        self.pdfinput = PdfFileReader(self._filestream)
        for p in self.pdfinput.pages:
            self.pdfoutput.addPage(p)
        self._filestream.close()

    self._pdfstream = file(mainname,"wb")
    self._pdfstream.open()
    self.pdfoutput.write(self._pdfstream)
    self._pdfstream.close()
Run Code Online (Sandbox Code Playgroud)

我一直收到这个错误:

  File "c:\tmp\easy_install-iik9vj\pyPdf-1.13-py2.7-win32.egg.tmp\pyPdf\pdf.py", line 264, in write
    self._sweepIndirectReferences(externalReferenceMap, self._root)
  File "c:\tmp\easy_install-iik9vj\pyPdf-1.13-py2.7-win32.egg.tmp\pyPdf\pdf.py", line 339, in …
Run Code Online (Sandbox Code Playgroud)

python pypdf

4
推荐指数
1
解决办法
3474
查看次数

"import decimal"会引发错误

这是我正在使用的代码

import os
import decimal
from pyPdf import PdfFileReader
path = r"E:\python\Real Python\Real Python\Course materials\Chapter 8\Practice files"
inputFileName = os.path.join(path,"Pride and Prejudice.pdf")
inputFile = PdfFileReader(file(inputFileName,"rb"))

print "Number of pages:", inputFile.getNumPages()
print "Title:", inputFile.getDocumentInfo().title
Run Code Online (Sandbox Code Playgroud)

现在,当我运行此代码时,我收到一个错误:模块'对象'没有属性'Number'

当我运行上面的代码时,我获取了整个输出的屏幕截图,包含错误和所有内容.所以,请看看,让我知道什么是错的?

在此输入图像描述

python module decimal pypdf

4
推荐指数
1
解决办法
1479
查看次数