PDF、組版と文書変換のアンテナハウス株式会社

サイトマップ
hr トップ
ページ
hr デスクトップ
製品情報
hr システム
製品情報
hr DITA
サービス
hr 電子書籍
サービス
hr サポート hr 製品の購入
について
hr お問い合わせ hr 会社案内 hr

評価版のお申し込み

OEMについて詳しくはこちら

サポートについて

PDF Tool API V5.0 機能使用例:ページ割り付け

活用例

名称

ページ割り付け

印刷したいPDFのページを一枚の用紙に4ページを割り付けて(4in1)、新しいPDFを出力します。プリンタドライバで4in1印刷ができないときに、PDFを4in1処理すれば印刷する紙の枚数を減らすことができます。

ページの割り付け

使用する主な機能

PtlContentクラスのdrawForm関数を使います。PDFのページをそのまま、他のPDFのページ上の領域に貼り付けることができます。

処理概要

  1. 入力PDFのページを順に読んで、出力PDFに4ページずつ割り付けます。
  2. 出力PDFの用紙サイズはA4に設定します。1ページの上に左上、右上、左下、右下の4つの区画を設定します。
  3. 入力PDFの1ページ毎に、出力PDFの各区画上にdrawFormで描画します。

入力例

表示イメージ

 

出力結果

表示イメージ


…略…

 

サンプルコード

Javaサンプルコード(抜粋)

        float width = 210.0f; // A4横長
        float height = 297.0f;// A4縦長

        PtlRect rectA4V = null;
        PtlRect rect[] = null;
        PtlParamInput inputFile = null;
        PtlParamOutput outputFile = null;
        PtlPDFDocument doc = null;
        PtlPDFDocument docNew = null;
        PtlPages pages = null;
        PtlPages pagesNew = null;

        try
        {
            rectA4V = new PtlRect(0.0f, 0.0f, width, height);    // A4縦用紙
            rect = new PtlRect[] {new PtlRect(0.0f, height/2, width/2, height),  // 上左
                                  new PtlRect(width/2, height/2, width, height), // 上右
                                  new PtlRect(0.0f, 0.0f, width/2, height/2),    // 下左
                                  new PtlRect(width/2, 0.0f, width, height/2)};  // 下右
            inputFile = new PtlParamInput(args[0]);
            outputFile = new PtlParamOutput(args[1]);
            doc = new PtlPDFDocument();
            docNew = new PtlPDFDocument();

            // 新規PDFのページコンテナの取得
            pagesNew = docNew.getPages();

            // PDFファイルをロード
            doc.load(inputFile);

            // ページコンテナの取得
            pages = doc.getPages();

            // ページコンテナが空かどうか
            if (pages.isEmpty())
            {
                System.out.println("ページコンテナが空");
                return;
            }

            int numPages = doc.getPageCount();

            int pageNumber = 0;
            int i=0;
            while (i <numPages) {
            	PtlPage pageTemp = null;
                PtlPage pageNew = null;
                PtlContent content = null;
                try
                {
                    // 割り付けを行うA4縦ページ
                    pageTemp = new PtlPage();
                    pageTemp.setViewBox(rectA4V);
                    // ページを文書に追加
                    pagesNew.append(pageTemp, PtlPages.OPTION_NONE);

                    // 文書からページの取得
                    pageNew = pagesNew.get(pageNumber);

                    // 割り付けを行うA4縦ページのコンテント取得
                    content = pageNew.getContent();

                    // 4ページを1ページに割り付ける
                    for(int j=0; j<4 && i<numPages; ++j,++i) {
                        // 割り付けするページ
                        PtlPage page = null;
                        try
                        {
                            page = pages.get(i);
                            // ページ割り付け
                            content.drawForm(rect[j], PtlContent.ALIGN.ALIGN_CENTER, page);
                        }
                        finally {
                            if( page != null ) { page.close(); }
                        }
                    }

                    ++pageNumber;
                }
                finally {
                    if( content != null ) { content.close(); }
                    if( pageTemp != null ) { pageTemp.close(); }
                    if( pageNew != null ) { pageNew.close(); }
                }
            }

            // ファイルに保存します。
            docNew.save(outputFile);
        }

本サンプルファイルは、評価版に同梱されています。

スペース
トップページサポートお問い合わせ会社案内
サイトマップ個人情報保護の考え方とお願い
Copyright Antenna House, Inc. All rights reserved.
Antenna House is a trademark of Antenna House, Inc.