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文档的页边距的更多相关文章

  1. C# 给现有PDF文档添加页眉、页脚

    概述 页眉页脚是一篇完整.精致的文档的重要组成部分.在页眉页脚处,可以呈现的内容很多,如公司名称.页码.工作表名.日期.图片,如LOGO.标记等.在之前的文章中介绍了如何通过新建一页空白PDF页来添加 ...

  2. ABBYY FineReader 15 如何为PDF文档添加页眉页脚

    页眉.页脚是文档页面顶部或底部重复出现的文本信息.很多用户会习惯在文档页面的顶部与底部区域添加页眉.页脚来展现页码.文档标题.作者姓名.品牌名称等附加信息.而ABBYY FineReader 15(W ...

  3. [开发笔记]-C#获取pdf文档的页数

    [操作pdf文档]之C#判断pdf文档的页数: /// <summary> /// 获取pdf文档的页数 /// </summary> /// <param name=& ...

  4. C#, VB.NET如何加密PDF文档

    在日常工作中,人们通常通过加密PDF文档的方式来保护PDF文档.不管是公司还是个人,使用PDF加密术来设置一些权限是必不可少的.为了使PDF文档既可读又不能被未授权的用户所更改,一份PDF文档往往需要 ...

  5. C# 利用itextsharp、Spire配合使用为pdf文档每页添加水印

    下载类库: 直接下载 引入类库 功能实现 using iTextSharp.text.pdf; using Spire.Pdf; using Spire.Pdf.Graphics; using Sys ...

  6. Java使用Flying Saucer实现HTML代码生成PDF文档

    1.需要的jar包:org.xhtmlrenderer.flying-saucer-pdf-itext5,Maven依赖如下: <dependency> <groupId>or ...

  7. 恶意PDF文档分析记录

    0x1 PDF是什么 PDF(便携式文件格式,Portable Document Format)是由Adobe Systems在1993年用於文件交换所发展出的文件格式. 因为PDF的文件格式性质广泛 ...

  8. [.NET开发] C# 合并、拆分PDF文档

    在整理文件时,将多个同类型文档合并是实现文档归类的有效方法,也便于文档管理或者文档传输.当然,也可以对一些比较大的文件进行拆分来获取自己想要的部分文档.可以任意地对文档进行合并.拆分无疑为我们了提供极 ...

  9. 如何通过Java应用程序压缩PDF文档

    PDF文档是我们日常办公中使用最频繁的文档格式.但因为大多数PDF文档都包含很多页面图像或大量图片,这就导致PDF文档过大,处理起来较为麻烦.PDF文件过大,就会导致传输或者下载的速度变慢,也会增加传 ...

  10. C# 给PDF文档设置过期时间

    我们可以给一些重要文档或者临时文件设置过期时间和过期信息提示来提醒读者或管理者文档的时效性,并及时对文档进行调整.更新等.下面,分享通过C#程序代码来给PDF文档设置过期时间的方法. 引入dll程序集 ...

随机推荐

  1. Python操作数据库读书笔记

    SQLite 简介 什么是 SQLite? SQLite是一个进程内的库,实现了自给自足的.无服务器的.零配置的.事务性的 SQL 数据库引擎.它是一个零配置的数据库,这意味着与其他数据库一样,您不需 ...

  2. CBV源码分析及模板语法之传值 过滤器 标签 继承 导入

    CBV的源码分析 # CBV的源码入口从哪里看呢? CBV的核心源码: return self.dispatch(request, *args, **kwargs) def dispatch(self ...

  3. 用友CELL

    Cell1.login('晋业软件','1101010373','1300-0616-0122-3005'); 下载地址: https://download.csdn.net/download/wil ...

  4. 解决Vue打包后背景图片路径错误问题(转)

    1.原因解析 当用vue-cli自动构建项目后,有两种运行方法,分别是: npm run dev : 提供一个开发的环境,自动热更新,资源使用绝对路径,所以可以正常看到背景图片. npm run bu ...

  5. UIPath踩坑记一开发环境检查

      第一步:设置--设计--关闭新项目使用新式体验   第二步:Uipath与浏览器的通信护展是否已安装,如果没有安装需要点击安装   第三步:浏览器中安装的扩展是否已经打开

  6. 联想拯救者R9000P风扇拉满加强散热的方法

    管软可以开野兽模式,但是风扇还不是最猛的.锻炼的时候为了保护硬件,牺牲风扇和噪音吧,方法如下:下载 RWEverything运行RW.exe点击笔记本图标+EC文字的图案 修改:B0+0D对应的数据, ...

  7. supervisor不一样的日志轮转

    出于项目需求,需要读取某个进程的最新日志,而这个进程刚好是supervisor管控. 很自然地我就想到了,根据日志的编辑时间排序,获取最新的日志文件. 然而,发现了奇怪的一幕: 发现什么没有? web ...

  8. FCARM - Output Name not specified, please check 'Options for Target - Utilit问题

    FCARM - Output Name not specified, please check 'Options for Target - Utilit问题 按照书上说明按步操作,但是书上是按照kei ...

  9. Python 3 os.walk读取指定文件路径后,打印路径参数为空

    今天有时间自己尝试了一下os.walk的小实验,结果出现了一个小问题:在交互模式下,运行我的python脚本,没有打印任何内容 返回去看一下test.py内容 返回去看一下文件路径是否正确: 看着好像 ...

  10. Django-5

    Django-5 1.Coookie 1.1 什么是cookie Cookie是储存在浏览器端的一小段文本数据(键值对). 被广泛用于在网站之间传输信息, 当您访问一个网站时,它会将一个Cookie发 ...