我正在使用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)
最后一行根据我当前的pdf设置pagesize = letter我想要确定的内容 这是我的进口商品:
from PyPDF2 import PdfFileWriter, PdfFileReader
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter, landscape
import urllib
我已经尝试了pyPdf .mediaBox,但它总是返回预期文件大小的相同值,而不是实际大小。并且pyPdf已经过时了。
如你所见,我也尝试了getWidth和withRotation。
我认为PyPDF2 PdfFileReader有一种简单的方法可以确定所选对象的方向。
任何帮助表示赞赏。感谢。
答案 0 :(得分:3)
我简单地用过" /Rotate
"页面属性:
OrientationDegrees = pdf.getPage(numberOfPageToEdit).get('/Rotate')
可以是0, 90, 180, 270
或None
答案 1 :(得分:2)
rotate属性将覆盖mediaBox设置。为此,请在做出最终判断之前检查页面旋转情况。请注意,文字也可以旋转。
from PyPDF2 import PdfFileReader
pdf_path = 'yourPDFname.pdf'
pdf_reader = PdfFileReader(pdf_path)
deg = pdf_reader.getPage(0).get('/Rotate')
page = pdf_reader.getPage(0).mediaBox
if page.getUpperRight_x() - page.getUpperLeft_x() > page.getUpperRight_y() -page.getLowerRight_y():
if deg in [0,180,None]:
print('Landscape')
else:
print('Portrait')
else:
if deg in [0,180,None]:
print('Portrait')
else:
print('Landscape')
答案 2 :(得分: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')
答案 3 :(得分:0)
这个有效,经过全面测试:
import PyPDF2
from PyPDF2 import PdfFileReader
pdf = PdfFileReader(open('YourPDFname.pdf', 'rb'))
page = pdf.getPage(0).mediaBox
if page.getUpperRight_x() - page.getUpperLeft_x() > page.getUpperRight_y() -
page.getLowerRight_y():
print('Landscape')
else:
print('Portrait')