如何通过C#/VB.NET 代码调整PDF文档的页边距

yizhihongxing

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

效果图

如何通过C#/VB.NET 代码调整PDF文档的页边距

缩小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

效果图

如何通过C#/VB.NET 代码调整PDF文档的页边距

—本文完—

 

原文链接:https://www.cnblogs.com/Carina-baby/p/17358256.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何通过C#/VB.NET 代码调整PDF文档的页边距 - Python技术站

(0)
上一篇 2023年5月4日
下一篇 2023年5月5日

相关文章

  • asp.net 数字签名实例代码

    为了实现数字签名,我们需要使用ASP.NET自带的RSACryptoServiceProvider类。该类可以生成密钥对,对消息进行数字签名,以及验证数字签名。下面是实现数字签名的详细步骤: 步骤一:生成密钥对 首先,我们需要生成一个RSA密钥对,用于数字签名。我们可以使用以下代码生成密钥对: // 创建一个RSA实例 using (var rsa = ne…

    C# 2023年5月31日
    00
  • Asp.NET Core 限流控制(AspNetCoreRateLimit)的实现

    Asp.NET Core 限流控制(AspNetCoreRateLimit)的实现 AspNetCoreRateLimit是一个基于ASP.NET Core的限流控制库,可以帮助我们在ASP.NET Core应用程序中实现限流控制。在本攻略中,我们将介绍如何使用AspNetCoreRateLimit来实现限流控制,并提供两个示例说明。 准备工作 在使用Asp…

    C# 2023年5月16日
    00
  • C#实现远程连接ORACLE数据库的方法

    下面将为您详细讲解C#实现远程连接ORACLE数据库的方法及过程。 准备工作 在使用C#实现远程连接ORACLE数据库之前,我们需要准备相应的环境和工具,包括: 安装ORACLE数据库 下载安装Oracle Client和ODP.NET 使用Visual Studio创建C#项目 连接ORACLE数据库 在开始连接ORACLE数据库之前,我们需要先在项目中添…

    C# 2023年6月2日
    00
  • C#判断本地文件是否处于打开状态的方法

    首先,我们需要明确一下什么是“本地文件处于打开状态”。通常情况下,当一个程序打开一个文件时,该文件就会被锁定,此时其他程序无法访问该文件。因此,我们在判断一个本地文件是否处于打开状态时,实际上就是判断该文件是否被其他程序锁定了。 以下是两种判断本地文件是否处于打开状态的方法: 方法一:使用try-catch语句 我们可以使用try-catch语句来判断一个本…

    C# 2023年6月1日
    00
  • C#中FileSystemWatcher的使用教程

    我将详细讲解如何使用C#中的FileSystemWatcher来监听文件系统的改变。本教程将包含以下内容: 简介:FileSystemWatcher是什么以及如何使用它 监听文件夹和文件变化的方式 示例说明 1. 简介 FileSystemWatcher是.NET Framework中的一个类,它以异步的方式监听文件和目录的变化。它可以监控以下变化: 文件或…

    C# 2023年5月31日
    00
  • C# 设置Chart的X轴为时间轴​​​​​​​详情

    下面我为您详细讲解一下“C# 设置Chart的X轴为时间轴”的完整攻略,过程中包含两条示例。 前置知识 在了解如何设置Chart的X轴为时间轴之前,您需要掌握以下知识: C#语言基础 Chart控件使用基础 时间格式化 设定X轴为时间轴 Chart控件中的轴(Axis)类物件,其中有多种轴如X轴、Y轴以及二级轴等等,而控制X轴显示类型的属性有AxisType…

    C# 2023年5月15日
    00
  • C#基于SQLiteHelper类似SqlHelper类实现存取Sqlite数据库的方法

    一、背景介绍SQLite是一个轻量级的关系型数据库,具有体积小,速度快,操作简便,易于集成等优点,在嵌入式设备,移动设备及桌面应用程序等方面得到广泛使用。C#语言作为一个跨平台的编程语言,在各个领域的应用也十分广泛,同时也提供了SQLite数据库的连接方式,提供SQLite连接C#的API。虽然C#提供了一些SQLite的API,但是操作SQLite数据库仍…

    C# 2023年5月31日
    00
  • c#基于Redis实现轻量级消息组件的步骤

    C#是一种面向对象的编程语言,Redis是一个基于内存,可持续化的Key-Value存储系统。结合两者可以实现一个轻量级的消息组件,下面是实现步骤: 1. 安装Redis 可以从官网下载Redis并安装,或者通过命令行sudo apt-get install redis-server安装。 2. 安装StackExchange.Redis 在Visual S…

    C# 2023年5月31日
    00
合作推广
合作推广
分享本页
返回顶部