仕事で大量のドキュメントをPDFで集めたのはいいのだが、どいつもこいつも文書タイトルや作者名の文書のプロパティを埋めてきやがらない。
これじゃあ、後で検索するときに困るだろうが。ちゃんと指示書に書いといたのに、まったく最近の若い奴ときたら…と、ジジイの繰言は置いておくとして、さて、どうしよう?と困ってしまった。 いくらなんでも一件一件Acrobatで設定つーのはかっちょ悪いではないか。 そんなくだらない作業に時間を費やしているほど、先行き長い人生でも無いし。 もちろん愛用のpdftkなど、既存ツールでもいいのだが、ちょっとプログラム的に操作したいようなこともあるので、簡単なツールを作ることにした。 先だって、Javaで、FOPの代替としてiTextを使ったプログラムを作ったばかりだったので、iTextならできるだろうと判っちゃいたのだが、生来Javaという言語がキラいだし(笑)、同じことをやってもあまり面白くないので、iTextのC#へのポーティングであるiTextSharpを使ってみることにした。 iTextSharpに関してはCodeZine:iTextSharpを利用して.NETでPDF帳票を出力するなどに詳しい。PDFを作成したいのならこのあたりの記事を読めばよろしかろう。俺的にはプロパティを変えたいだけなのでもっと簡単。 iTextSharpをしかるべく配置し、概略こんな感じで文書プロパティは読み出せた。 using iTextSharp.text; using iTextSharp.text.pdf; … string ReadFile; // 読み出すファイル名(パス名) PdfReader reader = new PdfReader(ReadFile); // パスワード付だとここで例外を吐くので対処要 infoTitle = (string)reader.Info["Title"]; 文書プロパティを保持してくれるreader.Infoはリストなので、全部読み出したいのなら foreach (string infostr in reader.Info.Keys) { … infostrに対する処理 で、問題は書き換えである。 いちおう別ファイルとして出力しておこうか。バグってると困るしな(笑) 当初ストリーム作ってコピって…みたいな操作が必要かと思ったのだが、マニュアル読んだらPdfStamperつー便利なものがあるではないか。 // 拡張子を変える iTextSharpは、オリジナルと比べるとまだ多少「こなれて」いない印象だが、C#からは使いやすい。今後が楽しみなソフトである。
newFile = Path.ChangeExtension(ReadFile, ".FDF"); // PdfStamperを作成。 PdfStamper stamper = new PdfStamper(reader, new FileStream(newFile, FileMode.Create)); // 一時格納用のハッシュテーブル。 Hashtable info = new Hashtable(); // ハッシュに値を設定する info["Title"] = "超極秘文書 マジェスティック12"; info["Author"] = "少年密偵 禿田正太郎"; // Stamperにハッシュテーブルの内容を入れて stamper.MoreInfo = info; // Stamperを閉じればア~ラ不思議ファイルの出来上がり stamper.FormFlattening = true; stamper.Close();
by SIGNAL-9
| 2006-12-28 11:17
| TIPSとかKludgeとか
|
カテゴリ
全体 一般の話題 奇妙な論理 奇談・異聞 秋葉原 研究(笑) 町歩き 古い話 東電災害 電算機関係の話題 情報保護・セキュリティ 読んだり見たり TIPSとかKludgeとか 拙作ソフトウェア 未分類 最新の記事
記事ランキング
以前の記事
最新のトラックバック
その他のジャンル
ブログジャンル
画像一覧
|
ファン申請 |
||