2013-07-09 17 views
7

Używam GPL Ghostscript 9.07 (2013-02-14) na OS X (10.8.4) do konwersji wielu plików PDF na PNG.Zmuszanie Ghostscript do używania wygładzania podczas konwersji pliku PDF na PNG?

Działa dobrze, z wyjątkiem jednego z plików PDF, który zmienia się w PNG ze poszarpanymi krawędziami. Innymi słowy, Ghostscript z jakiegoś powodu wyłącza wygładzanie dla tego konkretnego pliku PDF.

The PDF in question.

Wyjście:

enter image description here

W innych przypadkach to działa dobrze (próbki: pdf ->png).

Używam tego polecenia:

gs -dNOPAUSE -dBATCH -dPDFFitPage -sDEVICE=pngalpha -g200x150 -sOutputFile=01.png 01.pdf 

to możliwe, aby wymusić wygładzanie Ghostscript użyć do tego PDF?

Wszelkie wskazówki są mile widziane.

+0

Więc mój problem rozwiązany poprzez konwersję plików PDF do SVG i korzystania RSVG (rsvg-convert) dla SVG do konwersji PNG. – Dae

Odpowiedz

1

Możesz spróbować -dGraphicsAlphaBits = z wartościami 1, 2 lub 4, które mogą lub nie mogą mieć znaczenie. Ulepszyło mnie to, ale jest to mała grafika w niskiej rozdzielczości z niezręczną krzywą, więc nie tak bardzo, jak można by się tego spodziewać.

Lub możesz użyć jednego z urządzeń antyaliasingu (np. Tiffscaled), które są bardziej elastyczne. Nie ma urządzenia wygładzającego dla formatu PNG, ale konwersja TIFF na PNG byłaby trywialna.

Nawiasem mówiąc, plik PDF specyficznie wyłącza wygładzanie na komponentach:

8 0 obj 
<</AntiAlias false/ColorSpace/DeviceCMYK/Coords[0.0 0.0 1.0 0.0]/Domain[0.0 1.0]/Extend[true true]/Function 10 0 R/ShadingType 2>> 

może chcesz spróbować i zobaczyć, co się stanie, jeśli zmieni Wygładzanie true, chociaż wątpię, będzie to miało Efekt, ponieważ jestem prawie pewien, że anali-aliasing jest stosowany do wewnętrznego renderowania cieniowania, a nie do krawędzi.

+0

1) Bez zmian, gdy ustawiłem Antialias na true (musiałem zdekompresować i skompresować plik za pomocą pdftk, aby móc go edytować). 2) Brak zmian dla postrzępionych krawędzi z -dGraphicsAlphaBits = 4 3) Tiffscaled - YES, wytworzony obraz wydaje się antyaliasowany, ale w odcieniach szarości i tło jest wypełnione bielą zamiast przezroczystą (domyślam się, że to ograniczenie TIFF). – Dae

+0

Również PostScript i PDF. Zawsze zakłada się, że tło jest nieprzezroczyste, chyba że rysujesz w nim coś innego. Nigdy nie jest "przezroczysty" w tych modelach obrazowania.Jeśli przeczytasz wątek dotyczący błędu, który otworzyłeś w Bugzilli, zobaczysz, dlaczego inne opcje nie będą działać, musisz użyć jednego z "skalowanych" urządzeń. – KenS

2

Można spróbować -dDOINTERPOLATE który wykorzystuje funkcję filtra Mitchell skalować składki dla każdego piksela wyjściowego

+0

Niestety nie widzę żadnych zmian, ale dzięki za sugestię. – Dae

+1

-dDOINTERPOLATE wpływa tylko na obrazy, nie ma wpływu na słowniki cieniowania, które jest tym, czego używa ten plik. – KenS

6

ten pracował dla mnie:

gs -q -dQUIET -dSAFER -dBATCH -dNOPAUSE -dNOPROMPT -dMaxBitmap=500000000 -dAlignToPixels=0 -dGridFitTT=2 -sDEVICE=jpeg -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -r150 -sOutputFile=foo-%d.jpg foo.pdf 

Źródło: ImageMagick convert pdf to jpeg has poor text quality after upgrading ImageMagick version to 6.7.8

Powyższy pracował dla JPG; dla PNG, należy wymienić opcję -sDEVICE z wyboru, np: -sDEVICE=png16m

Źródło: http://ghostscript.com/doc/current/Devices.htm

+0

Pytanie dotyczyło konwersji z formatu PDF na PNG, a nie JPEG. – Dae

+0

Tak, dodano PNG, dziękuję. –

+0

Warto zauważyć, że są to opcje '-dTextAlphaBits = 4' i' -dGraphicsAlphaBits = 4', które wykonują tutaj pracę. Inne opcje mogą lub nie być konieczne w zależności od sytuacji. –

Powiązane problemy