如何通過C#/VB.NET 程式碼調整PDF檔案的頁邊距

2023-04-27 12:00:45

PDF邊距是頁面主要內容區域和頁面邊緣之間的距離。與Word頁邊距不同,PDF檔案的頁邊距很難更改。因為Adobe沒有提供操作頁邊距的直接方法。但是,您可以通過縮放頁面內容來改變頁邊距。本文將介紹如何在不更改頁面大小的情況下使用C#/VB.NET 程式碼調整PDF檔案的頁邊距。

  • 增加PDF檔案的頁邊距
  • 縮短PDF檔案的頁邊距

增加PDF檔案的頁邊距

擴大PDF檔案邊距的方法是新建一個頁面尺寸更大的PDF,然後在大頁面的合適位置繪製源頁面。以下是增加 PDF 檔案邊距的步驟。
  • 初始化PdfDocument物件。
  • 建立另一個PdfDocument物件,該物件用於建立頁面尺寸更大的新PDF檔案。
  • 設定邊距的增加值。
  • 計算新PDF檔案的頁面大小。
  • 迴圈遍歷原始檔案中的頁面,並使用PdfPageBase.CreateTemplate() 方法基於特定頁面建立模板。
  • 使用PdfDocument.Pages.Add() 方法將頁面新增到新的PDF檔案中。
  • 使用PdfTemplate.Draw() 方法在頁面上的座標(0,0)處繪製模板。
  • 使用PdfDocument.SaveToFile()方法將新的PDF檔案儲存到檔案中。

完整程式碼

C#

using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;

namespace IncreaseMargins
{
    class Program
    {
        static void Main(string[] args)
        {
            //載入原始PDF檔案
            PdfDocument originalPdf = new PdfDocument("極晝極夜是怎麼形成的.pdf");

            //獲取第一頁
            PdfPageBase firstPage = originalPdf.Pages[0];

            //建立新的PdfDocument物件
            PdfDocument newPdf = new PdfDocument();

            //設定邊距的增加值
            PdfMargins margins = newPdf.PageSettings.Margins;
            margins.Top = 40;
            margins.Bottom = 40;
            margins.Left = 40;
            margins.Right = 40;

            //計算新頁面大小
            SizeF sizeF = new SizeF(firstPage.Size.Width + margins.Left + margins.Right, firstPage.Size.Height + margins.Top + margins.Bottom);

            //迴圈遍歷原始檔案中的頁面
            for (int i = 0; i < originalPdf.Pages.Count; i++)
            {
                //基於特定頁面建立模板
                PdfTemplate pdfTemplate = originalPdf.Pages[i].CreateTemplate();

                //將頁面新增到新的PDF
                PdfPageBase page = newPdf.Pages.Add(sizeF);

                //在頁面上繪製模板
                pdfTemplate.Draw(page, 0, 0);
            }

            //儲存新檔案
            newPdf.SaveToFile("增加頁邊距.pdf", FileFormat.PDF);
        }
    }
}

VB.NET

Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Imports System.Drawing

Namespace IncreaseMargins
    Friend Class Program
        Private Shared Sub Main(ByVal args As String())
            '載入原始PDF檔案
            Dim originalPdf As PdfDocument = New PdfDocument("極晝極夜是怎麼形成的.pdf")

            '獲取第一頁
            Dim firstPage As PdfPageBase = originalPdf.Pages(0)

            '建立新的PdfDocument物件
            Dim newPdf As PdfDocument = New PdfDocument()

            '設定邊距的增加值
            Dim margins As PdfMargins = newPdf.PageSettings.Margins
            margins.Top = 40
            margins.Bottom = 40
            margins.Left = 40
            margins.Right = 40

            '計算新頁面大小
            Dim sizeF As SizeF = New SizeF(firstPage.Size.Width + margins.Left + margins.Right, firstPage.Size.Height + margins.Top + margins.Bottom)

            '迴圈遍歷原始檔案中的頁面
            For i As Integer = 0 To originalPdf.Pages.Count - 1
                '基於特定頁面建立模板
                Dim pdfTemplate As PdfTemplate = originalPdf.Pages(i).CreateTemplate()

                '將頁面新增到新的PDF
                Dim page As PdfPageBase = newPdf.Pages.Add(sizeF)

                '在頁面上繪製模板
                pdfTemplate.Draw(page, 0, 0)
            Next

            '儲存新檔案
            newPdf.SaveToFile("增加頁邊距.pdf", FileFormat.PDF)
        End Sub
    End Class
End Namespace

效果圖

縮小PDF檔案的頁邊距

縮小PDF 邊距的方法是新建一個頁面尺寸較小的PDF,然後在指定座標的小頁面上繪製源頁面。以下是使用 Spire.PDF for .NET 縮小 PDF 檔案邊距的步驟。

  • 在初始化PdfDocument物件時載入原始PDF檔案。
  • 建立另一個PdfDocument物件,該物件用於建立頁面尺寸較小的新PDF檔案。
  • 設定邊距的減少值。
  • 計算新PDF檔案的頁面大小。
  • 迴圈遍歷原始檔案中的頁面,並使用PdfPageBase.CreateTemplate() 方法基於特定頁面建立模板。
  • 使用PdfDocument.Pages.Add() 方法將頁面新增到新的PDF檔案中。
  • 使用PdfTemplate.Draw() 方法在頁面上的指定座標處繪製模板。
  • 使用PdfDocument.SaveToFile() 方法將新的PDF檔案儲存到檔案中。

完整程式碼

C#

using Spire.Pdf;
using Spire.Pdf.Graphics;
using System.Drawing;

namespace DecreaseMargins
{
    class Program
    {
        static void Main(string[] args)
        {
            //載入原始PDF檔案
            PdfDocument originalPdf = new PdfDocument("極晝極夜是怎麼形成的.pdf");

            //獲取第一頁
            PdfPageBase firstPage = originalPdf.Pages[0];

            //建立新的PdfDocument物件
            PdfDocument newPdf = new PdfDocument();

            //設定邊距的減少值
            float left = -20;
            float right = -20;
            float top = -20;
            float bottom = -20;

            //計算新頁面大小
            SizeF sizeF = new SizeF(firstPage.Size.Width + left + right, firstPage.Size.Height + top + bottom);

            //迴圈遍歷原始檔案中的頁面
            for (int i = 0; i < originalPdf.Pages.Count; i++)
            {
                //基於特定頁面建立模板
                PdfTemplate pdfTemplate = originalPdf.Pages[i].CreateTemplate();

                //將頁面新增到新的PDF
                PdfPageBase page = newPdf.Pages.Add(sizeF, new PdfMargins(0));

                //在頁面上繪製模板
                pdfTemplate.Draw(page, left, top);
            }

            //儲存新檔案
            newPdf.SaveToFile("縮小頁邊距.pdf", FileFormat.PDF);
        }
    }
}

VB.NET

Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Imports System.Drawing

Namespace DecreaseMargins
    Friend Class Program
        Private Shared Sub Main(ByVal args As String())
            '載入原始PDF檔案
            Dim originalPdf As PdfDocument = New PdfDocument("極晝極夜是怎麼形成的.pdf")

            '獲取第一頁
            Dim firstPage As PdfPageBase = originalPdf.Pages(0)

            '建立新的PdfDocument物件
            Dim newPdf As PdfDocument = New PdfDocument()

            '設定邊距的減少值
            Dim left As Single = -20
            Dim right As Single = -20
            Dim top As Single = -20
            Dim bottom As Single = -20

            '計算新頁面大小
            Dim sizeF As SizeF = New SizeF(firstPage.Size.Width + left + right, firstPage.Size.Height + top + bottom)

            '迴圈遍歷原始檔案中的頁面
            For i As Integer = 0 To originalPdf.Pages.Count - 1
                '基於特定頁面建立模板
                Dim pdfTemplate As PdfTemplate = originalPdf.Pages(i).CreateTemplate()

                '將頁面新增到新的PDF
                Dim page As PdfPageBase = newPdf.Pages.Add(sizeF, New PdfMargins(0))

                '在頁面上繪製模板
                pdfTemplate.Draw(page, left, top)
            Next

            '儲存新檔案
            newPdf.SaveToFile("縮小頁邊距.pdf", FileFormat.PDF)
        End Sub
    End Class
End Namespace

效果圖

—本文完—