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

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日

相关文章

  • .NET5控制台程序使用EF连接MYSQL数据库的方法

    下面是详细讲解“.NET5控制台程序使用EF连接MYSQL数据库的方法”的完整攻略: 准备工作 确认已经安装.NET5、EF(Core)等必要的环境和工具。 安装Pomelo.EntityFrameworkCore.MySql(用于支持EF连接MYSQL数据库的驱动程序)。 创建控制台程序 使用dotnet命令行工具创建一个新的.NET5控制台程序: dot…

    C# 2023年5月31日
    00
  • .NET Core控制台应用程序如何使用异步(Async)Main方法详解

    下面我就为你详细讲解“.NETCore控制台应用程序如何使用异步(Async)Main方法”的完整攻略。 什么是异步(Async)Main方法 在.NET 5中,我们可以使用异步(async)修饰控制台应用程序的Main方法,使得我们可以在控制台应用程序中使用异步编程的方式。异步Main方法是一个Task<int>类型的方法,它返回一个整数作为退…

    C# 2023年5月15日
    00
  • ASP.NET Core项目结构教程(4)

    ASP.NET Core项目结构教程(4) 在ASP.NET Core应用程序中,项目结构是非常重要的。本攻略将介绍ASP.NET Core应用程序的项目结构,并提供两个示例说明。 1. 项目结构 ASP.NET Core应用程序的项目结构如下: MyApplication/ ├── Controllers/ │ ├── HomeController.cs …

    C# 2023年5月16日
    00
  • asp.net中oracle 存储过程(图文)

    下面我将详细讲解“ASP.NET 中 Oracle 存储过程”的完整攻略。 一、背景介绍 在使用ASP.NET框架进行Web应用程序开发的过程中,我们通常需要调用Oracle数据库的存储过程来获取数据或者对数据进行修改操作。而存储过程相比于单纯的SQL语句执行,能更好地提高数据库性能,同时还能提高代码实现的安全性。 因此,掌握ASP.NET中Oracle存储…

    C# 2023年6月3日
    00
  • C# websocket及时通信协议的实现方法示例

    下面我们详细讲解“C# WebSocket及时通信协议的实现方法示例”的完整攻略。 1. WebSocket 协议介绍 WebSocket 协议是一种在单个 TCP 连接上进行全双工通信的协议,它可以在客户端和服务器之间建立持久性的连接,以支持双向实时消息传递。它可以通过 HTTP/1.1 中的 Upgrade 头字段和 Connection 头字段来进行开…

    C# 2023年6月7日
    00
  • C#中string与byte[]的转换帮助类-.NET教程,C#语言

    先解释一下为什么需要在C#中进行string与byte[]的相互转换。在计算机处理数据的过程中,大多数情况下使用的数据存储类型都是二进制的byte[],而我们通常所使用的字符类型是字符串string。因此在传输数据,保存数据等操作时,需要进行两种类型之间的转换。 string与byte[]相互转换的方法。在C#中,我们可以使用Encoding类提供的Enco…

    C# 2023年6月8日
    00
  • C#实现求一组数据众数的方法

    要实现求一组数据的众数,可以采用以下步骤: 步骤一:读入数据 首先要将一组数据读入程序中,可以使用数组、列表等数据结构来存储数据。 示例代码: int[] data = { 2, 3, 2, 4, 5, 2, 1 }; 步骤二:找出出现次数最多的数 通过遍历数组或列表,统计每个数出现的次数,并记录出现次数最多的数。 示例代码: int maxCount = …

    C# 2023年6月7日
    00
  • 关于C#中使用Oracle存储过程返回结果集的问题

    下面是关于C#中使用Oracle存储过程返回结果集的完整攻略: 1. 确认Oracle版本和驱动版本 首先需要确认你所使用的Oracle版本和ODP.NET驱动版本是否匹配,可以从Oracle官网下载适合于自己Oracle版本的ODP.NET驱动,然后在项目中引用。 2. 编写Oracle存储过程 在Oracle中编写存储过程需要使用PL/SQL语言,在存储…

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