0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

C#/VB.NETでPDFのページサイズを変更する

Posted at

はじめに

PDF のページ サイズの変更は、非常に一般的なニーズです。 たとえば、コンテンツのレイアウトに基づいてページ サイズをカスタマイズできます。 または、プリンターで使用する用紙サイズに合わせてページ サイズを変更します。 詳細なメソッドの紹介とコードは次のとおりです。

ツール

このライブラリは、無料でPDFァイルを作成、編集、変換することができますが、ページ数の制限があります。または、有料版の製品の無料トライアルを申し込むこともできます。

有料版 : Spire.PDF for .NET

インストール方法

  1. Free Spire.PDF for .NETをダウンロードします。
  2. Visual Studioで新しいプロジェクトを作成します。
  3. 「Solution Explorer」>「References」を右クリックし、「Add Reference」>「Browse」を選択します。
  4. BINフォルダ内のdllファイルを見つけて、「OK」をクリックします。

説明

  1. 最初に、元のPDF文書をロードするためにPdfDocumentオブジェクトを作成します。
  2. 新しいPDF文書を作成するために別のPdfDocumentオブジェクトを作成します。
  3. Spire.PDF for .NETではポンドを測定単位として使用するため、自作の用紙サイズをポンドに変換するためにPdfUnitConvertorクラスのConvertUnits()メソッドを使用する必要があります。
  4. その後、これらのサイズに基づいて、新しいPDFページのサイズとして使用するSizeFオブジェクトが作成されます。
  5. 元のPDF文書の各ページを反復処理し、それぞれについて次の操作が行われます。
  6. 新しいPDFファイルに、自作の用紙サイズの新しいページが追加されます。
  7. PdfTextLayoutオブジェクトが作成され、単一ページのレイアウトに設定されます。
  8. 元のPDF文書のページに基づいて、テンプレートが作成されます。
  9. PdfTemplateのDraw()メソッドを使用して、テンプレートを新しいPDFページに描画します。
  10. 最後に、結果の文書を保存します。

コード

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

2024-02-08_115434.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?