2016-05-24 22 views
0

私はPython/Djangoを使用しています。
私の現在のpdfを読むためのPyPDF2。
PyPDF2を使用してPdfオリエンテーションを取得する方法

私が保存したpdfを読んで、pdf内の1ページの向きを取得します。

ページが横向きか縦長かを判断できることを期待しています。

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) 

私は私の現在のPDFに基づいて決定したいページサイズ=レターを設定する最後の行。
そして、ここに私の輸入です:

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

私はpyPdf .mediaBoxを試みたが、それは常に期待されるファイルのサイズではなく、実際のサイズと同じ値を返します。そしてpyP​​dfは時代遅れです。 ご覧のとおり、getWidthとwithRotationも試してみました。
私は、PyPDF2 PdfFileReaderが選択したオブジェクトの向きを決定する簡単な方法があると思います。

何か助けていただければ幸いです。ありがとう。

答えて

0

私はpdfの方向性を判断することができませんでした。代わりに、管理者がポートレートまたはランドスケープを選択するためのフィールドをモデルに追加しました。

1

私は単にページの "/Rotate" 属性を使用:

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

それは0, 90, 180, 270またはNone

0

することができますが、このコードスニペットを使用してそれを検出することができます

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') 
関連する問題