【问题标题】:Merge pdfs with NReco PdfGenerator使用 NReco PdfGenerator 合并 pdf
【发布时间】:2018-04-10 18:08:57
【问题描述】:

在 NReco 网站的功能部分,在示例列表中:有一行关于 MergePdf。 我查看了 API 参考并在 visualstudio 中使用了智能感知,但我找不到任何东西。

在通过邮件发送它们之前,我不想合并多个 pdf。 Pdf 是用 nreco wkhtmltopdf 生成的,具有不同的页眉和页脚,我无法在同一个生成中工作,所以我拆分了生成,现在我想再次合并 pdf。 还是我必须让另一个图书馆参与进来。

【问题讨论】:

    标签: pdf merge wkhtmltopdf nreco


    【解决方案1】:

    只是分享我最终得到的结果。至少现在。 这是对 iTextSharp 建议解决方案的修改。

    public static byte[] MergePdfs(IEnumerable<byte[]> pdfs)
        {
            using (var memoryStream = new MemoryStream())
            {
                var document = new Document(PageSize.A4);
                var writer = PdfWriter.GetInstance(document, memoryStream);
    
                document.Open();
                var writerDirectContent = writer.DirectContent;
    
                foreach (var pdf in pdfs)
                {
                    var pdfReader = new PdfReader(pdf);
                    var numberOfPages = pdfReader.NumberOfPages;
    
                    for (var currentPageNumber = 1; currentPageNumber <= numberOfPages; currentPageNumber++)
                    {
                        document.SetPageSize(PageSize.A4);
                        document.NewPage();
    
                        var page = writer.GetImportedPage(pdfReader, currentPageNumber);
                        writerDirectContent.AddTemplate(page, 1f, 0, 0, 1f, 0, 0);
                    }
                }
    
                document.Close();
    
                return memoryStream.ToArray();
            }
        }
    

    【讨论】:

    • 请务必将页面大小设置为当前页面,以处理旋转或不同大小的页面,而不会将其截断。 document.SetPageSize(pdfReader.GetPageSize(currentPageNumber));
    【解决方案2】:

    有两种方法可以实现您提到的目标:

    【讨论】:

    • 谢谢!过几天我看看。
    猜你喜欢
    • 2015-11-18
    • 1970-01-01
    • 2017-04-09
    • 2016-09-13
    • 2015-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-19
    相关资源
    最近更新 更多