如何通过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
效果图

缩小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文档的页边距的更多相关文章
- C# 给现有PDF文档添加页眉、页脚
概述 页眉页脚是一篇完整.精致的文档的重要组成部分.在页眉页脚处,可以呈现的内容很多,如公司名称.页码.工作表名.日期.图片,如LOGO.标记等.在之前的文章中介绍了如何通过新建一页空白PDF页来添加 ...
- ABBYY FineReader 15 如何为PDF文档添加页眉页脚
页眉.页脚是文档页面顶部或底部重复出现的文本信息.很多用户会习惯在文档页面的顶部与底部区域添加页眉.页脚来展现页码.文档标题.作者姓名.品牌名称等附加信息.而ABBYY FineReader 15(W ...
- [开发笔记]-C#获取pdf文档的页数
[操作pdf文档]之C#判断pdf文档的页数: /// <summary> /// 获取pdf文档的页数 /// </summary> /// <param name=& ...
- C#, VB.NET如何加密PDF文档
在日常工作中,人们通常通过加密PDF文档的方式来保护PDF文档.不管是公司还是个人,使用PDF加密术来设置一些权限是必不可少的.为了使PDF文档既可读又不能被未授权的用户所更改,一份PDF文档往往需要 ...
- C# 利用itextsharp、Spire配合使用为pdf文档每页添加水印
下载类库: 直接下载 引入类库 功能实现 using iTextSharp.text.pdf; using Spire.Pdf; using Spire.Pdf.Graphics; using Sys ...
- Java使用Flying Saucer实现HTML代码生成PDF文档
1.需要的jar包:org.xhtmlrenderer.flying-saucer-pdf-itext5,Maven依赖如下: <dependency> <groupId>or ...
- 恶意PDF文档分析记录
0x1 PDF是什么 PDF(便携式文件格式,Portable Document Format)是由Adobe Systems在1993年用於文件交换所发展出的文件格式. 因为PDF的文件格式性质广泛 ...
- [.NET开发] C# 合并、拆分PDF文档
在整理文件时,将多个同类型文档合并是实现文档归类的有效方法,也便于文档管理或者文档传输.当然,也可以对一些比较大的文件进行拆分来获取自己想要的部分文档.可以任意地对文档进行合并.拆分无疑为我们了提供极 ...
- 如何通过Java应用程序压缩PDF文档
PDF文档是我们日常办公中使用最频繁的文档格式.但因为大多数PDF文档都包含很多页面图像或大量图片,这就导致PDF文档过大,处理起来较为麻烦.PDF文件过大,就会导致传输或者下载的速度变慢,也会增加传 ...
- C# 给PDF文档设置过期时间
我们可以给一些重要文档或者临时文件设置过期时间和过期信息提示来提醒读者或管理者文档的时效性,并及时对文档进行调整.更新等.下面,分享通过C#程序代码来给PDF文档设置过期时间的方法. 引入dll程序集 ...
随机推荐
- JavaScript数组常用的方法总结
数组常用方法 concat() 方法 concat() 方法用于连接两个或多个数组. 该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本. var arr = new Array(3) arr ...
- 服务器中VirtualBox子网访问
本人常用的虚拟机软件是VirtualBox,由于笔记本性能,磁盘存储大下限制,以及VirtualBox客户机无法在多个设备间直接方便的使用等原因,我把几个虚拟的系统全部移动到便携式服务器中. 移动之后 ...
- 软件工程日报——第十天(Android 开发中的异常处理问题)
Android 开发中的异常处理问题 在代码的编写工作当中,我们会遇到很多有关错误处理的内容.这个时候,你用的最多的应该是try-catch-finally,这样的句式.系统提供的这个句式极大方便我们 ...
- HTML-CSS常用代码
注释标签:对代码进行说明<!-- 单行注释,也可以对多行文字进行注释 -->常用格式标签<b>加粗</b> <i>斜体</i> <u& ...
- ASP.NET Core - 配置系统之配置提供程序
3. 配置提供程序 上面提到,通过 IConfigurationBuilder 的实现类对象,我们可以自由地往配置系统中添加不同的配置提供程序,从而获取不同来源的配置信息..NET Core 中,微软 ...
- 痞子衡嵌入式:盘点国内RISC-V内核MCU厂商(2018年发布产品)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是国内RISC-V内核MCU厂商(2018). 虽然RISC-V风潮已经吹了好几年,但2019年才是其真正进入主流市场的元年,最近国内大量 ...
- day02-容器功能
容器功能 1.Spring注入组件的注解 Spring中的传统注解@Component.@Controller.@Service.@Repository,在SpringBoot中仍然有效. 2.@Co ...
- MySQL学习(十)索引
1.索引的种类 聚簇索引,非聚簇索引 主键索引,唯一索引,普通索引(前缀索引),全文索引 单值索引,复合索引 二级索引 覆盖索引 1.1 聚簇索引,非聚簇索引 参考文档: https://www.cn ...
- Jan Ozer:高清直播互动场景下的硬编码如何选型?
前言 高清直播逐渐普及,硬编码也成为大势所趋.在 RTE 2022 大会上,来自 NETINT 的 Jan Ozer 通过一系列的对比测试结果,详细分享了如何为高清直播互动场景进行硬编码的技术选型. ...
- ArgoCD实践之基于配置清单创建Application
1. 什么是Application ArgoCD的两个核心概念为Application和Project,他们可分别基于Application CRD和AppProject CRD创建; 核心组件: A ...