C#实现PDF页面合并的示例代码

目录
  • 程序环境
  • 代码示例
    • 1.从两个PDF文档页面实现页面合并
    • 2.在同一个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

到此这篇关于C#实现PDF页面合并的示例代码的文章就介绍到这了,更多相关C# PDF页面合并内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C#利用itext实现PDF页面处理与切分

    目录 一.itext 二.处理PDF页面大小一致 三.切分PDF 一.itext 我要使用itext做一个pdf的页面大小一致性处理,然后再根据数据切分出需要的pdf. iText的官网有关于它的介绍, 然后在官网可以查找api文档. 其中我要使用的是itext7+,主要在iText.Kernel.Pdf 命名空间下. 二.处理PDF页面大小一致 由于原始PDF 是扫描图片合成来的,有些页面扫描的图片规格不一致,导致pdf阅读性很差. 对于这个pdf我进行处理,首先是在nuget 里面搜索 it

  • C#合并多种格式文件为PDF的方法

    文档合并是一种高效文档处理方式.如果能够有一个方法能将多种不同类型的文档合并成一种文档格式,那么在文档存储管理上将为我们提供极大的便利.因此,本篇文章介绍了一种如何使用免费组件Free Spire.Office for .NET来实现将多种各式的文档合并为PDF的方法.本方法中可合并的文档格式可以是doc.docx.xls.xlsx.pdf等.下面将进行详细阐述. 使用方法:安装Free Spire.Office for .NET后,添加引用spire.doc.dll, spire.xls.dl

  • C#/VB.NET实现将XML转为PDF

    目录 引入dll 方法1 方法2 将XML转为PDF C# VB.NET 补充 可扩展标记语言(XML)文件是一种标准的文本文件,它使用特定的标记来描述文档的结构以及其他特性.通过将XML转换为PDF,能够便于文件传输及共享.本文,将介绍通过C#及VB.NET代码来实现该格式转换的方法. 引入dll 方法1 在程序中引入Spire.Doc.dll文件:将 Free Spire.Doc for .NET 下载到本地,解压,找到BIN文件夹下的Spire.Doc.dll.然后在Visual Stud

  • C# 如何合并和拆分PDF文件

    一.合并和拆分PDF文件的方式 PDF文件使用了工业标准的压缩算法,易于传输与储存.它还是页独立的,一个PDF文件包含一个或多个"页",可以单独处理各页,特别适合多处理器系统的工作.PDF文件结构主要可以分为四个部分:首部.文件体.交叉引用表.尾部.PDF操作类库非常多,如下图所示,常用的类库有:Spire.Pdf.iTextSharp. 二.使用 Spire.Pdf 合并和拆分PDF文件 使用 Nuget 添加Spire.Pdf 类库,然后添加如下代码: /// <summar

  • C#/VB.NET 实现彩色PDF转为灰度PDF

    目录 配置程序环境 转彩色PDF为灰度 转换结果 补充 本文以C#代码为例介绍如何实现将彩色PDF文件转为灰度(黑白)的PDF文件,即 将PDF文档里面的彩色图片或者文字等通过调用PdfGrayConverter.ToGrayPdf()方法转为文档页面为灰色调.无彩色效果的文档.下面的程序运行环境及代码示例. 配置程序环境 Visual Studio 2017 .Net Framework 4.6.1 Spire.PDF for .NET 关于如何引入dll文件: 1.通过NuGet安装dll(

  • C#实现合并及拆分PDF文件的方法

    有时我们可能会遇到下图这样一种情况 - 我们需要的资料或教程被分成了几部分存放在多个PDF文件中,不管是阅读还是保存都不是很方便,这时我们肯定想要把这些PDF文件合并为一个PDF文件.相对应的,有时候我们也需要拆分一个大的PDF文件,来从中获取我们需要的那一部分资料.这篇文章主要分享如何使用C#来将多个PDF文件合并为一个PDF文件以及将一个PDF文件拆分为多个PDF文件. 合并PDF文件 合并PDF文件的代码很简单,主要分为三步,首先获取需要合并的PDF文件,然后调用public static

  • C#实现PDF页面合并的示例代码

    目录 程序环境 代码示例 1.从两个PDF文档页面实现页面合并 2.在同一个PDF文档实现页面合并 本文以C#及vb.net代码为例介绍如何来实现合并PDF页面内容.本文中的合并并非将两个文档简单合并为一个文档,而是将多个页面内容合并到一个页面,目的是减少页面上的空白区域,使页面布局更为紧凑.合理.下面,将分别从两个示例来展示合并,即: 从两个PDF文档页面实现页面合并 在同一个PDF文档实现页面合并 程序环境 方法1 在程序中引入Spire.Pdf.dll文件:将 Free Spire.PDF

  • Qt 使用Poppler实现pdf阅读器的示例代码

    开发环境 Qt5.5.1.Qt Creator 3.5.1 Qt实现pdf阅读器和MFC实现pdf阅读器,其实原理都是差不多的. 需要用到Poppler开源库,下载地址如下 https://poppler.freedesktop.org/ 如果只是要在window的gcc下运行的话,可以下载已经编译好的库 https://sourceforge.net/projects/poppler-win32/ 注意:这个是MinGW版本的Qt,也就是运行在GCC环境下的库,里面只包含 *.dll 和 *.

  • Android 实现无网络页面切换的示例代码

    本文介绍了Android 实现无网络页面切换的示例代码,分享给大家,具体如下: 实现思路 需求是在无网络的时候显示特定的页面,想到要替换页面的地方,大多都是recyclerview或者第三方recyclerview这种需要显示数据的地方,因此决定替换掉页面中所有的recyclerview为无网络页面 实现过程 1 在BaseActivity中,当加载布局成功以后,通过id找到要替换的view,通过indexOfChild()方法,找到要替换的view的位置,再通过remove和add view来

  • django js实现部分页面刷新的示例代码

    例子中,我用的是显示机器上的进程信息的表格,获取不同的机器的进程信息时,更新这个展示信息的表格,如下: 当我在输入框中输入ip时,我希望只是更新这个表格,页面其他部分不变,实现方式如下: 1.在原页面中设置这个表格的id为pstable <table class="table table-striped" id="pstable"> <thead> <tr> <th>user</th> <th>

  • keep-Alive搭配vue-router实现缓存页面效果的示例代码

    Vue工程中有些页面需要有缓存.这个功能通过keep-alive组件实现,keep-alive组件可以使被包含的组件保留状态,或避免重新渲染. 在routes.js中定义路由,在路由中定义元信息(meta字段),需要缓存的页面就需要在meta对象中定义一个字段,这里设置为keepAlive,设置为true,反之,则不缓存. { path: '/a', component: () => import('@/pages/A'), meta: { title:'A', keepAlive: true

  • vue移动端项目中如何实现页面缓存的示例代码

    背景 在移动端中,页面跳转之间的缓存是必备的一个需求. 例如:首页=>列表页=>详情页. 从首页进入列表页,列表页需要刷新,而从详情页返回列表页,列表页则需要保持页面缓存. 对于首页,一般我们都会让其一直保持缓存的状态. 对于详情页,不管从哪个入口进入,都会让其重新刷新. 实现思路 说到页面缓存,在vue中那就不得不提keep-alive组件了,keep-alive提供了路由缓存功能,本文主要基于它和vuex来实现应用里的页面跳转缓存. vuex里维护一个数组cachePages,用以保存当前

  • Pyqt5设置返回键和跳转页面键的示例代码

    例子一 import sys from PyQt5.QtWidgets import QMainWindow, QPushButton, QApplication class First(QMainWindow): def __init__(self): super().__init__() self.initUI() def initUI(self): self.btn = QPushButton("进入页面2", self) self.btn.move(30, 50) self.s

  • Python实现为PDF去除水印的示例代码

    目录 前言 原理 特色 成果 安装依赖 代码 想法 前言 为什么做出这个? 就是有时候从网上下载的资料中的pdf有水印,看着不舒服. 比如说我从网上下载的试卷,然后去打印店打印,打印之后水印看着很不舒服,而去水印wps要会员,而我是一个程序员,为什么不做一个呢,何乐而不为. 虽然最后是做出来的,但是还是有限制. 原理 把pdf转化为图片,然后将图片去水印. 图片去水印,是又条件限制的,必须水印的颜色和pdf中文字的颜色的rgb相差很大,然后把水印的颜色改变成背景颜色. 特色 网上很多和我类似的原

  • Java实现PDF转Word的示例代码(无水印无页数限制)

    目录 一.前言 二.jar破解 1.项目远程仓库配置 2.pom文件引入相关依赖 3.破解代码 三.pdf转word 一.前言 学习概述:简单的介绍一下本篇文章要讲解的Java知识点 学习目标:读者读完这篇文章之后,你希望他掌握你讲解的哪些重要的知识点 二.jar破解 1.项目远程仓库配置 aspose-pdf 这个需要配置单独的仓库地址才能下载,不会配置的可以去官网直接下载jar引入项目代码中. <repositories> <repository> <id>Aspo

  • pandas实现数据合并的示例代码

    目录 一. concat--数据合并 1.1 概述 1.2 指定合并的轴方向--axis 1.3 指定合并轴另外一个轴标签是否合并--join 1.4 指定合并轴原标签是否需要变化--ignore_index 1.5 指定合并轴方向新的index,便于区分数据--keys 1.6 指定合并轴方向新的index 的含义名称,一般和keys一起使用,让合并后的数据更直观--names 1.7 指定合并时是否允许合并轴上有重复标签--verify_integrity 二. merge--数据连接 2.

随机推荐