googleで
カスタム検索
プロフィール

けろ&ひな

Author:けろ&ひな
大阪在住。
親ばか。
最近、転職したよ。でも、やってることは一緒なんだけどね。;-P

最近の記事
カテゴリー
月別アーカイブ
最近のコメント
最近のトラックバック
スポンサード リンク

スポンサーサイト--------(--)

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[java][iText]A3ファイルの分割2011-06-29(Wed)

やってみたんで、記録。

A3のPDFを読み込んで、それをA4で2ページに出力する。

キモになるのは、A4のPdfに対してA3のテンプレートを追加するというところ。
追加するとき、1ページ目には左半分、2ページ目に右半分を出力するために
テンプレートの追加位置をずらす。

こうすることで、A4にA3を載せることができるようで。

ちなみに、サンプルではA3.pdfを直接読み込んでいますが
PdfReaderさえ取れれば、iTextで出力しながらでも分割できます。

このサンプルの結果では、A4.pdfにA3.pdfが
A4で2ページ構成になって出力されるはずです。

import java.io.FileInputStream;
import java.io.FileOutputStream;

import com.lowagie.text.Document;
import com.lowagie.text.PageSize;
import com.lowagie.text.Rectangle;
import com.lowagie.text.pdf.PdfContentByte;
import com.lowagie.text.pdf.PdfImportedPage;
import com.lowagie.text.pdf.PdfReader;
import com.lowagie.text.pdf.PdfWriter;

public class PDFSplitTest {

/**
* @param args
*/
public static void main(String[] args) throws Exception{
// 元となるA3ドキュメントから、何らかの手段でPdfReaderを取得する
FileInputStream inA3 = new FileInputStream("C:/temp/A3.pdf");
PdfReader readerA3 = new PdfReader(inA3);


/* 分割先となるA4のPDFを作ります */
Rectangle rectA4 = new Rectangle(PageSize.A4);
Document documentA4 = new Document(rectA4);
FileOutputStream outA4 = new FileOutputStream("C:/temp/A4.pdf");
PdfWriter writerA4 = PdfWriter.getInstance(documentA4, outA4); // 分割先のA4のPDF(空白のページ)

// A4にA3をコピーしていきます。
documentA4.open();
PdfContentByte cb = writerA4.getDirectContent();

// A4のWriterを使って、A3のテンプレートを取得します。
PdfImportedPage a3page = writerA4.getImportedPage(readerA3, 1);

// A4のPdfContentByteに対して、A3の左半分を載せます。
cb.addTemplate(a3page, 0, 0);

// 右半分を追加するためにnewPage
documentA4.newPage();

// A4のPdfContentPageにA3を左にずらして右半分を載せます。
cb.addTemplate(a3page, - a3page.getWidth() / 2, 0);

// 後はこのPdfContentByteを使って出力すれば、、、
documentA4.close();

inA3.close();
}

}
関連記事

テーマ : プログラミング
ジャンル : コンピュータ

コメントの投稿

管理者にだけ表示を許可する

コメント

工事中
RSSフィード
リンク

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。