
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 -- 完了 --
処理前のページ一覧と処理後のページ一覧の比較です。処理後は縦向きページが横向きになっています。
