Używasz Ghostscript do konwersji wielostronicowego pliku PDF na pojedynczy plik JPG?

15

Wiem, że Ghostscript może konwertować pliki PDF na JPG, aw przypadku wielostronicowego pliku PDF może zgrać każdą stronę do pojedynczego pliku JPG. Ale czy można je zgrać do jednego pliku JPG, aby strony były wklejone pod sobą, np. Górna połowa pliku JPG to strona 1, a dolna połowa to strona 2? Czy też muszę użyć innego programu (i czy ImageMagick może to zrobić?), Aby połączyć strony JPG w jeden obraz?

Andrzej
źródło

Odpowiedzi:

17

Tak, musisz przekonwertować każdą stronę PDF na pojedynczy plik JPG (Ghostscript może to zrobić).

Następnie połącz powstałe pliki JPG za pomocą innego programu ( ImageMagick lub GraphicsMagic mogą to zrobić za pomocą montagepodrzędnych poleceń).

Nie znam żadnego oprogramowania, które mogłoby to zrobić za jednym razem.

Konwersja PDF-do-JPG (z Ghostscript): Musisz się upewnić, że uzyskasz najlepszy możliwy wynik. Upewnij się, że poprawiłeś opcje wiersza poleceń, aby działały dla Ciebie. I „d zacząć z tym:

gswin32c.exe ^
    -dBATCH ^
    -dNOPAUSE ^
    -dSAFER ^
    -sDEVICE=jpeg ^
    -dJPEGQ=95 ^
    -r600x600 ^
    -sOutputFile=c:/path/to/jpeg-dir/pdffile-%03d.jpeg ^
    c:/path/to/pdffile.pdf

Spowoduje to utworzenie plików JPG o nazwie pdffile-001.jpeg , pdffile-002.jpg itp. Parametr * -dJPEGQ = 95 „ustawia„ Jakość JPEG ”na 95%. Używa rozdzielczości„ 600x600 dpi ”. Może być konieczne dodatkowe kontroluj rozmiar stron wynikowych plików JPG na wypadek, gdyby domyślne ustawienia Ghostscript nie spełniały Twoich wymagań:

gswin32c.exe ^
    -dBATCH ^
    -dNOPAUSE ^
    -dSAFER ^
    -sDEVICE=jpeg ^
    -dJPEGQ=95 ^
    -r600x600 ^
    -dPDFFitPage ^
    -dFIXEDMEDIA ^
    -dDEVICEWIDTHPOINTS=800 ^
    -dDEVICEHEIGHTPOINTS=600 ^
    -sOutputFile=c:/path/to/jpeg-dir/pdffile-%03d.jpeg ^
    c:/path/to/pdffile.pdf

lub

gswin32c.exe ^
    -dBATCH ^
    -dNOPAUSE ^
    -dSAFER ^
    -sDEVICE=jpeg ^
    -dJPEGQ=95 ^
    -r600x600 ^
    -dPDFFitPage ^
    -dFIXEDMEDIA ^
    -sDEFAULTPAPERSIZE=a4 ^
    -sOutputFile=c:/path/to/jpeg-dir/pdffile-%03d.jpeg ^
    c:/path/to/pdffile.pdf

stwardnienie do jednego jpg szycia z montage(ImageMagick lub GraphicsMagick):montage polecenie (stosowana w tym przykładzie jest ImageMagick) pozwala na kontrolowanie wzoru sąsiadująco. Jeśli użyjesz np.-tile 4x3Uzyskasz ten układ impozycji:

1  2  3  4    
5  6  7  8    
9 10 11 12    

Możesz użyć tego polecenia, aby połączyć 12 pojedynczych plików JPG w jeden:

montage ^
    -border 0  ^
    -tile 4x3  ^
    c:/path/to/jpeg-dir/pdffile-*.jpeg  ^
    c:/path/to/final.jpg

Oczywiście montagema wiele dodatkowych parametrów, które pozwalają określić tło, odstępy, przesunięcia, dekoracje, etykiety, obrót, kadrowanie, podpis itp. Dla danych wejściowych i wynikowego JPG.


EDYCJA: (Chciałem podać tę wskazówkę już w mojej oryginalnej odpowiedzi, ale zapomniałem.)montageDomyślnie użyje kafelków o rozmiarach 120 x 120 pikseli. Jeśli chcesz zachować oryginalne rozmiary stron dla każdego kafelka, musisz dodać-geometrydo wiersza polecenia. Zakładając, żew swoim pliku PDF masz strony A4 (= 595 x 852 pt) i chcesz to zachować, ale dodaj także odstęp 11 punktów w poziomie i 22 punkty w kierunku pionowym kafelków (plus 4 punkty silnych szarych linii obramowania / ramek) wokół każdej płytki), wykonaj następujące czynności:

montage ^
    -border 4 ^
    -tile 4x3 ^
    -geometry 595x842+11+22 ^
    c:/path/to/jpeg-dir/pdffile-*.jpeg ^
    c:/path/to/final.jpg

EDYCJA 2: (pominięto jeszcze jedną ważną wskazówkę). Jeśli nie chcesz stracić dobrej jakości obrazu podczas procesu łączenia / montażu, który utworzyła konwersja PDF-to-JPG, dodaj również-quality 100parametr do linii poleceń w ten sposób :

montage ^
    -border 4 ^
    -tile 4x3 ^
    -geometry 595x842+11+22 ^
    -quality 100 ^
    c:/path/to/jpeg-dir/pdffile-*.jpeg ^
    c:/path/to/final.jpg
Kurt Pfeifle
źródło
Dziękuję za Twoją odpowiedź. Nie widzę parametrów geometrii w ImageMagick 6.9.9. Ponadto jakość połączonego obrazu jest nadal kiepska, dosłownie nie mogę odczytać z niego słowa.
Geek
2

Ponieważ ImageMagick ma wbudowaną obsługę GhostScript, możesz zrobić to wszystko za jednym razem:

montage -tile 5 thispdfis25pages.pdf tiledoverview.jpg

który weźmie każdą stronę i utworzy jeden długi jpeg od końca do końca.

erjiang
źródło
1
Ale to NIE da ci wysokiej jakości JPG, ponieważ użyje Ghostscript z domyślnymi ustawieniami (i są one dość shi..y dla wyjścia JPG). Wykonanie tego w 2 krokach (najpierw sprawdzenie stron JPG) daje optymalną kontrolę, a także daje dość dobrą wydajność JPG).
Kurt Pfeifle
Możesz zmienić ustawienia Ghostscript za pomocą ustawienia -Density dla ImageMagick dla pliku PDF i uzyskać równie dobre wyniki. Nie pukaj wiadomości błyskawicznych, jeśli nie wiesz, jak korzystać z ich opcji.
erjiang
1
k .: Hej, nie zapukałem ImageMagick. Wiem, jak korzystać z jego opcji, nawet stosując profile kolorów ICC ... Ale nie można przekazać wszystkich opcji Ghostscript do montażu. Mój komentarz dotyczył twojego sugerowanego polecenia, o którym nie wspomniałem -density.
Kurt Pfeifle,
Nawiasem mówiąc, czytałem gdzie indziej na SO, że ImageMagick wewnętrznie konwertuje z PDF na PS, a następnie PS na PNG, gdy wywołujesz go w ten sposób, więc to kolejny powód, aby nie robić tego w ten sposób (dwie konwersje => niższa jakość i wolniejsza).
Ibrahim,