PDF边距是页面主要内容区域和页面边缘之间的距离。与Word页边距不同,PDF文档的页边距很难更改。因为Adobe没有提供操作页边距的直接方法。但是,您可以通过缩放页面内容来改变页边距。本文将介绍如何在不更改页面大小的情况下使用C#/VB.NET 代码调整PDF文档的页边距。
- 增加PDF文档的页边距
 - 缩短PDF文档的页边距
 
程序环境:
本次测试时,在程序中引入Free Spire.PDF.dll 文件。
方法1:
将Free Spire.PDF for .NET 下载到本地,解压,找到 BIN 文件夹下的 Spire.PDF.dll。然后在 Visual Studio 中打开“解决方案资源管理器”,鼠标右键点击“引用”,“添加引用”,将本地路径 BIN 文件夹下的 dll 文件添加引用至程序。
方法2::
通过NuGet安装。可通过以下 2 种方法安装:
1. 可以在 Visual Studio 中打开“解决方案资源管理器”,鼠标右键点击“引用”,“管理 NuGet 包”,然后搜索“Free Spire.PDF”,点击“安装”。等待程序安装完成。
2. 将以下内容复制到 PM 控制台安装。
Install-Package FreeSpire.PDF -Version 8.6.0
增加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
效果图

—本文完—










