Xoay trang pdf: 90 độ cho các trang chẵn và -90 độ cho các trang lẻ


27

Tôi đã tự hỏi trong một tập tin pdf, làm thế nào để xoay các trang pdf: 90 độ cho các trang chẵn và -90 độ cho các trang lẻ?

Theo pdftk, tất cả những gì tôi biết là xoay một trang theo pdftk in.pdf cat 1W output out.pdfvà xoay tất cả các trang theo pdftk in.pdf cat 1-endW output out.pdf.

Cảm ơn!


FYI: đối với các phiên bản pdftk mới hơn, cú pháp là : pdftk in.pdf cat 1-endwest output out.pdf, tức là westthay vì Whoặc souththay vì S...
colidyre

Câu trả lời:


11

Điều này thật dễ dàng vì pdftk 1.44 đã thêm shufflethao tác cho phép các phép biến đổi khác nhau trên các trang lẻ và chẵn (trong số các mục đích sử dụng khác).

Nếu bạn có phiên bản cũ hơn của pdftk, bạn có thể sử dụng tập lệnh Python này với thư viện PyPdf . (Cảnh báo, được nhập trực tiếp vào trình duyệt.)

#!/usr/bin/env python
import sys
from pyPdf import PdfFileWriter, PdfFileReader
input = PdfFileReader(sys.stdin)
output = PdfFileWriter()
for i in range(0,input.getNumPages()):
    output.addPage(input.getPage(i).rotateClockwise(90 if i%2==0 else -90))
output.write(sys.stdout)

30

Với pdftkphiên bản 1.45 (ngày 6 tháng 12 năm 2012) trở lên, hãy sử dụng:

pdftk A=MyPdfFile.pdf shuffle AoddWest AevenEast output MyRotatedFile.pdf

Nếu bạn có pdftkphiên bản 1.44 ( cảm ơn Gilles đã chỉ ra điều đó! ), Bạn có thể sử dụng:

pdftk A=MyPdfFile.pdf shuffle AoddL AevenR output MyRotatedFile.pdf

Một số trường hợp ví dụ tương tự được mô tả trong man pdftk(ít nhất là trong các phiên bản gần đây).


1

Như một sự cải tiến cho câu trả lời của Gilles :

#!/usr/bin/env python
import sys
from pyPdf import PdfFileWriter, PdfFileReader
input = PdfFileReader(open(sys.argv[1], "rb"))
output = PdfFileWriter()
for i in range(0,input.getNumPages()):
    output.addPage(input.getPage(i).rotateClockwise(90 if i%2==0 else -90))
output.write(open(sys.argv[2], "wb"))

Trong đó chương trình chấp nhận đối số dòng lệnh của tệp đầu vào và đầu ra: python script.py <inputFileName> <outputFileName>

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.