- - PR -
JavaでPDFのサイズ縮小を行いたい
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-09-30 00:24
お疲れ様です。中村です。
MSExcelやMSWordをPDF化したファイルに対し、 属性情報等を付加してPDFを再構築したいという要件がありまて試行錯誤しております。 当初はiTextを用いて属性情報を付加してやればいいのかなと、 安易に考えておりましたが、 この属性情報とやらがやたら多く(紙面の上部1/4&左サイド1/6を占めてしまう)、 印刷マージンではカバーできず、 A4で納めるにはどうしても元となるPDFのサイズを 縮小しなければならなくなってしましました。 iTextではPDFのサイズ縮小はサポートしておらず、 どうすればよいのか暗礁に乗り上げている次第です。 何か良策はないでしょうか? ご教授願います。 |
|
投稿日時: 2004-10-05 22:53
こんにちは。
iTextでは縮小もサポートしています。 サンプルを書くとこんな感じです。 //入力ファイル取得 PdfReader reader = new PdfReader(Test.class.getResource("input.pdf")); //出力先 File outputFile = new File("c:/output.pdf"); outputFile.createNewFile(); FileOutputStream fout = new FileOutputStream(outputFile); Document document = new Document(); PdfWriter docWriter = PdfWriter.getInstance(document,fout); document.open(); int pagenum = reader.getNumberOfPages(); for(int i = 1;i <= pagenum;i++){ document.newPage(); PdfImportedPage page = docWriter.getImportedPage(reader,i); PdfContentByte cb = docWriter.getDirectContent(); int rotation = reader.getPageRotation(i); if (rotation == 90 || rotation == 270) cb.addTemplate(page, 0, -0.5f, 0.5f, 0, 0, reader.getPageSizeWithRotation(i).height()); else cb.addTemplate(page, 0.5f, 0, 0, 0.5f, 0, 0); } document.close(); fout.flush(); fout.close(); このコードで、読み込んだPDFを縮小して新しいPDFに吐き出すことが できます。 よかったらこちらも参考にして下さい。 http://dev105.souko105.net/index.php?%A1%DAiText%A1%DB%20PDF%B9%E7%C0%AE [ メッセージ編集済み 編集者: c95029 編集日時 2004-10-19 13:00 ] |
|
投稿日時: 2004-10-07 10:02
お疲れ様です。中村です。
PDF縮小の件ですが、iTextのjavadocを見ていて、 addTemplate()の配置指定以外の引数は何に使っているのだろう?と思っていました。 というか、使ってみろよ!ということですね。 どうもありがとうございます。 そこで、もう一つ技術的なことでお聞きしたいことがあります。 効率良く配置指定する方法はないでしょうか? @ソースを書き換え Aリビルド Bアプリ実行(PDF作成) CAcrobat Readerで配置のチェック やはり、この@〜Cの繰り返しを行うべきなのでしょうか? グリッド表示とかあったら嬉しいのですが・・・ 以上です。よろしくお願いします。 |
|
投稿日時: 2004-10-07 22:05
グリッド表示、確かに欲しいですね・・・
私はディスプレイを2つ使って、片方ブラウザでPDF表示、片方開発ツールで まず固定部分やFormでまかなえるところは極力Acrobatで作ってしまい、 どうしてもJavaコードが必要なところは ソース書き換え>リビルド>実行>ブラウザリロード という感じでセコセコやっています。 WebアプリでPDFを出しているのですが、さすがにサーバ再起動やっていては 身がもたないため、PDF生成の部分だけは単体で動くように設計して、デバック時は Javaアプリケーションとして動かしてなるべく手返しよくやるようにしています。 まあここはさすがに市販のGUIツール付き製品に比べるとしんどい所ですが、 細かい芸ができるのでまあしょうがないかなと、思ったりしています。 参考になれば幸いです。ではでは。 |
1