Używam Ghostscript do konwertowania dokumentów PDF na PCL w celu drukowania. Ostatnio mam dodatkowy wymóg, aby przed drukowaniem wszystkie strony zostały obrócone do pozycji Portret. Znalazłem sposób, aby to zrobić za pomocą Ghostscript z następującą funkcją polecenia i post script.Strony Ghostscript obracają się
"C:\Program Files (x86)\gs\bin\gswin32c.exe" "-dNOPAUSE" "-dNOPROMPT" "-dBATCH" "-sDEVICE=pxlmono" "-Ic:\Program Files (x86)\gs\fonts\;c:\Program Files (x86)\gs\lib\;c:\Program Files (x86)\gs\lib\;" "-r300" "-sOutputFile=C:\EXPORTFILE_e542e04f-5e84-4c8e-9b41-55480cd5ec52.cache" "rotate612x792.ps" "C:\EXPORTFILE_3a5de9da-d9ca-4562-8cb6-10fb8715385a.cache"
Zawartość rotate612x792.ps
%! Rotate Pages
<< /Policies << /PageSize 5 >>
/PageSize [612 792]
/InputAttributes currentpagedevice
/InputAttributes get mark exch {1 index /Priority eq not {pop << /PageSize [612 792] >>} if } forall >>
>> setpagedevice
Problemem jest to, że funkcja ta zastępuje wszystkie rozmiary stron na wielkość liter. Moje dokumenty są czasem legalne lub A4. Próbowałem zmodyfikować tę funkcję, aby zastąpić rozmiary krajobrazu ich odpowiednikami w postaci portretu, ale nie były w stanie stworzyć działającego postscriptu. Muszę być wskazany we właściwym kierunku, aby stworzyć ekwiwalent postscriptowy następującego pseudokodu.
for(each page)
{
if(PageSize == [792 612])
PageSize = [612 792];
}
Zdaję sobie sprawę, że istnieją sposoby na stronach wirujących non-Ghostscript, ale jeśli mogę to zadziałało by to ładnie pasuje do mojego procesu, a nie zmniejszyć wydajność.
Oto przykład jednego z moich plików PDF: Sample1.pdf
Próbowałem tego skryptu i nie spowodowało błędu, ale również nie obróciło stron. Oto próbka wejściowego pliku PDF. [https://docs.google.com/open?id=0B2LzHaZ9pUynWXc2X0J3M0RvN28](https://docs.google.com/open?id=0B2LzHaZ9pUynWXc2X0J3M0RvN28) – Zig158