チュートリアル

簡単にライブラリーを使用するためのチュートリアルコレクション

チュートリアル».NET»Spire.PDF for .NET»ページの設定»C#/VB.NET:PDF ページサイズを変更する方法
2022-11-09

C#/VB.NET:PDF ページサイズを変更する方法

何らかの理由で 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

C#/VB.NET:PDF ページサイズを変更する方法

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

C#/VB.NET:PDF ページサイズを変更する方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Read 2205 times