リッチクライアントのPDF出力で、破損したPDFが出来る
- このフォーラムに新しいトピックを立てることはできません
- このフォーラムではゲスト投稿が禁止されています
znetdy
投稿数: 13

不可解な現象に悩まされたものの、回避する事は出来ました。
ファイル名を固定で行っていたら、実行中2回目以降の帳票印刷で、なぜかブラウザコントロールに1回目のpdfファイルが表示される現象が発生。エクスプローラで直接ファイルを開いてみると、正しいpdfが作成されているにもかかわらず、削除されたファイルの内容が表示されるのです。
仕方ないので、マクロを使用してファイル名を可変にし、システム日付・システム時間から、常にユニークなファイル名を使用するようにして回避できました。
とりあえずこれでやりたい事が出来ました。どうもありがとうございました。
同じ問題にあってここを見ている人も居ると思いますので、当初の問題である、pdf破損の解決法を軽くまとめておきます。
(1)仮想プリンタ側で保存先やファイル名を指定する。
(2)Magicの入出力ファイルの式/項目には何も設定しないようにする。
簡単に言うと、上記2点を変更したら、破損せず出力されるようになりました。
ヘルプ等には、入出力ファイルの式で指定する方法が書かれているため、固定観念を持っていましたが、入出力ファイルの式で指定する方法で確認できたのは、今のところ「skypdf」だけです。
(フリーソフト14個試して全滅でした…)
・仮想プリンタの設定について
「Bullzip PDF Printer」の場合、スタートメニューの「Bullzip」→「PDF Printer」→「オプション」の「一般」タブで、保存先やファイル名を指定する。上書きの確認はチェックを外しておくと良いと思います。ラジオボタンはいいえ。
あと「ダイアログ」タブのラジオボタン2つもしないにしておく。
ファイル名を固定で行っていたら、実行中2回目以降の帳票印刷で、なぜかブラウザコントロールに1回目のpdfファイルが表示される現象が発生。エクスプローラで直接ファイルを開いてみると、正しいpdfが作成されているにもかかわらず、削除されたファイルの内容が表示されるのです。
仕方ないので、マクロを使用してファイル名を可変にし、システム日付・システム時間から、常にユニークなファイル名を使用するようにして回避できました。
とりあえずこれでやりたい事が出来ました。どうもありがとうございました。
同じ問題にあってここを見ている人も居ると思いますので、当初の問題である、pdf破損の解決法を軽くまとめておきます。
(1)仮想プリンタ側で保存先やファイル名を指定する。
(2)Magicの入出力ファイルの式/項目には何も設定しないようにする。
簡単に言うと、上記2点を変更したら、破損せず出力されるようになりました。
ヘルプ等には、入出力ファイルの式で指定する方法が書かれているため、固定観念を持っていましたが、入出力ファイルの式で指定する方法で確認できたのは、今のところ「skypdf」だけです。
(フリーソフト14個試して全滅でした…)
・仮想プリンタの設定について
「Bullzip PDF Printer」の場合、スタートメニューの「Bullzip」→「PDF Printer」→「オプション」の「一般」タブで、保存先やファイル名を指定する。上書きの確認はチェックを外しておくと良いと思います。ラジオボタンはいいえ。
あと「ダイアログ」タブのラジオボタン2つもしないにしておく。
投票数:0
平均点:0.00
znetdy
投稿数: 13

Jiro123様、返信ありがとうございます。
こちらも丁度、そこにたどり着きました。ファイル名は固定でも構わないので、マクロは使わなくても良さそうです。
「Bullzip PDF Printer」と「PDF Creator」で軽く動かした感じだと、「PDF Creator」は実行中に印刷を2回目動かすとエラーになってしまうので、マルチスレッド対応していないのかも知れません。「Bullzip PDF Printer」では、実行中に印刷を2回以上動かしても大丈夫でした。
「Bullzip PDF Printer」で、もうちょっと動かしてみます。
こちらも丁度、そこにたどり着きました。ファイル名は固定でも構わないので、マクロは使わなくても良さそうです。
「Bullzip PDF Printer」と「PDF Creator」で軽く動かした感じだと、「PDF Creator」は実行中に印刷を2回目動かすとエラーになってしまうので、マルチスレッド対応していないのかも知れません。「Bullzip PDF Printer」では、実行中に印刷を2回以上動かしても大丈夫でした。
「Bullzip PDF Printer」で、もうちょっと動かしてみます。
投票数:0
平均点:0.00
Jiro123
投稿数: 271

「Bullzip PDF Printer」のライセンスを確認すると、個人利用は無償ですが、商用利用は10ユーザまでという制限があるようです。
10ユーザを超える場合は、製品版を購入する必要があると書かれていますね。
http://www.bullzip.com/products/pdf/info.php#Introduction
ライセンスのことは置いておいて、ファイル名の指定方法についてですが、式で指定するのではなく、次の方法を試してみられてはどうでしょうか。
「Bullzip PDF Printer」のオプションでは、ファイル名欄にて、
マクロ指定で、ファイル名を指定できるようです。
マクロの<basedocname>を使って、「<basedocname>.pdf」というような記述で、ファイルパスを指定しておきます。
一方Magic uniPaaSから出力したファイル名は、入出力ファイルの名前欄の文字列が使用されています。
そこで、入出力ファイルの名前欄に、任意の論理名を設定し、そのプログラムを実行する前に、論理名を任意の文字列に変更してから、PDF出力プログラムを実行するという方法が考えられます。
こちらで試したところ、この方法で、任意のファイル名でPDFファイルを生成することができました。
なお、リッチクライアントの場合、サーバで同時並行でファイル出力を行う処理は、ファイルの生成のタイミングなどにより、コンフリクトを起こしてしまうなどの問題に繋がる可能性が考えられます。
サードパーティのツールで、それがマルチスレッドに対応していないものだと、上述のような問題に至る可能性があります。
「Bullzip PDF Printer」がマルチスレッドに対応しているかどうかは、分かりません。。。
10ユーザを超える場合は、製品版を購入する必要があると書かれていますね。
http://www.bullzip.com/products/pdf/info.php#Introduction
ライセンスのことは置いておいて、ファイル名の指定方法についてですが、式で指定するのではなく、次の方法を試してみられてはどうでしょうか。
「Bullzip PDF Printer」のオプションでは、ファイル名欄にて、
マクロ指定で、ファイル名を指定できるようです。
マクロの<basedocname>を使って、「<basedocname>.pdf」というような記述で、ファイルパスを指定しておきます。
一方Magic uniPaaSから出力したファイル名は、入出力ファイルの名前欄の文字列が使用されています。
そこで、入出力ファイルの名前欄に、任意の論理名を設定し、そのプログラムを実行する前に、論理名を任意の文字列に変更してから、PDF出力プログラムを実行するという方法が考えられます。
こちらで試したところ、この方法で、任意のファイル名でPDFファイルを生成することができました。
なお、リッチクライアントの場合、サーバで同時並行でファイル出力を行う処理は、ファイルの生成のタイミングなどにより、コンフリクトを起こしてしまうなどの問題に繋がる可能性が考えられます。
サードパーティのツールで、それがマルチスレッドに対応していないものだと、上述のような問題に至る可能性があります。
「Bullzip PDF Printer」がマルチスレッドに対応しているかどうかは、分かりません。。。
投票数:0
平均点:0.00
znetdy
投稿数: 13

Pu様、返信ありがとうございます。
PDF出力プログラム自体はバッチ(オンライン)のため、やはりPDF出力のバッチのみのプロジェクトを作成して行っても同じ現象でした。
自分が間違ったことをしていないか切り分けるため、「Skypdf」の体験版でやってみたところ、あっさり成功しました。
「Skypdf」はシェアウェアしかないですよね…。研修で行っているので、購入するというのは多分難しいです^^;
とにかく、「Bullzip PDF Printer」では出来ないというところで切り分けられました。ありがとうございました。
PDF出力プログラム自体はバッチ(オンライン)のため、やはりPDF出力のバッチのみのプロジェクトを作成して行っても同じ現象でした。
自分が間違ったことをしていないか切り分けるため、「Skypdf」の体験版でやってみたところ、あっさり成功しました。
「Skypdf」はシェアウェアしかないですよね…。研修で行っているので、購入するというのは多分難しいです^^;
とにかく、「Bullzip PDF Printer」では出来ないというところで切り分けられました。ありがとうございました。
投票数:0
平均点:0.00
pu_mahalo
居住地: 大阪
投稿数: 775

こんにちは Puです
「Bullzip PDF Printer」は使用した事がないので
適格な回答はできませんが。
RIAではなく 通常のC/Sで使用して ローカルに出力した場合は
どうなるのでしょうか?
私は「SkyPd」を使用しているので(←は問題なくRIAで使ってます)
でわ〜でわ〜
「Bullzip PDF Printer」は使用した事がないので
適格な回答はできませんが。
RIAではなく 通常のC/Sで使用して ローカルに出力した場合は
どうなるのでしょうか?
私は「SkyPd」を使用しているので(←は問題なくRIAで使ってます)
でわ〜でわ〜
投票数:0
平均点:0.00
znetdy
投稿数: 13

リッチクライアントで帳票をPDFファイルに出力して、それをブラウザコントロールに表示しようとしています。PDF出力には、「Bullzip PDF Printer」を使用しています。
プログラムでPDF出力場所やファイル名を指定したくて、入出力ファイルの式/項目でフルパス指定できるのは分かりましたが、そうすると破損したPDFが出来てしまいます(開くことが出来ません)。
式を指定せず、プリンタの保存先設定画面を表示させて保存した場合は、破損せずに出力できます。
ファイルサイズを見ると、破損させた場合は成功させた場合の10倍くらいのサイズになっていますが、中はどうなっているか確認できません。
同様の現象にあわれた方は居ますでしょうか?また、解決した方法を教えてください。
プログラムでPDF出力場所やファイル名を指定したくて、入出力ファイルの式/項目でフルパス指定できるのは分かりましたが、そうすると破損したPDFが出来てしまいます(開くことが出来ません)。
式を指定せず、プリンタの保存先設定画面を表示させて保存した場合は、破損せずに出力できます。
ファイルサイズを見ると、破損させた場合は成功させた場合の10倍くらいのサイズになっていますが、中はどうなっているか確認できません。
同様の現象にあわれた方は居ますでしょうか?また、解決した方法を教えてください。
投票数:0
平均点:0.00