何らかの理由で PDF のページサイズを変更する必要がある場合があります。たとえば、印刷するファイルのページサイズとプリンタで使用する用紙サイズが異なります。この記事では、Spire.PDF for Java を使用して PDF ページサイズを変更する方法を紹介します。
Spire.PDF for Java をインストールします
まず、Spire.PDF for Java を Java プロジェクトに追加する必要があります。JAR ファイルは、このリンクからダウンロードできます。Maven を使用する場合は、次のコードをプロジェクトの pom.xml ファイルに追加する必要があります。
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url> https://repo.e-iceblue.com/nexus/content/groups/public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.pdf</artifactId>
<version>8.11.8</version>
</dependency>
</dependencies>
PDF ページサイズを標準の用紙サイズに変更する
PDF ファイルのページサイズを変更する方法は、新しい PDF ファイルを作成し、必要なサイズのページを追加することです。次に、元の PDF ファイルのページに基づいてテンプレートを作成し、新しい PDF ファイルのページにテンプレートを描画します。この方法では、元の PDF ファイルのテキスト、画像、その他の要素が保持されます。
Spire.PDF for Java は、letter、legal、A0、A1、A2、A3、A4、B0、B1、B2、B3、B4 など、さまざまな標準用紙サイズをサポートしています。以下に詳細な操作手順を示します。
- PdfDocument インスタンスを初期化し、PdfDocument.loadFromFile() メソッドを使用して元の PDF ファイルをロードします。
- 別のPdfDocument インスタンスを初期化し、新しいPDFファイルを作成します。
- 元のPDFのページをループします。
- PdfDocument.getPages().add() メソッドを使用して、必要なサイズのページを新しい PDF ファイルに追加します。
- PdfTextLayout インスタンスを初期化し、PdfTextLayout.setLayout() メソッドを使用して、テキストレイアウトを1ページに設定します。
- PdfPageBase.createTemplate() メソッドを使用して、元の PDF 内のページに基づいてテンプレートを作成します。
- PdfTemplate.draw() メソッドを使用して、指定したテキストレイアウトを持つ新しい PDF ファイルのページにテンプレートを描画します。
- PdfDocument.saveToFile() メソッドを使用して結果文書を保存します。
- Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.PdfPageSize;
import com.spire.pdf.graphics.*;
import java.awt.geom.Point2D;
public class ChangePageSizeToStandardPaperSize {
public static void main(String []args){
//PdfDocumentインスタンスを初期化する
PdfDocument originPdf = new PdfDocument();
originPdf.loadFromFile("Sample.pdf");
//新しいPDFドキュメントを作成する
PdfDocument newPdf = new PdfDocument();
//元のPDFのページをループする
for(int i = 0; i< originPdf.getPages().getCount(); i++)
{
//A 1サイズのページを新しいPDFに追加する
PdfPageBase newPage = newPdf.getPages().add(PdfPageSize.A1, new PdfMargins((0)));
//PdfTextLayoutインスタンスを作成する
PdfTextLayout layout = new PdfTextLayout();
//テキストレイアウトを1ページに設定する(設定されていない場合、コンテンツはページサイズに合わせてスケールできません)
layout.setLayout(PdfLayoutType.One_Page);
//元のPDFのページに基づいてテンプレートを作成する
PdfTemplate template = originPdf.getPages().get(i).createTemplate();
//テンプレートを新しいPDFのページに描画する
template.draw(newPage, new Point2D.Float(0,0), layout);
}
//結果文書を保存する
newPdf.saveToFile("ChangePageSizeToA1.pdf");
}
}
PDF ページサイズをカスタム用紙サイズに変更する
Spire.PDF for Java は、測定単位としてポイント(1/72インチ)を使用します。PDF のページサイズをインチやミリメートルなどの他の単位のカスタム用紙サイズに変更する必要がある場合は、PdfUnitConvertor クラスを使用してポイントに変換できます。
以下に詳細な操作手順を示します。
- PdfDocument インスタンスを初期化し、PdfDocument.loadFromFile() メソッドを使用して元の PDF ファイルをロードします。
- 別の PdfDocument インスタンスを初期化して、新しい PDF ファイルを作成します。
- PdfUnitConvertor インスタンスを初期化し、PdfUnitConvertor.convertUnits() メソッドを使用してインチ単位のカスタムサイズをポイントに変換します。
- Dimension2D インスタンスをカスタムサイズから初期化します。
- 元の PDF のページをループします。
- PdfDocument.getPages().add() メソッドを使用して、新しい PDF ファイルにカスタムサイズのページを追加します。
- PdfTextLayout インスタンスを初期化し、PdfTextLayout.setLayout() メソッドを使用して、テキストレイアウトを1ページに設定します。
- PdfPageBase.createTemplate() メソッドを使用して、元の PDF 内のページに基づいてテンプレートを作成します。
- PdfTemplate.draw() メソッドを使用して、指定したテキストレイアウトを持つ新しい PDF ファイルのページにテンプレートを描画します。
- PdfDocument.saveToFile() メソッドを使用して結果文書を保存します。
- Java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.*;
import java.awt.*;
import java.awt.geom.Dimension2D;
import java.awt.geom.Point2D;
public class ChangePageSizeToCustomPaperSize {
public static void main(String []args){
//PdfDocumentインスタンスを初期化する
PdfDocument originPdf = new PdfDocument();
originPdf.loadFromFile("Sample.pdf");
//新しいPDFドキュメントを作成する
PdfDocument newPdf = new PdfDocument();
//PdfUnitConvertorインスタンスを作成する
PdfUnitConvertor unitCvtr = new PdfUnitConvertor();
//カスタムサイズ(インチ)をポイントに変換する
float width = unitCvtr.convertUnits(6.5f, PdfGraphicsUnit.Inch, PdfGraphicsUnit.Point);
float height = unitCvtr.convertUnits(8.5f, PdfGraphicsUnit.Inch, PdfGraphicsUnit.Point);
//カスタムサイズからDimension 2 Dインスタンスを作成し、新しいPDFのページサイズとして使用する
Dimension2D size = new Dimension();
size.setSize(width, height);
//元のPDFのページをループする
for(int i = 0; i< originPdf.getPages().getCount(); i++)
{
//新しいPDFにカスタムサイズ(6.5*8.5インチ)のページを追加する
PdfPageBase newPage = newPdf.getPages().add(size, new PdfMargins((0)));
//PdfTextLayoutインスタンスを初期化する
PdfTextLayout layout = new PdfTextLayout();
//テキストレイアウトを1ページに設定する(設定されていない場合、コンテンツはページサイズに合わせてスケールできません)
layout.setLayout(PdfLayoutType.One_Page);
//元のPDFのページに基づいてテンプレートを作成する
PdfTemplate template = originPdf.getPages().get(i).createTemplate();
//テンプレートを新しいPDFのページに描画する
template.draw(newPage, new Point2D.Float(0,0), layout);
}
//結果文書を保存する
newPdf.saveToFile("ChangePageSizeToCustomSize.pdf");
}
}
一時ライセンスを申請する
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。