Matlab を使用して複数ページの PS ファイルを出力しています。
print(figure, '-dpsc2', fullfile(folder, [file '.ps']), '-r600', '-append')
次に、Matlab を使用して Ghostscript を呼び出し、結果の PS ファイルを PDF に変換します。
system(['"' gsPath '" -sDEVICE=pdfwrite \
-dDEVICEWIDTHPOINTS=' num2str(int32(width*72)) ' \
-dDEVICEHEIGHTPOINTS=' num2str(int32(height*72)) ' \
-dPDFFitPage \
-o "' fullfile(folder, [file '.pdf']) '" "' fullfile(folder, [file '.ps']) '"']);
これは、次の行に沿って何かを書くのが本当に読みにくい方法です
gswin64c -sDEVICE=pdfwrite ^
-dDEVICEWIDTHPOINTS=100 ^
-dDEVICEHEIGHTPOINTS=100 ^
-dPDFFitPage ^
-o "C:\folder\output.pdf" "C:\folder\input.ps"
ここでは、デバイスのサイズと入出力パスの値の例を示しています。このコードを使用して 1 つの図 (1 ページ) を PDF に印刷すると、すべてが完全に機能します。ただし、複数の図 (複数のページ) を PDF に出力すると、Ghostscript はエラーをスローします。
GPL Ghostscript 9.06 (2012-08-08)
Copyright (C) 2012 Artifex Software, Inc. All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
**** Unable to open the initial device, quitting.
ここで、Ghostscript コマンドの一部を削除して、-dDEVICEWIDTHPOINTS=100 -dDEVICEHEIGHTPOINTS=100
複数の図を PDF に出力しようとすると、正常に動作します (ページ サイズが必要なものと異なる場合を除きます)。
GPL Ghostscript 9.06 (2012-08-08)
Copyright (C) 2012 Artifex Software, Inc. All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Loading NimbusSanL-Regu font from %rom%Resource/Font/NimbusSanL-Regu... 4032872 2490784 2311720 1014184 2 done.
他の誰かが同様の問題に遭遇し、この問題の回避策を見つけましたか? ここで重要なことの 1 つは、生成される PDF のページ サイズを制御できる必要があるということです。ありがとう!