仅在 PDF 中更改横向页面的方向
Change orientation of landscape pages only in PDF
我有一个从 LibreOffice Writer 导出的 PDF 文件。这是一个example。有些页面是纵向的,有些是横向的。我正在使用 Linux,当我在 evince 或 Foxit Reader 中查看文件时,它显示正确,即所有文本行都是水平的。它也可以在我的打印机上正确打印在 A4 纸上:横向页面逆时针旋转 90 度,使文本行变为垂直。
问题是:文档将在另一台设备(出版商)上打印,我被告知所有页面都必须纵向。我不确定这是否已经是这种情况并且 evince 只是显示顺时针旋转的横向页面。例如,pdfinfo file.pdf
打印 Page rot: 0
。如果是这样,那么一切都很好。但是,如果 PDF 文件有一条命令说以下页面处于横向模式,则需要将其旋转 90 度并声明为纵向。
那么是否可以从命令行旋转仅 个横向页面?我知道我可以用 pdftk 做到这一点,但我需要手动指定页码。我有很多文档,很难手动指定横向页码。有自动方式吗?
使用 Python 和模块 PyPDF2 是可能的。
查看示例代码:
import PyPDF2
pdf_in = open('test.pdf', 'rb')
pdf_reader = PyPDF2.PdfFileReader(pdf_in)
pdf_writer = PyPDF2.PdfFileWriter()
numofpages = pdf_reader.numPages
numrotated = 0
for pagenum in range(numofpages):
page = pdf_reader.getPage(pagenum)
mb = page.mediaBox
if (mb.upperRight[0] > mb.upperRight[1]) and (page.get('/Rotate') is None):
page.rotateCounterClockwise(90)
numrotated = numrotated + 1
pdf_writer.addPage(page)
print str(numrotated) + " of " + str(numofpages) + " pages were rotated"
pdf_out = open('test_rotated.pdf', 'wb')
pdf_writer.write(pdf_out)
pdf_out.close()
pdf_in.close()
已在 Red Hat Enterprise Linux 6、Python 2.7.12、PyPDF2 1.26.0 上测试。
也适用于 Windows.
我有一个从 LibreOffice Writer 导出的 PDF 文件。这是一个example。有些页面是纵向的,有些是横向的。我正在使用 Linux,当我在 evince 或 Foxit Reader 中查看文件时,它显示正确,即所有文本行都是水平的。它也可以在我的打印机上正确打印在 A4 纸上:横向页面逆时针旋转 90 度,使文本行变为垂直。
问题是:文档将在另一台设备(出版商)上打印,我被告知所有页面都必须纵向。我不确定这是否已经是这种情况并且 evince 只是显示顺时针旋转的横向页面。例如,pdfinfo file.pdf
打印 Page rot: 0
。如果是这样,那么一切都很好。但是,如果 PDF 文件有一条命令说以下页面处于横向模式,则需要将其旋转 90 度并声明为纵向。
那么是否可以从命令行旋转仅 个横向页面?我知道我可以用 pdftk 做到这一点,但我需要手动指定页码。我有很多文档,很难手动指定横向页码。有自动方式吗?
使用 Python 和模块 PyPDF2 是可能的。 查看示例代码:
import PyPDF2
pdf_in = open('test.pdf', 'rb')
pdf_reader = PyPDF2.PdfFileReader(pdf_in)
pdf_writer = PyPDF2.PdfFileWriter()
numofpages = pdf_reader.numPages
numrotated = 0
for pagenum in range(numofpages):
page = pdf_reader.getPage(pagenum)
mb = page.mediaBox
if (mb.upperRight[0] > mb.upperRight[1]) and (page.get('/Rotate') is None):
page.rotateCounterClockwise(90)
numrotated = numrotated + 1
pdf_writer.addPage(page)
print str(numrotated) + " of " + str(numofpages) + " pages were rotated"
pdf_out = open('test_rotated.pdf', 'wb')
pdf_writer.write(pdf_out)
pdf_out.close()
pdf_in.close()
已在 Red Hat Enterprise Linux 6、Python 2.7.12、PyPDF2 1.26.0 上测试。 也适用于 Windows.