Możesz to rozwiązać za pomocą Ghostscript. pdftk
sam nie może tego zrobić (o ile mi wiadomo). Dam ci kroki linii poleceń, aby to zrobić ręcznie. Będzie to łatwe do skryptu jako procedury, również z różnymi parametrami rozmiarów stron i numerów stron. Ale powiedziałeś, że możesz to zrobić sam ;-)
Jak rozwiązać ten problem za pomocą Ghostscript ...
... i dla zabawy, ostatnio zrobiłem to nie z plikiem wejściowym zawierającym strony „podwójne”, ale z „potrójnymi”. Możesz przeczytać odpowiedź na ten przypadek tutaj .
Twoja sprawa jest jeszcze prostsza. Wygląda na to, że masz coś podobnego do tego:
+------------+------------+ ^
| | | |
| 1 | 2 | |
| | | 595 pt
| | | |
| | | |
| | | |
+------------+------------+ v
^
fold
v
+------------+------------+ ^
| | | |
| 3 | 4 | |
| | | 595 pt
| | | |
| | | |
| | | |
+------------+------------+ v
<---------- 842 pt -------->
Chcesz utworzyć 1 plik PDF z 4 stronami, z których każda ma rozmiar 421 pkt x 595 pkt.
Pierwszy krok
Najpierw wyodrębnij lewe sekcje z każdej strony wejściowej:
gs \
-o left-sections.pdf \
-sDEVICE=pdfwrite \
-g4210x5950 \
-c "<</PageOffset [0 0]>> setpagedevice" \
-f double-page-input.pdf
Co zrobiły te parametry?
Po pierwsze, wiedz, że w PDF 1 cal == 72 punkty . Reszta to:
-o ...............:
Plik wyjściowy z nazwami. Niejawnie używa również -dBATCH -dNOPAUSE -dSAFER
.
-sDEVICE=pdfwrite :
chcemy PDF jako format wyjściowy.
-g................:
ustawia rozmiar nośnika wyjściowego w pikselach. Domyślna rozdzielczość pdfwrite to 720 dpi. Dlatego pomnóż przez 10, aby uzyskać dopasowanie do PageOffset.
-c "..............:
prosi Ghostscript o przetworzenie podanego fragmentu kodu PostScript tuż przed głównym plikiem wejściowym (który musi nastąpić -f
).
<</PageOffset ....:
ustawia przesunięcie obrazu strony na nośniku. (Oczywiście dla lewej strony przesunięcie o [0 0]
nie ma żadnego rzeczywistego efektu).
-f ...............:
przetworzyć ten plik wejściowy.
Jaki wynik osiągnęła ostatnia komenda?
Ten:
Output file: left-sections.pdf, page 1
+------------+ ^
| | |
| 1 | |
| |595 pt
| | |
| | |
| | |
+------------+ v
Output file: left-sections.pdf, page 2
+------------+ ^
| | |
| 3 | |
| |595 pt
| | |
| | |
| | |
+------------+ v
<-- 421 pt -->
Drugi krok
Następnie odpowiednie sekcje:
gs \
-o right-sections.pdf \
-sDEVICE=pdfwrite \
-g4210x5950 \
-c "<</PageOffset [-421 0]>> setpagedevice" \
-f double-page-input.pdf
Zwróć uwagę na przesunięcie ujemne, ponieważ przesuwamy stronę w lewo, utrzymując nieruchomy obszar wyświetlania.
Wynik:
Output file: right-sections.pdf, page 1
+------------+ ^
| | |
| 2 | |
| |595 pt
| | |
| | |
| | |
+------------+ v
Output file: right-sections.pdf, page 2
+------------+ ^
| | |
| 4 | |
| |595 pt
| | |
| | |
| | |
+------------+ v
<-- 421 pt -->
Ostatni krok
Teraz łączymy strony w jeden plik. Moglibyśmy to zrobić również za pomocą ghostscript, ale użyjemy pdftk
tego, ponieważ jest szybszy dla tej pracy:
pdftk \
A=right-sections.pdf \
B=left-sections.pdf \
shuffle \
output single-pages-output.pdf
verbose
Gotowy. Oto pożądany wynik. 4 różne strony o wymiarach 421 x 595 pkt.
Wynik:
+------------+ +------------+ +------------+ +------------+ ^
| | | | | | | | |
| 1 | | 2 | | 3 | | 4 | |
| | | | | | | |5595 pt
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
+------------+ +------------+ +------------+ +------------+ v
<-- 421 pt --> <-- 421 pt --> <-- 421 pt --> <-- 421 pt -->