标签: pypdf

如何关闭pyPDF"PdfFileReader"类文件句柄

这应该是一个非常简单的问题,我无法通过Google搜索找到答案:如何关闭pyPDF"PdfFileReader"类打开的文件句柄

这是片段:

import os.path
from pyPdf import PdfFileReader

fname = 'my.pdf'
input = PdfFileReader(file(fname, "rb"))

os.rename(fname, 'my_renamed.pdf')
Run Code Online (Sandbox Code Playgroud)

这会引起错误[32]

谢谢

python pypdf

9
推荐指数
1
解决办法
9227
查看次数

如何使用pypdf将字符串插入pdf?

对不起,..我是蟒蛇的菜鸟..

我需要创建一个PDF文件,而无需使用现有的PDF文件.(纯创建一个新的)
我都使用Google,而很多人是合并2 PDF或在另一个文件创建一个特定页的新文件副本..我想要实现的是制作一个报告页面(图表中),但是对于第一步或简单的"如何将字符串插入我的pdf文件?(hello world mybe)"..

这是我用一个空白页制作新pdf文件的代码

from pyPdf import PdfFileReader, PdfFileWriter
op = PdfFileWriter()  

# here to add blank page
op.addBlankPage(200,200)  

#how to add string here, and insert it to my blank page ?

ops = file("document-output.pdf", "wb")  
op.write(ops)  
ops.close() 
Run Code Online (Sandbox Code Playgroud)

python pypdf

9
推荐指数
1
解决办法
8885
查看次数

为什么我的代码没有正确分割扫描的pdf中的每一页?

更新:感谢stardt的脚本有效!pdf是另一个页面.我在另一个上尝试了脚本,它也正确地吐出每个pdf页面,但页码的顺序有时是正确的,有时是错误的.例如,在pdf文件的第25-28页,打印的页码是14,15,17,是16.我想知道为什么?整个pdf可以从http://download304.mediafire.com/u6ewhjt77lzg/bgf8uzvxatckycn/3.pdf下载.

原文:我有一个扫描的pdf,其中两个纸页并排放在pdf页面中.我想将pdf页面分成两部分,原来的左半部分成为两个新pdf页面中较早的一部分.pdf看起来像在此输入图像描述.

这是我的un2up灵感来自Gilles的 Python脚本:

#!/usr/bin/env python
import copy, sys
from pyPdf import PdfFileWriter, PdfFileReader
input = PdfFileReader(sys.stdin)
output = PdfFileWriter()
for p in [input.getPage(i) for i in range(0,input.getNumPages())]:
    q = copy.copy(p)
    (w, h) = p.mediaBox.upperRight

    p.mediaBox.upperLeft = (0, h/2)
    p.mediaBox.upperRight = (w, h/2)
    p.mediaBox.lowerRight = (w, 0)
    p.mediaBox.lowerLeft = (0, 0)

    q.mediaBox.upperLeft = (0, h)
    q.mediaBox.upperRight = (w, h)
    q.mediaBox.lowerRight = (w, h/2)
    q.mediaBox.lowerLeft = (0, h/2)

    output.addPage(q)
    output.addPage(p)
output.write(sys.stdout)
Run Code Online (Sandbox Code Playgroud)

我在终端的pdf上尝试了脚本命令un2up …

python pdf pypdf

9
推荐指数
1
解决办法
2288
查看次数

空格从PDF提取和奇怪的单词解释中消失了

使用下面的代码片段中,我试图从提取文本数据这个 PDF文件.

import pyPdf

def get_text(path):
    # Load PDF into pyPDF
    pdf = pyPdf.PdfFileReader(file(path, "rb"))
    # Iterate pages
    content = ""
    for i in range(0, pdf.getNumPages()):
        content += pdf.getPage(i).extractText() + "\n"  # Extract text from page and add to content
    # Collapse whitespace
    content = " ".join(content.replace(u"\xa0", " ").strip().split())
    return content
Run Code Online (Sandbox Code Playgroud)

然而,我获得输出在大多数单词之间没有空格.这使得难以对文本执行自然语言处理(我的最终目标,这里).

此外,"手指"一词中的"fi"一直被解释为其他内容.这是相当有问题的,因为这篇论文是关于自发的手指运动......

有人知道为什么会这样吗?我甚至不知道从哪里开始!

python pdf unicode pypdf

9
推荐指数
4
解决办法
8100
查看次数

未找到EOF标记 - 如何修复PyPDF和PyPDF2?

我正在尝试使用Python将一些PDF文件合并到一个PDF文件中.我已经尝试了PyPDF和PyPDF2 - 在某些文件中,它们都抛出同样的错误:

PdfReadError:找不到EOF标记

这是我的代码(page_files)是要合并的PDF文件路径列表:

# use pypdf to combine pdf pages
output = PdfFileWriter()
for pf in page_files:
    filestream = file(pf, "rb")
    pdf = PdfFileReader(filestream)            
    for num in range(pdf.getNumPages()):
        output.addPage(pdf.getPage(num))            

# write final file
outputStream = file(pdf_full_path, "wb")
output.write(outputStream)
outputStream.close()
Run Code Online (Sandbox Code Playgroud)

我已经阅读了关于该主题的一些StackOverflow线程,但没有一个包含有效的解决方案.如果您已经使用Python成功组合了PDF文件,我很乐意听到.谢谢!

python pdf pypdf

9
推荐指数
1
解决办法
6788
查看次数

添加PDF文档链接

我需要以编程方式分析和组合几个(数百个)PDF文档,并以专门的方式将页面链接在一起.每个PDF都包含链接所属的每个位置的文本,指示它应链接到的位置.我正在使用pdfminer提取链接所在的位置和文本; 现在我只需要实际创建这些链接.

我做了一些研究并得出结论认为PyPDF2可以做到这一点.无论如何,有一种看似简单的addLink方法可以宣称完成工作.我无法让它发挥作用.

from PyPDF2 import PdfFileWriter
from PyPDF2.pdf import RectangleObject

out = PdfFileWriter()

out.insertBlankPage(800, 1000)
out.insertBlankPage(800, 1000)

# rect = [400, 400, 600, 600] # This doesn't seem to work either
rect = RectangleObject([400, 400, 600, 600])
out.addLink(0, 1, rect) # link from first to second page

with open(r'C:\temp\test.pdf', 'wb') as outf:
    out.write(outf)
Run Code Online (Sandbox Code Playgroud)

上面的代码生成了一个漂亮的两页PDF,其中没有任何内容,至少据我所知.有没有人知道如何实现这一目标?或者至少表明我哪里出错了?

只要库是免费许可的,解决方案就不必使用PyPDF2.严格地说,Python甚至不是一个要求,但是将它放入我当前的结构并且不用另一种语言来攻击它会很好.

python pdf pdf-generation pypdf

9
推荐指数
1
解决办法
2226
查看次数

如何从pdf文件中提取所有链接?

按标准,链接隐藏在注释中(规范部分12.5.6.5).从那里提取地址很容易:使用Python或其他方法从PDF中提取指向另一个PDF中页面的链接 但是链接的呈现方式不像文档中的特殊对象,而是像" http:// blah-blah "这样的纯文本. com ".如何不仅从注释中提取链接,还从文本本身提取链接?我可以搜索整个文本并找到像"http://"这样的单词,但是有更优化的解决方案吗?PDF编辑也突出显示文本链接,他们怎么知道这段文字是超链接?

python pdf pypdf

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

PyPdf2具有相同名称的嵌套书签不起作用

当您尝试使用相同名称嵌套多个书签时,PyPdf2不会将其考虑在内.下面是自包含的python代码来测试我的意思(你需要在工作文件夹中有3个名为a,b和c的pdf文件来测试它)

from PyPDF2 import PdfFileReader, PdfFileMerger

def main():

merger = PdfFileMerger()
pagenum = 0
firstOne = True
for file in ["a.pdf","b.pdf","c.pdf"]:
    print("next row")
    pdf = PdfFileReader(open(file,"rb"))
    merger.append(pdf)
    if firstOne:
        child = merger.addBookmark(title="blabla",pagenum=1)
        firstOne = False
    else:
        child = merger.addBookmark(title="blabla",pagenum=1, parent=child)

merger.write("test.pdf")        

if __name__ == "__main__":
   main()
Run Code Online (Sandbox Code Playgroud)

我希望得到的pdf有三层嵌套书签

blabla
    blabla
        blabla
Run Code Online (Sandbox Code Playgroud)

但我得到了

blabla
    blabla
    blabla
Run Code Online (Sandbox Code Playgroud)

有什么方法可以确保不会发生这种情况?

编辑:我已删除pagenum变量,因为我希望这3个书签指向同一页面.

python pdf bookmarks pypdf pypdf2

9
推荐指数
1
解决办法
626
查看次数

是否可以将pdf字节直接输入PyPDF2而不是先制作PDF文件

我正在使用Linux;将 raw 打印到端口 9100 返回“字节”类型。我想知道是否可以直接进入 PyPDF2,而不是先制作 pdf 文件并使用 PdfFileReader 方法?

感谢您的时间。

python pypdf python-3.x

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

Python - ReportLab 和 PyPDF 编辑 PDF 问题

PyPDF我正在尝试使用和编辑现有的 pdf 文件ReportLab。当我尝试放置红色圆圈和红色文本时,它似乎隐藏在白色容器或其他东西后面。如果我把它放在其他地方,它就可以正常工作。是什么原因造成的?

样本 pdf = https://www.puc.nh.gov/regulatory/CASEFILE/2010/10-246/INITIAL%20FILING%20-%20PETITION/10-246%202010-09-13%20BAYRING%20ATT%20TO% 20PET%20FOR%20AUTH%20TO%20CONSTRUCT%20UTILITY%20CABLE%20OVER%20AND%20ACROSS%20SUNCOOK%20RIVER.PDF

WHAT THE ERROR IS:

WHAT THE FINAL RESULT SHOULD BE:

from PyPDF2 import PdfWriter, PdfReader
import io
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter
from reportlab.lib.colors import red

def main():
    packet = io.BytesIO()
    can = canvas.Canvas(packet, pagesize=letter)
    can.setFillColorRGB(1, 0, 0)
    can.circle(370,780,20,fill=1)
    can.setFillColor(red)
    can.setFont("Times-Roman", 14)
    can.drawString(352, 785, "Customer Group #22")
    can.save()

    packet.seek(0)
    new_pdf = PdfReader(packet)

    existing_pdf = PdfReader(open("samplePDF.pdf", "rb"))
    output = PdfWriter()

    page = existing_pdf.pages[1]
    page.merge_page(new_pdf.pages[0])
    output.add_page(page)

    outputStream = …
Run Code Online (Sandbox Code Playgroud)

python reportlab pypdf pdf-reader

8
推荐指数
1
解决办法
850
查看次数