何らかの理由で PDF のページサイズを変更する必要がある場合があります。たとえば、印刷するファイルのページサイズとプリンタで使用する用紙サイズが異なります。この記事では、Spire.PDF for .NET を使用して、C# および VB.NET でプログラムによって PDF ページサイズを変更する方法を示します。
Spire.PDF for .NET をインストールします
まず、Spire.PDF for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。
PM> Install-Package Spire.PDF
PDF ページサイズを標準の用紙サイズに変更する
PDF ファイルのページサイズを変更する方法は、新しい PDF ファイルを作成し、必要なサイズのページを追加することです。次に、元の PDF ファイルのページに基づいてテンプレートを作成し、新しい PDF ファイルのページにテンプレートを描画します。この方法では、元の PDF ファイルのテキスト、画像、その他の要素が保持されます。
Spire.PDF for .NET は、letter、legal、A0、A1、A2、A3、A4、B0、B1、B2、B3、B4 など、さまざまな標準用紙サイズをサポートしています。以下に詳細な操作手順を示します。
- PdfDocument インスタンスを初期化し、PdfDocument.LoadFromFile() メソッドを使用して元の PDF ファイルをロードします。
- 別の PdfDocument インスタンスを初期化し、新しい PDF ファイルを作成します。
- 元の PDF のページをループします。
- PdfDocument.Pages.Add() メソッドを使用して、必要なサイズのページを新しい PDF ファイルに追加します。
- PdfTextLayout インスタンスを初期化し、PdfTextLayout.Layout プロパティでテキストレイアウトを1ページに設定します。
- PdfPageBase.CreateTemplate() メソッドを使用して、元の PDF 内のページに基づいてテンプレートを作成します。
- PdfTemplate.Draw() メソッドを使用して、指定したテキストレイアウトを持つ新しい PDF ファイルのページにテンプレートを描画します。
- PdfDocument.SaveToFile() メソッドを使用して結果ファイルを保存します。
- C#
- VB.NET
using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;
namespace ChangePageSizeToStandardPaperSize
{
class Program
{
static void Main(string[] args)
{
//PdfDocumentインスタンスを初期化する
PdfDocument originPdf = new PdfDocument();
//元のPDFドキュメントをロードする
originPdf.LoadFromFile("Sample.pdf");
//新しいPDFドキュメントを作成する
PdfDocument newPdf = new PdfDocument();
//元のPDFのページをループする
foreach(PdfPageBase page in originPdf.Pages)
{
//A 1サイズのページを新しいPDFに追加する
PdfPageBase newPage = newPdf.Pages.Add(PdfPageSize.A1, 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("ChangePageSizeToA1.pdf");
}
}
}
Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Imports System.Drawing
Namespace ChangePageSizeToStandardPaperSize
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()
'元のPDFのページをループする
For Each page As PdfPageBase In originPdf.Pages
'A 1サイズのページを新しいPDFに追加する
Dim newPage As PdfPageBase = newPdf.Pages.Add(PdfPageSize.A1, 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("ChangePageSizeToA1.pdf")
End Sub
End Class
End Namespace
PDF ページサイズをカスタム用紙サイズに変更する
Spire.PDF for .NET は、測定単位としてポイント(1/72インチ)を使用します。PDF のページサイズをインチやミリメートルなどの他の単位のカスタム用紙サイズに変更する必要がある場合は、PdfUnitConvertor クラスを使用してポイントに変換できます。
以下に詳細な操作手順を示します。
- PdfDocument インスタンスを初期化し、PdfDocument.LoadFromFile() メソッドを使用して元の PDF ファイルをロードします。
- 別のPdfDocument インスタンスを初期化して、新しい PDF ファイルを作成します。
- PdfUnitConvertor インスタンスを初期化し、PdfUnitConvertor.ConvertUnits() メソッドを使用してインチ単位のカスタムサイズをポイントに変換します。
- SizeF インスタンスをカスタムサイズから初期化します。
- 元の PDF のページをループします。
- PdfDocument.Pages.Add() メソッドを使用して、新しい PDF ファイルにカスタムサイズのページを追加します。
- PdfTextLayout インスタンスを初期化し、PdfTextLayout.Layout プロパティでテキストレイアウトを1ページに設定します。
- PdfPageBase.CreateTemplate() メソッドを使用して、元の PDF のページからテンプレートを作成します。
- PdfTemplate.Draw() メソッドを使用して、指定したテキストレイアウトを持つ新しい PDF ファイルのページにテンプレートを描画します。
- PdfDocument.SaveToFile() メソッドを使用して結果ファイルを保存します。
- C#
- VB.NET
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(6.5f, PdfGraphicsUnit.Inch, PdfGraphicsUnit.Point);
float height = unitCvtr.ConvertUnits(8.5f, PdfGraphicsUnit.Inch, PdfGraphicsUnit.Point);
//カスタムサイズから新しいSizeFインスタンスを作成して、新しいPDFのページサイズとして使用する
SizeF size = new SizeF(width, height);
//元のPDFのページをループする
foreach (PdfPageBase page in originPdf.Pages)
{
//新しいPDFにカスタムサイズ(6.5*8.5インチ)のページを追加する
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("ChangePageSizeToCustomSize.pdf");
}
}
}
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(6.5F, PdfGraphicsUnit.Inch, PdfGraphicsUnit.Point)
Dim height As Single = unitCvtr.ConvertUnits(8.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にカスタムサイズ(6.5*8.5インチ)のページを追加する
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("ChangePageSizeToCustomSize.pdf")
End Sub
End Class
End Namespace
一時ライセンスを申請する
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。