PDFファイルの書かれている内容を奇数ページを一つのページの左側に偶数ページを右側に
置いてページ数を半分にするプログラムです。
package iTextTest;
import java.io.*;
import com.lowagie.text.*;
import com.lowagie.text.pdf.*;
public class IText202 {
    public IText202() {
        try {
            // リーダオブジェクトを作成します
            PdfReader reader = new PdfReader("d:/temp/pac.pdf");
            // 総ページ数を取得します
            int n = reader.getNumberOfPages();
            // 最初のページのサイズを取得します
            Rectangle psize = reader.getPageSize(1);
            float width = psize.getHeight();
            float height = psize.getWidth();
            Document document = new Document(new Rectangle(width, height));
            PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("d:/temp/itext202.pdf"));
            document.open();
            // 内容を追加します
            PdfContentByte cb = writer.getDirectContent();
            int i = 0;
            int p = 0;
            while (i < n) {
                document.newPage();
                p++;
                i++;
                PdfImportedPage page1 = writer.getImportedPage(reader, i);
                cb.addTemplate(page1, .5f, 0, 0, .5f, 60, 120);
                if (i < n) {
                    i++;
                    PdfImportedPage page2 = writer.getImportedPage(reader, i);
                    cb.addTemplate(page2, .5f, 0, 0, .5f, width / 2 + 60, 120);
                }
                BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
                cb.beginText();
                cb.setFontAndSize(bf, 14);
                cb.showTextAligned(PdfContentByte.ALIGN_CENTER,
                                         "page " + p + " of " + ((n / 2) + (n % 2 > 0? 1 : 0)), width / 2, 40, 0);
                cb.endText();
            }
            document.close();
        }
        catch (Exception de) {
            de.printStackTrace();
        }
    }
    public static void main(String[] args){
        new IText202();
    }
}
 
0 件のコメント:
コメントを投稿