2012-10-01 8 views
19

Zeskanowałem materiały o rozdzielczości 600 dpi, ~ 9.36x12.67 cali i przygotowane w formacie PostScript (PS).Jak ustawić niestandardowy rozmiar strony za pomocą Ghostscript

Teraz, kiedy próbuję przekształcić PS na PDF za pomocą Ghostscript (GS), otrzymuję przycięte wyjście, ponieważ zakładam, że domyślny rozmiar strony GS jest ustawiony na A4. Znalazłem dostępne szablony dla GS tutaj: http://www.ghostscript.com/doc/9.06/Use.htm#Known_paper_sizes ale żadne nie pasuje do wymiarów moich plików PS, więc:

Czy mogę polecić GS, aby wyprowadzał niestandardowy rozmiar, a jeśli tak, to w jaki sposób?

-sPAPERSIZE instrukcja wydaje się akceptować tylko wstępnie zdefiniowane nazwy szablonów, tak jak w połączonej dokumentacji.

Odpowiedz

25

Można ustawić rozmiar strony używany z -gNNNNxMMMM gdzie NNMN jest szerokość w pikselachprzy 720 dpi (720 pikseli == 1 cal), a MMMM jest wysokość w pikselach na 720 dpi.

Lub możesz ustawić niestandardowy rozmiar w PostScript punktów (72 punkty == 1 cal) z -dDEVICEWIDTHPOINTS=w -dDEVICEHEIGHTPOINTS=h.

Jeśli się nie mylę, 9,36 cala ≈ = 674 punktów i 12,67 cala ≈ = 912 punktów.

Będziesz także musiał zastosować -dPDFFitPage, aby dopasować dane wejściowe do strony.

Więc można użyć albo

gs       \ 
    -o output.pdf   \ 
    -sDEVICE=pdfwrite  \ 
    -dDEVICEWIDTHPOINTS=674 \ 
    -dDEVICEHEIGHTPOINTS=912 \ 
    -dPDFFitPage    \ 
    input.ps 

lub

gs     \ 
    -o output.pdf  \ 
    -sDEVICE=pdfwrite \ 
    -r600    \ 
    -g8112x7596  \ 
    -dPDFFitPage  \ 
    input.ps 
+0

Myślę, że chciałeś użyć '-r720' dla 720 dpi. Dzięki za odpowiedź i tak – Dorian

+0

Mam aplikację, która używa Ghostscriptsharp (C# realizacji). To po prostu .dll i nie ma wszystkich opcji wiersza poleceń (które można znaleźć) dla niestandardowych rozmiarów strony. Masz pomysł, jak zaimplementować to w tym opakowaniu? – Valien

+0

rasterizer.CustomSwitches.Add ("- dMySwitch"); – wbt11a

3

Co pracował dla mnie:

gs -sDEVICE=pdfwrite -r720 -g4308x6066 -dPDFFitPage -o out.pdf in.pdf

4308x6066 jest liczba pikseli, tym -r720 jest liczba pikseli na cal.

Mamy tutaj 720dpi, więc na przykład dla 5 cali, będzie to 3600 pikseli.

0

Używam GhostPDL 9.10. Chociaż mój rozmiar papieru 8,5x13 jest wymieniony pod numerem http://ghostscript.com/doc/7.07/Use.htm#Known_paper_sizes jako "flsa", przełącznik "-sPAPERSIZE = flsa" nie przyniósł żadnego efektu, rozmiar papieru pozostał Letter. Poprawne jednostki dla przełącznika -g5100x7800 pasowały do ​​mojego -r600 (nie 720); -g działa.

1

Zauważyłem, że gs przycina moje wyniki, mimo że zmusiłem stronę do największego rozmiaru standardowego, A0.

Powodem okazała się, że dokument wysłany do gs PostScript przez groff/grops zawierał %%DocumentMedia specyfikację, która została unieważniając wybór Ghostscript jest.

Rozwiązaniem było nadanie groff flagi linii komend -p-P48i,48i. -p mówi groff, aby przekazać pozostałą opcję do grops. -P48i,48i do grops ustawia rozmiar papieru na 48 cali na 48 cali.