2017-05-31 5 views
-1

Ich versuche, alle pdf in eine pdf zu verketten und dabei PyPDF2 Bibliothek zu verwenden. Ich benutze Python 2.7 für die gleiche.IOError: [Errno 22] Ungültiges Argument

Mein Fehler ist:

>>> 
RESTART: C:\Users\Yash gupta\Desktop\first projectt\concatenate\test\New folder\test.py 
['Invoice.pdf', 'Invoice_2.pdf', 'invoice_3.pdf', 'last.pdf'] 

Traceback (most recent call last): 
    File "C:\Users\Yash gupta\Desktop\first projectt\concatenate\test\New folder\test.py", line 17, in <module> 
    pdfReader = PyPDF2.PdfFileReader(pdfFileObj) 
    File "C:\Python27\lib\site-packages\PyPDF2\pdf.py", line 1084, in __init__ 
    self.read(stream) 
    File "C:\Python27\lib\site-packages\PyPDF2\pdf.py", line 1689, in read 
    stream.seek(-1, 2) 
IOError: [Errno 22] Invalid argument 

Mein Code ist:

import PyPDF2, os 
# Get all the PDF filenames. 
pdfFiles = [] 
for filename in os.listdir('.'): 
    if filename.endswith('.pdf'): 
     pdfFiles.append(filename) 
pdfFiles.sort(key=str.lower) 
pdfWriter = PyPDF2.PdfFileWriter() 

print (pdfFiles) 

# Loop through all the PDF files. 
for filename in pdfFiles: 
    pdfFileObj = open(filename, 'rb') 
    pdfReader = PyPDF2.PdfFileReader(pdfFileObj) 
print (pdfFileObj) 

# Loop through all the pages 
for pageNum in range(0, pdfReader.numPages): 
    pageObj = pdfReader.getPage(pageNum) 
    pdfWriter.addPage(pageObj) 

# Save the resulting PDF to a file. 
pdfOutput = open('last.pdf', 'wb') 
pdfWriter.write(pdfOutput) 
pdfOutput.close() 

Mein pdf einige Nicht-ASCII-Zeichen hat, so bin ich mit 'r' Rathen dann 'rb'

PS: Ich bin neu in Python und all diese Bibliotheken Ding

Antwort

1

Ich glaube, Sie sind durch gesammelten Dateien incorrectl y (Python ist indentationssensitiv).

# Loop through all the PDF files. 
for filename in pdfFiles: 
    pdfFileObj = open(filename, 'rb') 
    pdfReader = PyPDF2.PdfFileReader(pdfFileObj) 

    # Loop through all the pages 
    for pageNum in range(0, pdfReader.numPages): 
     pageObj = pdfReader.getPage(pageNum) 
     pdfWriter.addPage(pageObj) 

    # Save the resulting PDF to a file. 
    pdfOutput = open('last.pdf', 'wb') 
    pdfWriter.write(pdfOutput) 
    pdfOutput.close() 

Versuchen Sie auch, PdfFileMerger zu verwenden, wenn Sie PDF-Dateien zusammenführen möchten:

merger = PdfFileMerger(strict=False) 

Check out the example code here.

+0

Danke, das hat aber jetzt dieser Fehler kommt Datei "C: \ Python27 \ lib \ site-packages \ PyPDF2 \ generic.py", Linie 585, in Readfromstream % (utils.hexStr (stream.tell()), Schlüssel)) PdfReadError: Mehrere Definitionen im Wörterbuch bei Byte 0x2695 für Schlüssel/Typ Können Sie helfen ?? –

+0

@YashGupta Meine Antwort wurde aktualisiert. – errata

Verwandte Themen