Bạn có thể giải quyết điều này với sự trợ giúp của Ghostscript. pdftk
một mình không thể làm điều đó (theo sự hiểu biết tốt nhất của tôi). Tôi sẽ cung cấp cho bạn các bước dòng lệnh để làm điều này bằng tay. Sẽ dễ dàng để kịch bản này như một thủ tục, cũng với các tham số khác nhau cho kích thước trang và số trang. Nhưng bạn nói rằng bạn có thể tự làm điều đó ;-)
Cách giải quyết vấn đề này với sự trợ giúp của Ghostscript ...
... Và để giải trí, gần đây tôi đã thực hiện nó không phải bằng một tệp đầu vào có các trang "nhân đôi", mà là một trang có "treble-up". Bạn có thể đọc câu trả lời cho trường hợp này ở đây .
Trường hợp của bạn thậm chí còn đơn giản hơn. Bạn dường như có một cái gì đó tương tự như thế này:
+------------+------------+ ^
| | | |
| 1 | 2 | |
| | | 595 pt
| | | |
| | | |
| | | |
+------------+------------+ v
^
fold
v
+------------+------------+ ^
| | | |
| 3 | 4 | |
| | | 595 pt
| | | |
| | | |
| | | |
+------------+------------+ v
<---------- 842 pt -------->
Bạn muốn tạo 1 PDF với 4 trang, mỗi trang có kích thước 421 pt x 595 pt.
Bước đầu tiên
Trước tiên, hãy trích xuất các phần bên trái từ mỗi trang đầu vào:
gs \
-o left-sections.pdf \
-sDEVICE=pdfwrite \
-g4210x5950 \
-c "<</PageOffset [0 0]>> setpagedevice" \
-f double-page-input.pdf
Những thông số này đã làm gì?
Đầu tiên, hãy biết rằng trong PDF 1 inch == 72 điểm . Sau đó, phần còn lại là:
-o ...............:
Tên tập tin đầu ra. Ngẫu nhiên cũng sử dụng -dBATCH -dNOPAUSE -dSAFER
.
-sDEVICE=pdfwrite :
chúng tôi muốn PDF là định dạng đầu ra.
-g................:
đặt kích thước phương tiện đầu ra bằng pixel. độ phân giải mặc định của pdfwrite là 720 dpi. Do đó nhân với 10 để có một trận đấu cho PagePackset.
-c "..............:
yêu cầu Ghostscript xử lý đoạn mã PostScript đã cho ngay trước tệp đầu vào chính (cần phải tuân theo -f
).
<</PageOffset ....:
thiết lập sự dịch chuyển của hình ảnh trang trên phương tiện. (Tất nhiên, đối với các trang bên trái, sự thay đổi [0 0]
không có tác dụng thực sự.)
-f ...............:
xử lý tập tin đầu vào này.
Kết quả nào đã thực hiện lệnh cuối cùng?
Cái này:
Output file: left-sections.pdf, page 1
+------------+ ^
| | |
| 1 | |
| |595 pt
| | |
| | |
| | |
+------------+ v
Output file: left-sections.pdf, page 2
+------------+ ^
| | |
| 3 | |
| |595 pt
| | |
| | |
| | |
+------------+ v
<-- 421 pt -->
Bước thứ hai
Tiếp theo, các phần bên phải:
gs \
-o right-sections.pdf \
-sDEVICE=pdfwrite \
-g4210x5950 \
-c "<</PageOffset [-421 0]>> setpagedevice" \
-f double-page-input.pdf
Lưu ý bù trừ âm vì chúng tôi đang dịch trang sang trái trong khi giữ cho khu vực xem đứng yên.
Kết quả:
Output file: right-sections.pdf, page 1
+------------+ ^
| | |
| 2 | |
| |595 pt
| | |
| | |
| | |
+------------+ v
Output file: right-sections.pdf, page 2
+------------+ ^
| | |
| 4 | |
| |595 pt
| | |
| | |
| | |
+------------+ v
<-- 421 pt -->
Bước cuối cùng
Bây giờ chúng tôi kết hợp các trang thành một tập tin. Chúng tôi cũng có thể làm điều đó với ghostscript, nhưng pdftk
thay vào đó chúng tôi sẽ sử dụng vì công việc này nhanh hơn:
pdftk \
A=right-sections.pdf \
B=left-sections.pdf \
shuffle \
output single-pages-output.pdf
verbose
Làm xong. Đây là kết quả mong muốn. 4 trang khác nhau, kích thước 421x595 pt.
Kết quả:
+------------+ +------------+ +------------+ +------------+ ^
| | | | | | | | |
| 1 | | 2 | | 3 | | 4 | |
| | | | | | | |5595 pt
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
+------------+ +------------+ +------------+ +------------+ v
<-- 421 pt --> <-- 421 pt --> <-- 421 pt --> <-- 421 pt -->