如何通过C#/VB.NET 代码调整PDF文档的页边距
阅读原文时间:2023年07月09日阅读:1

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

效果图

—本文完—