Czy ktoś zna dobry sposób na podzielenie stron pdf na dwie nowe strony?
Żeby było jasne, nie próbuję rozdzielać już istniejących stron z pdf; Próbuję utworzyć dwie nowe strony z istniejącej pojedynczej strony.
Czy ktoś zna dobry sposób na podzielenie stron pdf na dwie nowe strony?
Żeby było jasne, nie próbuję rozdzielać już istniejących stron z pdf; Próbuję utworzyć dwie nowe strony z istniejącej pojedynczej strony.
Odpowiedzi:
Wypróbuj BRISS .
Pozwala podzielić każdą stronę na tyle podstron, ile chcesz, definiując regiony za pomocą GUI. Grupuje wszystkie podobne strony w grupy, dzięki czemu możesz raz zdefiniować regiony dla tej grupy.
Jest wieloplatformowy, darmowy i open-source.
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 ;-)
... 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 w innej odpowiedzi .
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.
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 -->
Następnie odpowiednie sekcje:
gs \
-o right-sections.pdf \
-sDEVICE=pdfwrite \
-g4210x5950 \
-c "<</PageOffset [-421 0]>> setpagedevice" \
-f double-page-input.pdf
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 -->
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 A B \
output single-pages-output.pdf
verbose
Gotowe. Oto pożądany wynik. 4 różne strony o wymiarach 421 x 595 pkt.
Wynik:
+------------+ +------------+ +------------+ +------------+ ^
| | | | | | | | |
| 1 | | 2 | | 3 | | 4 | |
| | | | | | | | 595 pt
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
+------------+ +------------+ +------------+ +------------+ v
<-- 421 pt --> <-- 421 pt --> <-- 421 pt --> <-- 421 pt -->
"<</PageOffset [-421 0]>> setpagedevice"
. Myślę, że to zależy od orientacji oryginalnego pliku. Niemniej jednak doskonała odpowiedź. :)
Dzięki @marttt i ich odpowiedziom w systemach Unix i Linux .
Możesz użyć mutool
(który wchodzi w skład mupdf
):
mutool poster -x 2 input.pdf output.pdf
Możesz także użyć, -y
jeśli chcesz wykonać podział pionowy.
Aby rozwinąć odpowiedź @ Kurta (ponieważ nie mam wystarczającej liczby punktów reputacji do skomentowania), najpierw upewnij się, że wymiary, których używasz, nie są oparte na wymiarach Crop Box, jeśli różnią się od wymiarów Media Box. Rozmiar wyjściowy jest oparty na wymiarach skrzynki multimediów, ale wydaje się, że przesunięcie używa wymiarów ramki przycinania.
W przypadku strony rozkładanej, która miała pole multimediów 20,0833 x 13,833 i pole przycinania 19,25 x 13,0, które były takie same jak pole przycinania w moim dokumencie, aby podzielić go na dwie strony w systemie Ubuntu, po lewej stronie:
gs -o left.pdf -sDEVICE=pdfwrite -g7230x9960 -c "<</PageOffset [0 0]>> setpagedevice" -f gatefold.pdf
Prawa strona:
gs -o right.pdf -sDEVICE=pdfwrite -g7230x9960 -c "<</PageOffset [-693 0]>> setpagedevice" -f gatefold.pdf
A potem zszyłem je pdftk left.pdf right.pdf output final.pdf
.
Alternatywą byłoby ustawienie pola przycinania na takie samo jak pole multimediów; wówczas offset wynosiłby -723. Ale następnie przycinanie musiałoby zostać zresetowane, aby przyciąć, aby strony były wyświetlane płynnie. W przeciwnym razie ustaw nośnik jako przycięty.