• C# 复制PDF页面到另一个PDF文档


    C# 复制PDF页面到另一个PDF文档

    有时候我们可能有这样一个需求,那就是把PDF页面从一个PDF文档复制到另一个PDF文档中。由于PDF文档并不像word文档那样好编辑,因此复制也相对没有那么容易。写这篇文章主要是分享一个简单而且比较容易实现的方法 - 使用C#将一个PDF文档的页面,包括文字、图片和背景等复制到另一个PDF文档的指定位置。

    下面是我准备的两个PDF文件:

                           

    目标:将左边的PDF文档的第一页复制到右边的PDF文档的第二页的位置。

    代码实现:

    步骤1初始化一个PdfDocument类的对象doc1并加载第一个PDF文档。

    PdfDocument doc1 = new PdfDocument();
    doc1.LoadFromFile("童话故事.pdf");

    步骤2初始化一个PdfDocument类的对象doc2并加载第二个PDF文档。

    PdfDocument doc2 = new PdfDocument();
    doc2.LoadFromFile("各种点心的做法.pdf");

    步骤3获取第一个PDF文档的第一页以及它的页面大小,并基于第一页创建一个PDF模板。

    PdfPageBase page = doc1.Pages[0];
    SizeF size = page.Size;
    PdfTemplate template = page.CreateTemplate();

    步骤4复制第一个PDF文档的第一页到第二个PDF文档中。

    调用Insert(int index, SizeF size, PdfMargins margins)方法,在第二个PDF文档中,插入一个和第一页大小一致的新页面到该文档的指定位置(这里是第二页),然后将步骤3中创建的模板应用到该页面。

    doc2.Pages.Insert(1, size, new PdfMargins(0, 0));
    doc2.Pages[1].Canvas.DrawTemplate(template, new PointF(0, 0));

    如果要将第一页复制到第二个文档的最后一页,请用以下代码来添加一个新页面到第二个文档的末尾,然后再将模板应用到该页面。

    doc2.Pages.Add(size, new PdfMargins(0, 0));

    步骤5保存文件并重新打开。

    doc2.SaveToFile("复制.pdf");
    System.Diagnostics.Process.Start("复制.pdf");

    复制后的效果:

     

    全部代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Spire.Pdf;
    using Spire.Pdf.Graphics;
    using System.Drawing;
     
    namespace 复制PDF页面到另一个PDF文档
    {
        class Program
        {
            static void Main(string[] args)
            {
                PdfDocument doc1 = new PdfDocument();
                doc1.LoadFromFile("童话故事.pdf");
    
                PdfDocument doc2 = new PdfDocument();
                doc2.LoadFromFile("各种点心的做法.pdf");
    
                PdfPageBase page = doc1.Pages[0];
                SizeF size = page.Size;
                PdfTemplate template = page.CreateTemplate();
    
                doc2.Pages.Insert(1, size, new PdfMargins(0, 0));
                doc2.Pages[1].Canvas.DrawTemplate(template, new PointF(0, 0));
    
                doc2.SaveToFile("复制.pdf");
                System.Diagnostics.Process.Start("复制.pdf");
            }
        }
    }

    Note在这里我借助的是第三方软件Spire.PDF,如果你的PDF文档不超过10页,可以去CodePlex上下载使用它的免费版本

    感谢您的阅读!

  • 相关阅读:
    matplotlib 进阶之origin and extent in imshow
    Momentum and NAG
    matplotlib 进阶之Tight Layout guide
    matplotlib 进阶之Constrained Layout Guide
    matplotlib 进阶之Customizing Figure Layouts Using GridSpec and Other Functions
    matplotlb 进阶之Styling with cycler
    matplotlib 进阶之Legend guide
    Django Admin Cookbook-10如何启用对计算字段的过滤
    Django Admin Cookbook-9如何启用对计算字段的排序
    Django Admin Cookbook-8如何在Django admin中优化查询
  • 原文地址:https://www.cnblogs.com/Yesi/p/5477980.html
Copyright © 2020-2023  润新知