PDFとたわむれる

PDFとたわむれる感じで飽きるまで不定期更新blog

広告

※このエリアは、60日間投稿が無い場合に表示されます。記事を投稿すると、表示されなくなります。

PriMoreソースコード公開

2010-02-07 | Weblog
PriMoreはVBScriptで動いていますが今まで難読化した上で公開しておりましたが、多忙につき今後もなかなかメンテナンス出来ないと思うので、ソースを公開します。

VBScriptですのでVBAをやったことが有る方であれば、書き換える事は
出来ると思いますので、自分の好みに書き換えて使って下さい。
(とは言ってもPostScriptとPDFMarkがどんなものか知らないと書き換えは難しいかも知れません)

■PriMore V4.22 (PrimoPDF V4.x用)ソースコード
http://www.ne.jp/asahi/hey.to/expo/pdf/PriMoreV4.22.vbs.txt



■PriMore V0.85 (PrimoPDF V3.x用)ソースコード
http://www.ne.jp/asahi/hey.to/expo/pdf/PriMoreV0.85.vbs.txt


※拡張子は.txtにしているのでDL後に.vbsに戻して下さい。


それなりに綺麗に作ったつもりですが、
構造自体が複雑なんで下で軽く解説します。
(すでに、自分自身が構造を忘れているんですがw)

なにかあればコメントして下さい。

■PrimoPDF自体の処理の流れについて

PrimoPDFは擬似的なプリンターであり
他の無料のPDF化ソフトと同様でスプールを
PS(PostScript)ファイルに変換してその後にPDF化します。
図にすると

spoolsv.exe==>primorun.exe==>primopdf.exe
     └→spool┘   └→PS file┘   └→PDF file

・spoolsv.exe …プリントスプーラー
・primorun.exe …スプールからPSファイルを作成
・primopdf.exe …GUIで細かい設定を行ってPSファイルからPDFファイルを作成


です。

■PriMoreを導入した場合の流れについて

中間で作られるPSファイルを読み取り
日本語タイトルを取得しGUIでデフォルト表示するPDFのファイル名が
正しく日本語になるように設定します。
また、導入前は一度の印刷で必ず一つのPDFファイルですが、
複数回の印刷を一つのPDFファイルにまとめる事が
作成出来るようにしています。

図にすると

◇1度目の印刷
spoolsv.exe==>primorun.exe==>primore.vbs(1)==>primore.vbs(2)
    └→spool┘   └→PS file┘  └→PS file┘
◇2度目以降の印刷
spoolsv.exe==>primorun.exe==>primore.vbs(1)
└→spool┘  └→PS file┘   └→PS file

◇まとめてPDF化
primore.vbs(2)==>primopdf.exe
└→PS file┘    └→PDF file

・primore.vbs(1)…一回目の場合、自己呼び出しして
primore.vbs(2)の終了を待たずにて終了
・primore.vbs(2)…GUIのprimopdf.exeを起動する。

です、複数回印刷でPSファイルが作られるように
プロセスの繋がりを切っています。これは、PrimoPDFは
印刷してGUIを表示してPDFが作成されるまで、次の印刷は待ち状態
になってしまう為です。

■PriMore V0.85 (PrimoPDF V3.x用)の日本語対応

PSファイルにはスプールから送られてくるタイトルが「%%Title」
に記載されているが、日本語が含まれると8進数又は16進数で
エンコードされていて、GUIのprimopdf.exeが「%%Title」をそのまま
表示する為、デフォルトのファイル名として日本語が表示されません。

PriMoreでは、「%%Title」を先に読み取ってデコードした上で
「%%Title」に日本語(S-JIS)で書き戻しています、これをprimopdf.exeが読み取る事で
ファイル名として日本語表示されるようにしています。
ただこれだけだと、PDF自体のタイトルは文字化けしたままなの
PSファイルにPDFMarkで日本語タイトルをPDFdocencodingで追記してます。
なお、PDF化の際には「%%Title」よりPDFMarkのタイトルが優先されます。
また、複数の印刷時のタイトルをしおりとしてPDFMarkで追記しています。

■PriMore V4.22 (PrimoPDF V4.x用)の日本語対応

PrimoPDF3.0と異なり、primopdf.exeが「%%Title」を読み取る際に
英字以外が含まれるとエラーになってしまうため、「%%Title」を
"hoge"と書き換えて起動したGUI画面をSendKeyとクリップボード経由で
書き換えて日本語表示されるようにしています。
(こんな方法しかないんです…)
ジャンル:
ウェブログ
キーワード
ソースコード ファイル名 クリップボード エンコード
コメント (3)   この記事についてブログを書く
この記事をはてなブックマークに追加 mixiチェック
« PDFリファレンス第2版を買った | トップ | PDFフォームの入力情報は、保存... »
最近の画像もっと見る

3 コメント

コメント日が  古い順  |   新しい順
ありがとうございます! (達也)
2011-08-18 23:28:37
まとめてPDF化できるソフトを探していてたどり着きました。
まさかプリモPDFでできるようになるなんて思っても居ませんでした。
本当にありがとうございます!!


PriMore V4.22 (PrimoPDF V4.x用)の日本語対応ですが、
ソースを色々いじらせて頂いた所、、
クリップボードを使用しない方法を発見しましたので報告させていただきます。
(既に気付いていて、問題があるためにしていないのでしたら、ごめんなさい。)

1、メインファイル(PriMoreMain.ps)内の「%%Title:」の行をコメントアウト
2、キー操作をさせている行(objShell.SendKeys)をコメントアウト
3、メインファイル名を、デコードしたタイトルとする。(「日本語名.sp」といった形に。)
これをV4.xのprimopdf.exeに渡すと、日本語名できちんと表示されるみたいです。
SPファイルに「%%Title:」が無い場合、SPファイル名がそのままファイル名として使用されるようでした。
私が使っている限りでは問題ないようです。

長文になってしまい、申し訳ありません。
すばらしい (komikoni)
2011-08-20 11:44:33
達也さんへ

コメントありがとうございます。

>クリップボードを使用しない方法を発見しましたので報告させていただきます。

クリップボード経由は自分でも気持ち悪いな。。
と思ってたので、目から鱗です。

v3用で仕組みを作ったので、メインファイル名を
変えようという発想にはなりませんでした。ありがとうございます。

近々にも頂いた情報でバージョンアップしたいと思います。
(まずは、ソースをみて思い出すところから始めないとw)

他にも思うところが有れば、ドンドンコメント頂ければ
嬉しいです。
ありがとうございます。 (達也)
2011-08-22 23:13:58
お役に立てた様で何よりです。

作者様から更新をかけて頂けるなんて有り難いです。
(なにせ、ソースは、詳しく理解せずに部分的な理解で修正しているだけの状態なんで、変な所いじってそうで怖いんですよね・・・。動いてるから問題ないだろうと放置してますがwww)

本当に良いツール及びそのソースを公開して頂き、ありがとうございます。
今後もよろしくお願いします。微力ながら応援させて頂きます。

コメントを投稿


コメント利用規約に同意の上コメント投稿を行ってください。

数字4桁を入力し、投稿ボタンを押してください。

あわせて読む

トラックバック

この記事のトラックバック  Ping-URL