C#/VB.NET 合并PDF页面
本文以C#及vb.net代码为例介绍如何来实现合并PDF页面内容。本文中的合并并非将两个文档简单合并为一个文档,而是将多个页面内容合并到一个页面,目的是减少页面上的空白区域,使页面布局更为紧凑、合理。下面,将分别从两个示例来展示合并,即:
- 从两个PDF文档页面实现页面合并
- 在同一个PDF文档实现页面合并
【程序环境】
方法1
在程序中引入Spire.Pdf.dll文件;将 Free Spire.PDF for .NET下载到本地,解压,安装。安装完成后,找到安装路径下BIN文件夹中的Spire.Pdf.dll。然后在Visual Studio中打开“解决方案资源管理器”,鼠标右键点击“引用”,“添加引用”,将本地路径BIN文件夹下的dll文件添加引用至程序。
方法2
通过 NuGet 安装。可通过以下2种方法安装:
1. 可以在Visual Studio中打开“解决方案资源管理器”,鼠标右键点击“引用”,“管理NuGet包”,然后搜索“ Free Spire.PDF ”,点击“安装”。等待程序安装完成。
2. 将以下内容复制到PM控制台安装:
Install-Package FreeSpire.PDF -Version 8.2.0
【代码示例】
1.从两个PDF文档页面实现页面合并
(合并前)需要将文件1的内容合并到文件2的第二页空白处:
C#
- using Spire.Pdf;
- using Spire.Pdf.Graphics;
- using System.Drawing;
- namespace MergePages
- {
- class Program
- {
- static void Main(string[] args)
- {
- //加载两个PDF文档
- PdfDocument pdf1 = new PdfDocument();
- pdf1.LoadFromFile("test1.pdf");
- PdfDocument pdf2 = new PdfDocument();
- pdf2.LoadFromFile("test2.pdf");
- //创建模板
- PdfTemplate template = pdf1.Pages[0].CreateTemplate();
- //获取文档2中的第2页
- PdfPageBase page2 = pdf2.Pages[1];
- //设置透明度
- page2.Canvas.SetTransparency(1f, 1f, PdfBlendMode.Overlay);
- //在页面指定位置绘制模板
- page2.Canvas.DrawTemplate(template, new PointF(0, 300));
- //保存文档
- pdf2.SaveToFile("mergepages.pdf");
- }
- }
- }
合并后的效果:
VB.NET
- Imports Spire.Pdf
- Imports Spire.Pdf.Graphics
- Imports System.Drawing
- Namespace MergePages
- Class Program
- Private Shared Sub Main(args As String())
- '加载两个PDF文档
- Dim pdf1 As New PdfDocument()
- pdf1.LoadFromFile("test1.pdf")
- Dim pdf2 As New PdfDocument()
- pdf2.LoadFromFile("test2.pdf")
- '创建模板
- Dim template As PdfTemplate = pdf1.Pages(0).CreateTemplate()
- '获取文档2中的第2页
- Dim page2 As PdfPageBase = pdf2.Pages(1)
- '设置透明度
- page2.Canvas.SetTransparency(1F, 1F, PdfBlendMode.Overlay)
- '在页面指定位置绘制模板
- page2.Canvas.DrawTemplate(template, New PointF(0, 300))
- '保存文档
- pdf2.SaveToFile("mergepages.pdf")
- End Sub
- End Class
- End Namespace
2.在同一个PDF文档实现页面合并
(合并前)将同一个文档中,第2页中的内容绘制到第1页空白处,并删掉多余的空白页:
C#
- using Spire.Pdf;
- using Spire.Pdf.Graphics;
- using System.Drawing;
- namespace MergePage2
- {
- class Program
- {
- static void Main(string[] args)
- {
- //加载PDF文档
- PdfDocument pdf = new PdfDocument("sample.pdf");
- //创建模板
- PdfTemplate template = pdf.Pages[1].CreateTemplate();
- //获取第一个页面
- PdfPageBase page1 = pdf.Pages[0];
- //获取第二个页面
- PdfPageBase page2 = pdf.Pages[1];
- //设置透明度和重叠样式
- page2.Canvas.SetTransparency(1f, 1f, PdfBlendMode.Overlay);
- //将第二页中的内容绘制到第一页指定位置
- page1.Canvas.DrawTemplate(template, new PointF(0, 240));
- //删除第二页`
- pdf.Pages.RemoveAt(1);
- //保存文档
- pdf.SaveToFile("MergePage2.pdf",FileFormat.PDF);
- }
- }
- }
合并后的效果:
VB.NET
- Imports Spire.Pdf
- Imports Spire.Pdf.Graphics
- Imports System.Drawing
- Namespace MergePage2
- Class Program
- Private Shared Sub Main(args As String())
- '加载PDF文档
- Dim pdf As New PdfDocument("sample.pdf")
- '创建模板
- Dim template As PdfTemplate = pdf.Pages(1).CreateTemplate()
- '获取第一个页面
- Dim page1 As PdfPageBase = pdf.Pages(0)
- '获取第二个页面
- Dim page2 As PdfPageBase = pdf.Pages(1)
- '设置透明度和重叠样式
- page2.Canvas.SetTransparency(1F, 1F, PdfBlendMode.Overlay)
- '将第二页中的内容绘制到第一页指定位置
- page1.Canvas.DrawTemplate(template, New PointF(0, 240))
- '删除第二页`
- pdf.Pages.RemoveAt(1)
- '保存文档
- pdf.SaveToFile("MergePage2.pdf", FileFormat.PDF)
- End Sub
- End Class
- End Namespace
另推荐阅读:
—END—
C#/VB.NET 合并PDF页面的更多相关文章
- C# / VB.NET合并PDF指定页
在前面的文章中,我们已经知道如何合并.拆分多个PDF文件,在这篇文章中的合并.拆分PDF文档主要是以方便文档管理的目的来操作文档,在文档查阅.管理及存储上很方便实用.但是我们如果想要合并多个文档中的部 ...
- Linux下分割、合并PDF(pdftk),用于Linux系统的6款最佳PDF页面裁剪工具
Linux下分割.合并PDF(pdftk),用于Linux系统的6款最佳PDF页面裁剪工具 Linux下分割.合并PDF(pdftk) pdftk http://www.pdflabs.com/doc ...
- 在ABBYY中如何修正倾斜的PDF页面
作为一名文案工作者,每天都要跟各种PDF文件打交道,合同.报价单.协议书等等等,通常提供给客户的都是扫描之后的PDF文档,虽说都是机器扫描,但毕竟是人为放置的,难免位置放置不齐,导致扫描出来的文档出现 ...
- Aspose.Pdf合并PDF文件
使用Aspose.Pdf类库,有很多种方法可以合并PDF文件,这里简单介绍小生见到的几种: Doucment.Pages.Add PdfFileEditor.Append PdfFileEditor. ...
- pypdf2:下载Americanlife网页生成pdf合并pdf并添加书签
初步熟悉 安装 pip install pypdf2 合并并添加书签 #!/usr/bin/env python3.5 # -*- coding: utf-8 -*- # @Time : 2019/1 ...
- C#/VB.NET 设置PDF跨页表格重复显示表头行
在创建表格时,如果表格内容出现跨页显示的时候,默认情况下该表格的表头不会在下一页显示,在阅读体验上不是很好.下面分享一个方法如何在表格跨页时显示表格的表头内容,在C#中只需要简单使用方法grid.Re ...
- C# 复制PDF页面到另一个PDF文档
C# 复制PDF页面到另一个PDF文档 有时候我们可能有这样一个需求,那就是把PDF页面从一个PDF文档复制到另一个PDF文档中.由于PDF文档并不像word文档那样好编辑,因此复制也相对没有那么容易 ...
- java合并pdf
一.开发准备 下载pdfbox-app-1.7.1.jar包;下载地址:http://download.csdn.net/detail/yanning1314/4852276 二.简单小例子 在开发中 ...
- 合同主体列表添加两条合同主体,返回合并支付页面,支付总弹"请选择合同主体",删除后,竟然还能支付(改合并支付页面的字段状态)
bug描述: 操作步骤:1.进入"商标续展"产品详情页面,点击立即购买(数量设为2),进入合并订单界面,选择合同主体,点击全部,清空所有合同主体2.新建合同主体保存,设置该合同主体 ...
随机推荐
- Mosquitto安装和使用
Mosquitto是一个实现了MQTT3.1协议的代理服务器,由MQTT协议创始人之一的Andy Stanford-Clark开发,它为我们提供了非常棒的轻量级数据交换的解决方案. 下载地址是: ht ...
- Python - random库介绍
- 放大器(PA+LAN)在射频上的应用
转自 动手又动脑才会有创造 放大器,包括两种,PA与LAN,功率放大器(PA) 和低噪声放大器(LNA),在射频上,PA用于信号的输出放大,而LNA用天线端的输入放大,一般的,LAN会比PA的放大倍数 ...
- CSS 面试题总结
CSS 中类 (classes) 和 ID 的区别. 书写上的差别:class名用"."号开头来定义,id名用"#"号开头来定义: 优先级不同(权重不同) 调用 ...
- 实用的 CSS — 贝塞尔曲线(cubic-bezier)
欢迎移步我的博客阅读:<实用的 CSS - 贝塞尔曲线(cubic-bezier)> 前言 在了解 cubic-bezier 之前,你需要对 CSS3 中的动画效果有所认识,它是 anim ...
- CSS:两端对齐原理(text-align:justify)
我是一个小白我是一个小白我是一个小白喷我吧,哈哈 写样式的是时候经常会碰到字体两端对齐的效果,一般就网上找端css样式复制下就结束了,没有考虑过原理是啥贴下代码 <head> <me ...
- 动态规划 洛谷P4017 最大食物链计数——图上动态规划 拓扑排序
洛谷P4017 最大食物链计数 这是洛谷一题普及/提高-的题目,也是我第一次做的一题 图上动态规划/拓扑排序 ,我认为这题是很好的学习拓扑排序的题目. 在这题中,我学到了几个名词,入度,出度,及没有环 ...
- python正则表达式替换或去除指定字符
代码: import re regEx = "[\n""|]" # 去除字符串中的换行符.中文冒号.|,需要去除什么字符就在里面写什么字符 str= re.su ...
- Centos搭建 Docker 环境
搭建 Docker 环境 安装与配置 Docker 安装 Docker Docker 软件包已经包括在默认的 CentOS-Extras 软件源里.因此想要安装 docker,只需要运行下面的 yum ...
- Linux_文件传输工具_FileZilla
什么是FileZilla? FileZilla是一个免费开源的FTP软件,分为客户端版本和服务器版本,具备所有的FTP软件功能.可控性.有条理的界面和管理多站点的简化方式使得Filezilla客户端版 ...