0

PS ファイルを PDF に変換すると、ローカル マシンでは問題なく動作しますが、実稼働サーバーでは、Mac OSX プレビューの印刷設定から 100% の代わりに [拡大縮小] を選択したかのように、ページに余白が追加されます。 . どうすればこれを防ぐことができますか? 現在、私はやっています:

Magick::ImageList::new('cool.ps').write('cool.pdf') # only works on local machine

更新:私はこれを解決しました!以下の私の答えを見てください。

4

2 に答える 2

1

解決

system("gs -dSAFER -dBATCH -dNOPAUSE -sPAPERSIZE=letter -sDEVICE=pdfwrite \
        -sOutputFile='cool.pdf' 'cool.ps'")
  • -dSAFER(読み取り専用) 入力ファイルが変更されないようにします。
  • -dBATCHGhostscript を自動的に終了します。
  • -dNOPAUSE各ページ変換後に自動的に続行されます。

の代わりにコマンドを使用することもできますがps2pdf(こちらの方が優れているようです) gs、上記は問題なく機能したので、他にもっと重要な作業があり、本番環境に簡単に展開してテストすることができないため、そのままにしておきました。

このソリューションにたどり着いた経緯

まず、PostScript (PS) ファイルを PDF に変換するために使用ghostscriptできることを知りました。

そのため、Ghostscript を使用してみましたが、同じ結果が得られました。(後から考えると、これは ImageMagic が PS および PDF フォーマットを Ghostscript に委譲しているためであることがわかりました。)

本番サーバーで生成された PDF をさらに調べたところ、実際には、本番サーバーで生成された PDF のページ サイズ (私のローカル マシンで生成された PDF のページ サイズよりも大きい) がわずかに大きいことに気付きました (後から考えると、 a4.) したがって、マージンが追加されます (笑)。:)

実動サーバーが異なるページ・サイズを使用しているのはなぜでしょうか? ...

あはは!運用サーバー上の Ghostscript 構成ファイル (実際には、その後すぐにGhostscript 初期化ファイルと呼ばれることを知りました) は、別のデフォルトのGhostscript ページ サイズを指定する必要があります。

よし、(実稼働サーバーに Ghostscript をインストールするときに) デフォルトの用紙サイズを a4 に上書きすることを決定した nincompoop は誰?

幸い、私は本番アクセス権を持っていないので、で明示的に設定できまし-sPAPERSIZE=legalたが、調査は完了していません...

ローカル マシンで a を実行し、man gs入力して「init」を検索し/init、Enter を押しました。次に、n&Nを使用して結果を循環します。を見たgs_init.psので、やめて次のことをq行いました。

sudo find / -name gs_init.ps

私は得た:

/opt/local/share/ghostscript/8.71/Resource/Init/gs_init.ps
/opt/local/var/macports/software/ghostscript/8.71_3/opt/local/share/ghostscript/8.71/Resource/Init/gs_init.ps

catは 2 番目の結果をテストしました (MacPorts で ImageMagick をインストールしたことを思い出したので、もう一度やり直さなければならない場合は、ImageMagick をソースからインストールするか、代わりに HomeBrew でインストールするでしょう)。私は検索しPAPERSIZEて見つけました:

% Optionally choose a default paper size other than U.S. letter.
% The default page size for many devices is set at compile time to 
% letter, but this can be changed to A4 although this is rarely done.  
% Some devices such as bbox have a different default page size,
% and should not be set to A4 or letter.
% When ghostscript is used in countries that use the international
% standard page size A4 rather than US letter, the page size of 
% devices that default to letter or A4 can be changed by setting
% DEFAULTPAPERSIZE.
% /DEFAULTPAPERSIZE (a4) def
于 2011-03-03T22:00:30.240 に答える
1

一概には言えませんが、ps からの変換が問題なのか、pdf への変換が問題なのかは、別の画像形式を試すことでわかります。Png には余分な境界線がないため、この例で境界線が取得された場合、ps からの変換が問題であることがわかります。

Magick::ImageList::new('cool.ps').write('cool.png')
于 2011-02-19T23:34:26.193 に答える