在2086行附近的/ghostpdl/Resource/Init/pdf_main.ps是執行縮放的例程pdf_PDF2PS_matrix。在各地的線2094,我們看到:
currentpagedevice /.HWMargins get aload pop
currentpagedevice /PageSize get aload pop
% Adjust PageSize and .HWMargins for the page portrait/landscape orientation
2 copy gt % PageSize_is_landscape
7 index aload pop 3 -1 roll sub 3 1 roll exch sub exch
10 index /Rotate pget not { 0 } if cvi 90 idiv 1 and 0 ne { exch } if
gt % Box_is_landscape
ne {
1 index 0 translate 90 rotate % add in a rotation
這將檢查已設置對從PDF文件中請求媒體的定向媒體的方向,如果他們是不一樣的,它旋轉的PDF文件90度。
您可以將其更改爲:
currentpagedevice /.HWMargins get aload pop
currentpagedevice /PageSize get aload pop
% Adjust PageSize and .HWMargins for the page portrait/landscape orientation
2 copy gt % PageSize_is_landscape
7 index aload pop 3 -1 roll sub 3 1 roll exch sub exch
10 index /Rotate pget not { 0 } if cvi 90 idiv 1 and 0 ne { exch } if
gt % Box_is_landscape
ne pop false {
1 index 0 translate 90 rotate % add in a rotation
,這將防止if子句從執行(從堆棧pop'ping布爾和一個「假」替換它),這樣的旋轉不會採取地點。
對我來說,這不會旋轉你的風景頁面。
你如何使用它取決於你的Ghostscript是如何構建的,這可能取決於Linux發行版的包維護者。
如果將資源內置到ROM文件系統中,則需要找到存儲在磁盤上的副本,修改該文件,然後重新構建Ghostscript,以便將修改後的文件內置到ROM文件系統中,或者使用-I開關告訴Ghostscript忽略ROM文件系統並從磁盤上讀取資源。
如果Ghostscript不是爲了使用ROM文件系統而構建的,那麼您需要在磁盤上找到資源並修改該文件。或者你也可以使用-I開關告訴Ghostscript使用一組修改過的資源。
無論如何,使用-I開關總體上可能是最好的,因爲這樣您可以保留正常的資源,並且只在您想要執行此任務時使用此修改後的代碼。
閱讀Ghostscript文檔:-)您將需要-dFIXEDMEDIA開關以及-gXandY來設置所需的頁面大小(以像素爲單位),然後您將最終需要-dPDFFitPage將頁面縮放到這些尺寸。 – KenS
謝謝@KenS。我可以通過使用上面的提示來得到它的一些工作 - 'gs -sDEVICE = jpeg -dFirstPage = 1 -dLastPage = 1 -g173x229 -dFIXEDMEDIA -dPDFFitPage -o test6.jpg file.pdf' 然而,還有一個問題 - 當我使用橫向導向的pdf時,我得到一個旋轉的圖像。即圖像作爲potrait旋轉。我似乎找不到任何有用的東西。你能幫我嗎? 我嘗試添加params -c「<> setpagedevice」,但是這會引發錯誤 – iamkhush
如果旋轉時它更合適,FitPage例程將旋轉它,因爲它涉及更少的縮放。如果你想避免這種情況,你需要重寫那段代碼。它們是用PostScript編寫的,你如何在PostScript中編碼?在媒體匹配中更改方向將無濟於事,因爲您已使用-g – KenS