如何通过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程序集 ...
随机推荐
- constexpr 和常量表达式
常量表达式(是const expression) 是指值不会改变并且在编译过程中就能得到计算结果的表达式.显然,字面值属于常量表达式,用常量 表达式初始化的const 对象也是常量表达式.后面将会提到 ...
- LeetCode 94. 二叉树的中序遍历()
原题解 题目 约束 题解 方法一 class Solution { public: void inorder(TreeNode* root, vector<int>& res) { ...
- Leecode 53.最大子数组和(Java 贪心算法、动态规划两种方法)
想法(没看解析之前想不出来) -----------------看了解析和答案 1.贪心算法,若当前元素的之前和<0,则丢弃当前元素之前的数列 设一个maxSum作为子序列最大和,一个sum ...
- idea开发使用外置tomcat配置
1. 添加依赖 <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId> ...
- 按正斜线输出M*N的矩阵
public static void outMatrix(int[][] array) { for(int row=0;row<array.length;row++) { int scolumn ...
- grpc - 使用
grpc 工具 BloomRPC GRPC - 使用 protobuf 定义protobuf,并将protobuf文件,通过java的plugin打包生成java-grpc相关文件.参照:grpc-p ...
- switch case return return 返回不了值的原因
我在页面写了一个ajax ,但是控制器 是 用switch case break 控制的控制器 , 我想 在case login 方法里 直接 return , 但是不好使 始终是 null , ...
- vivo全球商城:库存系统架构设计与实践
作者:vivo官网商城开发团队 - Xu Yi.Yan Chao 本文是vivo商城系列文章,主要介绍vivo商城库存系统发展历程.架构设计思路以及应对业务场景的实践. 一.业务背景 库存系统是电商商 ...
- CSS 基础属性篇组成及作用
#### 学习目标- css属性和属性值的定义- css文本属性- css列表属性- css背景属性- css边框属性- css浮动属性##### 一.css属性和属性值的定义>属性:属性是指定 ...
- DIYAUDIO LM3886空板、套件、成品机DIY
diyaudio 3886空板,3886纯后级功放板.最后三张图为成品板子演示图.正确安装后,没有底噪.大水塘电容直径最大35MM.本人已经用这快板子制作了多台成品机,用过的都说好!空板20元,全部1 ...