如何使用 PyPDF2 获取 Pdf 方向

Jon*_*edy 1 python pdf django reportlab pypdf2

我正在使用 Python/Django。
PyPDF2 来阅读我当前的 pdf。

我想阅读我保存的 pdf 并获取 pdf 中单个页面的方向。

我希望能够确定页面是横向还是纵向。

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)
Run Code Online (Sandbox Code Playgroud)

最后一行设置 pagesize=letter 我想根据我当前的 pdf 确定什么。
这是我的进口:

from PyPDF2 import PdfFileWriter, PdfFileReader
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter, landscape
import urllib
Run Code Online (Sandbox Code Playgroud)

我试过 pyPdf .mediaBox 但它总是返回与预期文件大小相同的值,而不是实际大小。而且 pyPdf 已经过时了。如您所见,我也尝试过 getWidth 和 withRotation。
我认为 PyPDF2 PdfFileReader 有一种简单的方法来确定所选对象的方向。

任何帮助表示赞赏。谢谢。

小智 5

我简单地使用/Rotate了页面的“ ”属性:

OrientationDegrees = pdf.getPage(numberOfPageToEdit).get('/Rotate')
Run Code Online (Sandbox Code Playgroud)

它可以是0, 90, 180, 270None