Python 如何使用PyPDF2获取Pdf方向

Python 如何使用PyPDF2获取Pdf方向,python,django,pdf,reportlab,pypdf2,Python,Django,Pdf,Reportlab,Pypdf2,我正在使用Python/Django。 PyPDF2阅读我当前的pdf。 我想阅读已保存的pdf,并获取pdf中单个页面的方向。 我希望能够确定页面是横向还是纵向。 最后一行设置pagesize=字母我希望根据当前pdf确定的内容。 以下是我的作品: from PyPDF2 import PdfFileWriter, PdfFileReader from reportlab.pdfgen import canvas from reportlab.lib.pagesizes import le

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

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

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

最后一行设置pagesize=字母我希望根据当前pdf确定的内容。
以下是我的作品:

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 PdfileReader有一种简单的方法来确定选定对象的方向。

感谢您的帮助。谢谢。

我只使用了页面的“
/Rotate
”属性:

OrientationDegrees = pdf.getPage(numberOfPageToEdit).get('/Rotate')
它可以是
0、90、180、270
None

我只使用了页面的“
/Rotate
”属性:

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

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

您可以使用以下代码段检测它:

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')

您可以使用以下代码段检测它:

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')

这一款有效,经过充分测试:

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')

这一款有效,经过充分测试:

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')

“旋转”属性将覆盖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')

“旋转”属性将覆盖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')

解释一下,这段代码的作用以及它解决问题的原因将非常重要。它读取pdf的第一页Yourname.pdf,然后测量大小并打印横向或纵向。您可能希望在到(页数)的循环中输入代码,并分配一个变量,例如print(‘横向’),下一行,Orientation='L'解释此代码的作用以及解决问题的原因将非常重要。它读取名为Yourname.pdf的pdf的第一页,然后测量大小并打印横向或纵向。您可能希望在到(页数)的循环中输入代码,并在下一行指定一个变量,例如print('横向'),方位