4D-JUG
Would you like to react to this message? Create an account in a few clicks or log in to continue.

PDF出力

2 posters

Go down

PDF出力 Empty PDF出力

投稿 by shige 2020-07-16, 9:19 am

4Dv15.6(Windows10)より、PDFを出力しようとしています。

マニュアルサンプルの通り、以下のように記述しました。


$pdfpath:=System folder(Desktop)+"test.pdf"

$pdfprintername:="Microsoft Print to PDF"
ARRAY TEXT($name1;0)
PRINTERS LIST($name1)
If(Find in array($name1;$pdfprintername)>0)
SET CURRENT PRINTER($pdfprintername)
SET PRINT OPTION(Destination option;2;$pdfpath)
ALL RECORDS([Table_1])
PRINT SELECTION([Table_1];*)
SET CURRENT PRINTER("")
End if


環境として「印刷」ボタンと「PDF出力」ボタンは個別にあります。

「PDF出力」ボタンPDFは出力はされるのですが、
「印刷」ボタンでプレビューを行いXPSビューアーを開いてしまうと、
以後、「PDF出力」ボタンからの出力ではXPSビューアーが開きます。

次に「印刷」ボタンからのダイアログで手動で「Microsoft Print to PDF」ドライバに切り替え、
PDFを出力すると、以後、「PDF出力」ボタンから正常にPDF出力できるようになります。

これはバグなのでしょうか?


shige

投稿数 : 60
登録日 : 2018/03/31

トップに戻る Go down

PDF出力 Empty Re: PDF出力

投稿 by miyako 2020-07-16, 9:35 am

こんにちは。

はじめに

Windowsでは,

SET PRINT OPTION (Destination option; 2)

ファイル(タイプ不問)という意味

Macでは,

SET PRINT OPTION (Destination option; 3)

PDFという意味

を指定しますので,Windowsの場合,出力ファイルタイプは拡張子で決まります。

https://doc.4d.com/4Dv15/4D/15.6/SET-PRINT-OPTION.301-3818579.ja.html

なので,Windowsでは,毎回の印刷時,Destination optionの直前に

SET CURRENT PRINTER(Generic PDF driver)

を呼び出す必要があります。

注記:v15の場合はPDFCreator Printer name(PDFCreatorを使用する場合)
または"Microsoft Print to PDF"を指定します。

https://doc.4d.com/4Dv16/4D/16.6/SET-CURRENT-PRINTER.301-4444642.ja.html




ただ,説明の動作は正常に思えます。

というのは,XPSビューアは4Dの一部ではなく,独立した別アプリですので,
プレビューを実行した時点でファイルは4Dの手を離れたことになるからです。

PDFの出力前にPDFをプレビューされるのであれば,
4Dのプレビュー機能は使用せず
直接PDFをディスクに作成してOPEN URLコマンドでファイルを開くか,
フォームに組み込んだWebエリア等でプレビュー表示するなど,
XPSビューアに依存しない方法を選ぶ必要があると思います。

注記:OPEN URLは,ファイルをダブルクリックして開くのと同等の働きをします。

アプリ名を指定することもできます。

https://doc.4d.com/4Dv15/4D/15/OPEN-URL-new-name-for-OPEN-WEB-URL.300-2044190.ja.html

miyako

投稿数 : 480
登録日 : 2016/07/05

トップに戻る Go down

PDF出力 Empty Re: PDF出力

投稿 by shige 2020-07-16, 10:39 am

早速の返信、ありがとうございます。

プレビューは出力PDFで行うというご提案ですが...
運用的に印刷時にプリンタドライバでのプレビューに慣れているので
オペレーションミスが多発することが想定されます。

イメージ的には「SET CURRENT PRINTER」で指定することで
出力先を"Microsoft Print to PDF"に切り替えているものと思っておりましたが...

この方法しかないのでしょうか?
最新バージョンである4Dv18でも同様でしょうか?

shige

投稿数 : 60
登録日 : 2018/03/31

トップに戻る Go down

PDF出力 Empty Re: PDF出力

投稿 by miyako 2020-07-16, 11:01 am

SET CURRENT PRINTER("")

が期待どおりに動いていない,ということはないでしょうか。

空の文字列ではなく,PDF出力前のプリンターを変数に取り,
それで戻してはどうでしょうか。

参考までに

ACI0100847 64ビット版のみ。SET CURRENT PRINTER("")でカレントプリンターをデフォルトプリンターにリセットすることができませんでした。

https://4d-jp.github.io/2020/07/09/release-note-version-18-latest/

miyako

投稿数 : 480
登録日 : 2016/07/05

トップに戻る Go down

PDF出力 Empty Re: PDF出力

投稿 by shige 2020-07-16, 11:22 am

「SET CURRENT PRINTER」後、「Get current printer」で確認する限りでは
指定通りに切り替わっているようです。

ただ、一度プレビューすると、
"Microsoft Print to PDF"になっていても"XPSビューア"が開きます。

恐らくプリンタドライバの「プレビュー」にチェックが付いたままになっている
状態を維持し続けているからではないか...と思われます。
チェックを外し、実際に印刷を行うと、以後PDF出力が可能となりました。

オペレーション的には、プレビューをした後は、必ず印刷を実行し、
印刷ダイアログの「プレビュー」のチェックを外すことが必要のようです。


shige

投稿数 : 60
登録日 : 2018/03/31

トップに戻る Go down

PDF出力 Empty Re: PDF出力

投稿 by miyako 2020-07-16, 4:26 pm

印刷する前にSET PRINT PREVIEW(False)でリセットするのはどうでしょうか。

miyako

投稿数 : 480
登録日 : 2016/07/05

トップに戻る Go down

PDF出力 Empty Re: PDF出力

投稿 by shige 2020-07-16, 9:42 pm

ご連絡ありがとうございます。
返事が遅れすみません。

先ほど確認したところ...
SET PRINT PREVIEW(False)を実行することでうまくいきました!!

ご教示頂きありがとうございました。

shige

投稿数 : 60
登録日 : 2018/03/31

トップに戻る Go down

PDF出力 Empty Re: PDF出力

投稿 by Sponsored content


Sponsored content


トップに戻る Go down

トップに戻る


 
Permissions in this forum:
返信投稿: 不可