はじめに
PDF のページ サイズの変更は、非常に一般的なニーズです。 たとえば、コンテンツのレイアウトに基づいてページ サイズをカスタマイズできます。 または、プリンターで使用する用紙サイズに合わせてページ サイズを変更します。 詳細なメソッドの紹介とコードは次のとおりです。
ツール
- Visual Studio 2022
- Free Spire.PDF for .NET
このライブラリは、無料でPDFァイルを作成、編集、変換することができますが、ページ数の制限があります。または、有料版の製品の無料トライアルを申し込むこともできます。
有料版 : Spire.PDF for .NET
インストール方法
- Free Spire.PDF for .NETをダウンロードします。
- Visual Studioで新しいプロジェクトを作成します。
- 「Solution Explorer」>「References」を右クリックし、「Add Reference」>「Browse」を選択します。
- BINフォルダ内のdllファイルを見つけて、「OK」をクリックします。
説明
- 最初に、元のPDF文書をロードするためにPdfDocumentオブジェクトを作成します。
- 新しいPDF文書を作成するために別のPdfDocumentオブジェクトを作成します。
- Spire.PDF for .NETではポンドを測定単位として使用するため、自作の用紙サイズをポンドに変換するためにPdfUnitConvertorクラスのConvertUnits()メソッドを使用する必要があります。
- その後、これらのサイズに基づいて、新しいPDFページのサイズとして使用するSizeFオブジェクトが作成されます。
- 元のPDF文書の各ページを反復処理し、それぞれについて次の操作が行われます。
- 新しいPDFファイルに、自作の用紙サイズの新しいページが追加されます。
- PdfTextLayoutオブジェクトが作成され、単一ページのレイアウトに設定されます。
- 元のPDF文書のページに基づいて、テンプレートが作成されます。
- PdfTemplateのDraw()メソッドを使用して、テンプレートを新しいPDFページに描画します。
- 最後に、結果の文書を保存します。
コード
C#
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;
namespace ChangePageSizeToCustomPaperSize
{
class Program
{
static void Main(string[] args)
{
//PdfDocumentインスタンスを初期化する
PdfDocument originPdf = new PdfDocument();
//元のPDFドキュメントをロードする
originPdf.LoadFromFile("Sample.pdf");
//新しいPDFドキュメントを作成する
PdfDocument newPdf = new PdfDocument();
// PdfUnitConvertorインスタンスを初期化する
PdfUnitConvertor unitCvtr = new PdfUnitConvertor();
//カスタムサイズ(インチ)をポイントに変換する
float width = unitCvtr.ConvertUnits(5f, PdfGraphicsUnit.Inch, PdfGraphicsUnit.Point);
float height = unitCvtr.ConvertUnits(5f, PdfGraphicsUnit.Inch, PdfGraphicsUnit.Point);
//カスタムサイズから新しいSizeFインスタンスを作成して、新しいPDFのページサイズとして使用する
SizeF size = new SizeF(width, height);
//元のPDFのページをループする
foreach (PdfPageBase page in originPdf.Pages)
{
//新しいPDFにカスタムサイズのページを追加する
PdfPageBase newPage = newPdf.Pages.Add(size, new PdfMargins(0));
//PdfTextLayoutインスタンスを初期化する
PdfTextLayout layout = new PdfTextLayout();
//テキストレイアウトを1ページに設定する(設定されていない場合、コンテンツはページサイズに合わせてスケールできません)
layout.Layout = PdfLayoutType.OnePage;
//元のPDFのページに基づいてテンプレートを作成する
PdfTemplate template = page.CreateTemplate();
//テンプレートを新しいPDFのページに描画する
template.Draw(newPage, new PointF(0, 0), layout);
}
//結果文書を保存する
newPdf.SaveToFile("Result.pdf");
}
}
}
VB.NET
Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Imports System.Drawing
Namespace ChangePageSizeToCustomPaperSize
Friend Class Program
Private Shared Sub Main(ByVal args As String())
' PdfDocumentインスタンスを初期化する
Dim originPdf As PdfDocument = New PdfDocument()
'元のPDFドキュメントをロードする
originPdf.LoadFromFile("Sample.pdf")
'新しいPDFドキュメントを作成する
Dim newPdf As PdfDocument = New PdfDocument()
' PdfUnitConvertorインスタンスを初期化する
Dim unitCvtr As PdfUnitConvertor = New PdfUnitConvertor()
'カスタムサイズ(インチ)をポイントに変換する
Dim width As Single = unitCvtr.ConvertUnits(5F, PdfGraphicsUnit.Inch, PdfGraphicsUnit.Point)
Dim height As Single = unitCvtr.ConvertUnits(5F, PdfGraphicsUnit.Inch, PdfGraphicsUnit.Point)
'カスタムサイズから新しいSizeFインスタンスを作成して、新しいPDFのページサイズとして使用する
Dim size As SizeF = New SizeF(width, height)
'元のPDFのページをループする
For Each page As PdfPageBase In originPdf.Pages
'新しいPDFにカスタムサイズのページを追加する
Dim newPage As PdfPageBase = newPdf.Pages.Add(size, New PdfMargins(0))
'PdfTextLayoutインスタンスを初期化する
Dim layout As PdfTextLayout = New PdfTextLayout()
'テキストレイアウトを1ページに設定する(設定されていない場合、コンテンツはページサイズに合わせてスケールできません)
layout.Layout = PdfLayoutType.OnePage
'元のPDFのページに基づいてテンプレートを作成する
Dim template As PdfTemplate = page.CreateTemplate()
'テンプレートを新しいPDFのページに描画する
template.Draw(newPage, New PointF(0, 0), layout)
Next
'結果文書を保存する
newPdf.SaveToFile("Result.pdf")
End Sub
End Class
End Namespace