2016-05-24 13 views
0

Ich benutze Python/Django.
PyPDF2 mein aktuelles pdf zu lesen.
Wie bekomme ich Pdf Orientierung mit PyPDF2

Ich möchte ein PDF lesen, das ich gespeichert habe und die Ausrichtung einer einzelnen Seite innerhalb der PDF erhalten.

Ich erwarte, dass ich feststellen kann, ob die Seite entweder Querformat oder Hochformat ist.

tempoutpdffilelocation = settings.TEMPLATES_ROOT + nameOfFinalPdf 
pageOrientation = pageToEdit.mediaBox 
pdfOrientation = PdfFileReader(file(temppdffilelocation, "rb")) 
# tempPdfOrientationPage = pdfOrientation.getPage(numberOfPageToEdit).mediaBox 
print("existing pdf width: ") 
# print(existing_pdf.getPage(numberOfPageToEdit).getWidth) 
# print("get page size with rotation") 
# print(tempPdfOrientationPage.getPageSizeWithRotation) 

existing_pdf = pdfOrientation.getPage(numberOfPageToEdit).mediaBox 
# print(pageOrientation) 
if pageOrientation.getUpperRight_x() - pageOrientation.getUpperLeft_x() > pageOrientation.getUpperRight_y() - pageOrientation.getLowerRight_y(): 
    print('Landscape') 
    print(pageOrientation) 
    # print(pdfOrientation.getWidth()) 
else: 
    print('Portrait') 
    print(pageOrientation) 
    # print(pdfOrientation.getWidth()) 
# create a new PDF with Reportlab 
can = canvas.Canvas(packet, pagesize=letter) 

Die letzte Zeile die Seitengröße einstellen = Brief, was ich will, basierend auf meinem aktuellen pdf zu bestimmen.
Und hier ist mein Import:

from PyPDF2 import PdfFileWriter, PdfFileReader 
from reportlab.pdfgen import canvas 
from reportlab.lib.pagesizes import letter, landscape 
import urllib 

ich pyPdf .mediaBox habe versucht, aber das gibt immer den gleichen Wert der Dateigröße zu erwarten, nicht die tatsächliche Größe. Und pyPdf ist veraltet. Wie Sie sehen können, habe ich auch getWidth und withRotation versucht.
Ich denke, es gibt einen einfachen Weg für PyPDF2 PdfFileReader, um die Ausrichtung eines ausgewählten Objekts zu bestimmen.

Jede Hilfe wird geschätzt. Vielen Dank.

Antwort

0

Ich konnte die Ausrichtung der PDF nicht feststellen. Stattdessen habe ich meinen Modellen ein Feld hinzugefügt, damit der Administrator das Porträt oder die Landschaft auswählen kann.

1

habe ich einfach "/Rotate" Attribut der Seite:

OrientationDegrees = pdf.getPage(numberOfPageToEdit).get('/Rotate') 

es 0, 90, 180, 270 oder None sein kann

0

Sie können es erkennen, indem diesen Code-Schnipsel mit:

from PyPDF2 import PdfFileReader 

pdf = PdfFileReader(file('example.pdf')) 
page = pdf.getPage(0).mediaBox 
if page.getUpperRight_x() - page.getUpperLeft_x() > page.getUpperRight_y() - 
page.getLowerRight_y(): 
    print('Landscape') 
else: 
    print('Portrait')