最近我需要使用Anaconda将PyPdf2安装到我的一个程序中.不幸的是,我失败了,但是添加到Anaconda环境的URL禁止更新所有Conda库.每当我尝试更新anaconda时,它都会提供以下信息
conda update conda
Using Anaconda Cloud api site https://api.anaconda.org
Fetching package metadata ..........Error: Invalid index file: https://pypi.python.org/pypi/PyPDF2/1.26.0/win-64/repodata.json: No JSON object could be decoded
Run Code Online (Sandbox Code Playgroud)
我键入命令conda info以查看导致错误的原因,我发现许多指向PyPdf2的URL!
简单地说,我想从anaconda的频道URL中删除所有这些URL,我该怎么办?无论是手动还是自动.
注意:我已经卸载了Anaconda,并重新安装,但没有运气!
C:\WINDOWS\system32>conda info
Using Anaconda Cloud api site https://api.anaconda.org
Current conda install:
platform : win-64
conda version : 4.1.6
conda-env version : 2.5.1
conda-build version : 1.21.3
python version : 2.7.12.final.0
requests version : 2.10.0
root environment : C:\Anaconda2 (writable)
default environment : C:\Anaconda2
envs directories : C:\Anaconda2\envs
package cache : …
Run Code Online (Sandbox Code Playgroud) 我有大量文件,其中一些是扫描图像为 PDF,一些是完整/部分文本 PDF。
有没有办法检查这些文件,以确保我们只处理扫描图像的文件,而不是完整/部分文本 PDF 文件?
环境:Python 3.6
当我使用以下代码时
from PyPDF2 import PdfFileMerger
merge = PdfFileMerger()
for newFile in nlst:
merge.append(newFile)
merge.write('newFile.pdf')
Run Code Online (Sandbox Code Playgroud)
事情发生如下:
raise utils.PdfReadError("EOF marker not found")
PyPDF2.utils.PdfReadError: EOF marker not found
Run Code Online (Sandbox Code Playgroud)
谁能告诉我发生了什么?谢谢
当您尝试使用相同名称嵌套多个书签时,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 3.5.1(32位版本)我编写了以下程序,使用PyPDF2和reportlab在我的pdf文件的所有页面上添加页面编号:
#import modules
from os import listdir
from PyPDF2 import PdfFileWriter, PdfFileReader
import io
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4
#initial values of variable declarations
PDFlist=[]
X_value=460
Y_value=820
#Make a list of al files in de directory
filelist = listdir()
#Make a list of all pdf files in the directory
for i in range(0,len(filelist)):
filename=filelist[i]
for j in range(0,len(filename)):
char=filename[j]
if char=='.':
extension=filename[j+1:j+4]
if extension=='pdf':
PDFlist.append(filename)
j=j+1
i=i+1
# Give the horizontal position for the page number …
Run Code Online (Sandbox Code Playgroud) 我想使用 pdfminer.six 这是一个工具,可以与 Python3 一起用于从 PDF 文档中提取信息。问题是根本没有好的文档,也没有关于如何使用该工具的源代码示例。
我已经尝试过 StackOverflow 中的一些代码,但没有奏效。下面是我的代码。
from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfpage import PDFPage
from io import StringIO
def convert_pdf_to_txt(path):
rsrcmgr = PDFResourceManager()
retstr = StringIO()
codec = 'utf-8'
laparams = LAParams()
device = TextConverter(rsrcmgr, retstr, codec=codec, laparams=laparams)
fp = open(path, 'rb')
interpreter = PDFPageInterpreter(rsrcmgr, device)
password = ""
maxpages = 0
caching = True
pagenos=set()
for page in PDFPage.get_pages(fp, pagenos, maxpages=maxpages, password=password,caching=caching, check_extractable=True):
interpreter.process_page(page)
text = retstr.getvalue()
fp.close()
device.close()
retstr.close()
return …
Run Code Online (Sandbox Code Playgroud) 有没有办法检查使用PyPDF2查看PDF页面是否垂直?
理想情况下,会有pdfReader.getPage(0).isVertical()
返回true
或的方法false
,但我在PageObject文档中找不到任何内容
我正在尝试在PDF的第一页顶部合并水印,但只有在PDF处于垂直方向时它才会看起来正确.
希望做到以下几点.
if (not (pdfReader.getPage(0).isVertical())):
pdfReader.getPage(0).rotateClockwise(90)
Run Code Online (Sandbox Code Playgroud) 我想阅读pdf文件。这是一个带有密码(256 位 AES 加密)的 book.pdf。我知道一个密码。我正在使用 Jupyter Notebook。
我收到一个错误:
import PyPDF2
pdfReader = PyPDF2.PdfFileReader(open('book.pdf', 'rb'))
pdfReader.decrypt('333')
pdfReader.getPage(0)
---------------------------------------------------------------------------
NotImplementedError Traceback (most recent call last)
<ipython-input-12-7dd54b6a760a> in <module>()
1 import PyPDF2
2 pdfReader = PyPDF2.PdfFileReader(open('book.pdf', 'rb'))
----> 3 pdfReader.decrypt('333')
4 pdfReader.getPage(0)
c:\users\a\programs\python\python36-32\lib\site-packages\PyPDF2\pdf.py in
decrypt(self, password)
1985 self._override_encryption = True
1986 try:
-> 1987 return self._decrypt(password)
1988 finally:
1989 self._override_encryption = False
c:\users\a\python\python36-32\lib\site-packages\PyPDF2\pdf.py in
_decrypt(self, password)
1994 raise NotImplementedError("only Standard PDF encryption
handler is available")
1995 if not (encrypt['/V'] in (1, 2)):
-> …
Run Code Online (Sandbox Code Playgroud) 我正在使用 PyPDF2 从 pdf 中提取文本。我在谷歌中找到的所有示例看起来都像我的代码:
import PyPDF2
pl = open('test2.pdf', 'rb')
plread = PyPDF2.PdfFileReader(pl)
getpage1 = plread.getPage(0)
text1 = getpage1.extractText()
print(text1.encode('utf-8'))
Run Code Online (Sandbox Code Playgroud)
但是,我的控制台中有空文本:
''
这段代码我已经针对不同的 pdf 进行了测试,并且所有 pdf 都是空的
更新:
# getDocumentInfo
{'/Producer': 'Skia/PDF m75'}
Run Code Online (Sandbox Code Playgroud)
文件pdf