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. __declspec(dllimport) 和 __declspec(dllexport)的使用详解、以及 XX_API 的含义

    1. C++代码里调用别人的库.或者写库给别人用.大概有如下的方法(只讨论windows系统的情况): ---- a) 提供头文件 h . 静态库 lib  -- > 静态链接 ---- b) ...

  2. 【ES6】迭代器

    简介 在 JavaScript 中,迭代器是一个对象,它定义一个序列,并在终止时可能返回一个返回值. 更具体地说,迭代器是通过使用 next() 方法实现迭代器协议的任何一个对象,该方法返回具有两个属 ...

  3. @DeclareParents声明对象的AOP

    今天在使用@DeclareParents时,使用AspectJ拓展对象的接口 public interface Encoreable { void nextPerformance(); } @Comp ...

  4. webpack 3/4踩坑,我太难了,从安装、卸载、到使用,各相应的版本号,sass-loader报错-版本的原因,webpack -v 不识别,没卸载干净

     -先说卸载: wabpack@4对应的每个插件的版本号都在最后 1 全局安装的话,npm uninstall webpack -g 有时候并不能卸载干净, 2 webpack -v 可判断是否安装成 ...

  5. dubbo服务多网卡IP问题

    起因 更换电脑,dubbo服务不能调试,win7电脑好使,win10不行 分析 经过调试发现注册的ip地址,不是VPN分配的地址,多方面查找资料说ip排序的问题,尝试一下方法: 网络连接重新命名成一样 ...

  6. axios的cancelToken

    参考的博客地址 核心代码 import axios from 'axios' // Base64可自行安装依赖或实现 import Base64 from './Base64' class Pendi ...

  7. 记一次yapi部署过程

    一.为什么用yapi yapi基于文档注释生成,没有代码的入侵. 同一个工程的接口文档可以导出多个项目中,分权限查看. 可以本地化部署,统一的接口文档,支持其他的文档接入. 有idea插件支持,自动导 ...

  8. [RoarCTF 2019]Easy Calc 1

    进入主页面是一个计算器,可以计算 右键源代码发现提示信息,javascript脚本,其中还有calc.php文件 注释说明了这里引入了waf 尝试访问calc.php 是一道命令执行,尝试输入phpi ...

  9. 【LeetCode997】【哈希表】[Py/C#/Scala/Elixir/Kotlin/Rust/Ruby/Swift/PHP/Java/Go/C++/TS/Erlang/Racket/Dart] 一道统计入度出度的简单题目

    可以看到,一般而言,Python最接近"想思路时写的伪代码" 目录 解题思路 代码 python3 C# scala elixir kotlin rust ruby swift p ...

  10. SpringBoot---起步依赖starter

    1.简化spring应用的初始搭建和开发过程. springboot程序优点:自动配置.起步依赖(简化依赖配置).辅助功能(内置服务器...) <?xml version="1.0&q ...