3

内部にスクリプトを含む PDF ファイルがあります。スクリプトは、ドキュメントを印刷するプリンターを変更することができます (バーコード専用のプリンターと通常のドキュメント用の別のプリンターがあるため)。問題は、プリンターをコンピューターのデフォルトにリセットする方法がわからないことです。

印刷コードは次のとおりです。

var pp = getPrintParams(); // get printing parameters
pp.interactive = pp.constants.interactionLevel.automatic; // do not prompt user
pp.printerName = 'barcode_printer'; // set printer name
this.print(pp); // print

JavaScript API リファレンス(ページ 314、583) によると、getPrintParams()はデフォルトの印刷パラメーターを返し、 (空の文字列)pp.printerNameに設定するとデフォルトのプリンターを意味します。''そのどれもが真実ではないことに気づきました。実際getPrintParams()には、最後に使用されたパラメーター (新しい/デフォルトのものではない) を返し、pp.printerName = ''プリンターをデフォルトのパラメーターにリセットせず、代わりに最後に選択されたプリンターを使用します。

さらに、PrintParamsオブジェクトは開いているさまざまなドキュメント間で共有されているように見えるgetPrintParams()ため、実際には読み取り値がデフォルトプリンターを参照しているかどうかがわからないため、一部の変数にデフォルトプリンターの名前 (の最初の呼び出しから読み取られた)を格納できません。は他の開いているドキュメントによって既に変更されています。

この動作は、Adobe Reader (9、10、11) および Foxit Reader の異なるバージョン間で一貫しています。

プログラムでプリンターをデフォルトのプリンターにリセットする方法を教えてください。

4

2 に答える 2

1

実際、この問題はglobal、AdobeReaderの1つのインスタンスで開かれた複数のドキュメント間で共有されるオブジェクトを使用して回避できます。

初めてドキュメントが読み込まれるときに、globalオブジェクトに(自分の)プロパティが含まれているかどうかを確認しますdefaultPrinter。ただし、を呼び出してフィールドをgetPrintParams()読み取り、printerNameに割り当てglobal.defaultPrinterます。次に、フィールドを読み取って、デフォルトのプリンター名を取得できます。コードは次のとおりです。

if (global.defaultPrinter === undefined) {
    global.defaultPrinter = getPrintParams().printerName;
}
于 2013-02-18T09:15:15.670 に答える