A4縦とA4横のページが混在したPDF文書のページの向きを回転ページの向きをA4横に揃えます。
各ページの幅と高さを取得して、
ページの高さ>ページの幅 => A4縦
ページの幅>ページの高さ => A4横
と判別し、その後、A4縦となっている部分を90度回転して、A4横に揃えます。
この例では次の機能を使っています。
package cookbook; import jp.co.antenna.ptl.*; public class RotatePage { /** * @param args the command line arguments */ public static void main(String[] args) { if (args.length < 3) { System.out.println("usage: java RotatePage in-pdf-file out-pdf-file 回転方向"); System.out.println("回転方向:\n 0: 右に回転させて合わせる 1: 左に回転させて合わせる"); return; } String rotateDirection = args[2]; switch (rotateDirection) { case "0": case "1": break; default: System.err.println("回転方向を正しく指定してください。"); System.err.println("usage: java RotatePage in-pdf-file out-pdf-file 回転方向"); System.err.println("回転方向:\n 0: 右に回転させて合わせる 1: 左に回転させて合わせる"); return; } ...【AppendPages.javaと同じ処理のため省略 ・PtlParamInputを用いてPtlPDFDocument docに入力PDFをロード ・PtlParamOutputを用いて出力PDF名を指定】... ...【RemovePages.javaと同じ処理のため省略 ・doc.getPages()メソッドを用いてPtlPages pagesにページコンテナを取得 ・ページコンテナが空だった場合にエラーを出力して終了】... int numPages = doc.getPageCount(); for(int i = 0; i < numPages; i++) { try (PtlPage page = pages.get(i); //ページオブジェクトの取得 PtlSize sizeOfPage = page.getSize()) //ページサイズの取得 { float width = sizeOfPage.getWidth(); float height = sizeOfPage.getHeight(); //回転させるかどうかを判定(仮) //縦の方が横より長いもの(縦長のもの)を回転させる if(height > width) { // 回転角度設定(0, 90, 180, 270) switch (rotateDirection) { case "0": page.setRotate(90); break; case "1": page.setRotate(270); break; } } } } } ...【AppendPages.javaと同じ処理のため省略 ・PtlParamOutputを用いてPtlPDFDocument docの内容を出力 ・PtlException, Exception, Error を catchするエラー処理 ・finally文で"--完了--"と表示する処理】... } }
RotatePage.java
C:\samples>java cookbook.RotatePage usage: java RotatePage in-pdf-file out-pdf-file 回転方向 回転方向: 0: 右に回転させて合わせる 1: 左に回転させて合わせる C:\samples>java cookbook.RotatePage sample1.pdf sample-rotated.pdf 0 -- 完了 --
処理前のページ一覧と処理後のページ一覧の比較です。処理後は縦向きページが横向きになっています。