2 votes

PyPDF2 - la fusion des pages de deux fichiers PDF différents ne fonctionne pas

J'essaie de fusionner les pages de deux fichiers PDF en un seul PDF avec une seule page. J'ai donc essayé le code ci-dessous qui utilise PyPDF2 :

from PyPDF2 import PdfFileReader,PdfFileWriter
import sys
f = sys.argv[1]
k = sys.argv[2]
print f,k
file1 = PdfFileReader(file(f, "rb"))
file2 = PdfFileReader(file(k, "rb"))
output = PdfFileWriter()
page = file1.getPage(0)
page.mergePage(file2.getPage(0))
output.addPage(page)
outputStream = file("join.pdf", "wb")
output.write(outputStream)
outputStream.close()

Il produit un seul fichier et une seule page avec le contenu de la page 1 du fichier 1, mais je ne trouve aucune donnée de la page 1 du fichier 2. Il semble qu'il n'ait pas été fusionné.

2voto

Shubham Namdeo Points 1030

En utilisant exactement le même code, je parviens à obtenir deux PDF comme fusionné PDF en une seule page, la seconde recouvrant la première, j'ai fait référence à cette lien pour obtenir des informations détaillées.

Et, au lieu de file() il est préférable d'utiliser open() conformément à ce qui suit Documentation Python C'est ce que j'ai fait.

J'ai également apporté de légères modifications à votre code, mais le fonctionnement est toujours le même et correct sur ma machine. J'utilise Ubuntu 16.04 con python 2.7 .

Voici le code :

from PyPDF2 import PdfFileReader,PdfFileWriter
import sys

f = sys.argv[1]
k = sys.argv[2]
print f, k
file1 = PdfFileReader(open(f, "rb"))
file2 = PdfFileReader(open(k, "rb"))
output = PdfFileWriter()
page = file1.getPage(0)
page.mergePage(file2.getPage(0))
output.addPage(page)

with open("join.pdf", "wb") as outputStream:
    output.write(outputStream)

J'espère que cela vous aidera.


UPDATE :

Voici le code qui fonctionne pour moi et qui permet de fusionner les deux pdf en une seule page.

from pyPdf import PdfFileWriter, PdfFileReader
from pdfnup import generateNup

initial_output = PdfFileWriter()
input1 = PdfFileReader(open("landscape1.pdf", "rb"))
input2 = PdfFileReader(open("landscape2.pdf", "rb"))

initial_output.addPage(input1.getPage(0))
initial_output.addPage(input2.getPage(0))

# creates a new pdf file with required pages as separate pages.
initial_output.write(file("final.pdf", "wb"))

# merges newly created pdf file pages as one.
generateNup("final.pdf", 2, "intermediate.pdf")

# overwrite and rotates the final.pdf
final_output = PdfFileWriter()
final_output.addPage(PdfFileReader(open("intermediate.pdf", "rb")).getPage(0).rotateClockwise(90)) 
final_output.write(open("final.pdf", "wb"))

J'ai ajouté un nouveau code et maintenant le pdf final pivote également. Le PDF de sortie dont vous avez besoin est final.pdf

Et voici le Lien Google Drive à ma volonté de PDF des dossiers. J'ai également apporté de légères modifications à pdfnup.py pour la compatibilité avec mon système de Immutableset si vous voulez utiliser le même fichier, vous pouvez le trouver dans le lien ci-dessus.

-1voto

Rohit Behera Points 1
def merge_page(self, output_pdf,*input_pdfs):
    a=len(input_pdfs)
    print (a)
    merge = PyPDF2.PdfFileMerger()
    outputStream = open(output_pdf, "wb")
    if a<2:
        raise Exception ("Need Atleast Two Pdf for Merging")

    else:
        for x in input_pdfs:
            merge.append(open(x,"rb"))
        merge.write(outputStream)
    outputStream.close()

Pour moi, ce code fonctionne dans PyCharm et il peut prendre n nombre de fichiers pdf pour les fusionner en un seul fichier pdf, mais le nombre doit être de 2 ou plus, moins que cela donnera une erreur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X