Mam dwustronnie wydrukowany dokument wielostronicowy do skanowania za pomocą skanera liniowego. W rezultacie otrzymuję 2 pliki PDF: jeden zawierający wszystkie nieparzyste strony, a drugi zawierający wszystkie parzyste strony. Muszę połączyć je w naturalny sposób:
1. <- 1.1. (odd.pdf page 1 to result.pdf page 1)
2. <- 2.1. (even.pdf page 1 to result.pdf page 2)
3. <- 1.2. (odd.pdf page 2 to result.pdf page 3)
4. <- 2.2. (even.pdf page 2 to result.pdf page 4)
itp.
CAM::PDF
, dam ci skrypt później. Czy dwa pliki pdf mają tę samą liczbę stron?Odpowiedzi:
Zobacz polecenia
pdfseparate
ipdfunite
zpoppler-utils
. Pierwszy z nich rozdziela strony z każdego dokumentu na osobne pliki, a drugi łączy je w żądanej kolejności w nowym dokumencie.Zauważ też, że ponieważ skanery i tak dają ci obrazy rastrowe (które niektóre takie jak twoje mogą łączyć się w pliki PDF), być może możesz go skonfigurować tak, aby wyświetlał obrazy (png, tiff ...), i sam dokonać konkatenacji w plik PDF ImageMagick.
źródło
pdftk ma polecenie losowe, które zestawia strony:
źródło
Wystarczy
bash
szybki strzał za pomocąpdfjam
:Zbuduj tablicę argumentów wejściowych:
Powinno to umożliwić użycie go jako listy danych wejściowych dla
pdfjoin
:źródło
pdfjoin
jest to skrypt opakowujący,pdfjam
który sam jest skryptem opakowującympdfpages
pakiet LaTeX (i pdflatex), więc oznacza, że wprowadza on LaTeX jako zależność.Możesz użyć modułu Mix w PDFsam Basic (darmowy i open source) lub zrobić to online za pomocą funkcji Alternate & Mix w Sejda
źródło
Chciałem zrobić w zasadzie to samo, a odpowiedź Stéphane Chazelas była bardzo pomocna. Robię to wystarczająco często, że napisałem prosty skrypt Pythona do automatyzacji rzeczy, używając polecanych przez niego poleceń. Domyślnie odwraca kolejność stron parzystych, ale można to wyłączyć za pomocą flagi wiersza poleceń.
Pytanie jest trochę stare, więc oczekuję, że potrzeby pierwotnego pytającego zostały już spełnione. Możliwe jednak, że skrypt będzie przydatny dla osób, które przybędą tutaj w przyszłości, dlatego umieściłem go poniżej.
źródło
Natknąłem się na ten skrypt bash robiąc to, zakładając, że zeskanowałeś strony parzyste w odwrotnej kolejności, ale możesz to zmienić usuwając
-r
linijkę mówiącevenpages=($(ls "$evenbase-$key-"* | sort -r))
(to jest linia 46)Źródło
źródło