如何将PDF合并到PDF包中?

时间:2012-03-23 02:55:40

标签: pdf itext

我正在寻找创建PDF包的功能:

Multiple PDFs packaged into one

该图显示了可从Adobe下载的免费adobe reader(duh!)。当我打开这个特定的PDF时,我惊讶于它具有所有这些布局,文件和附件功能。这绝对不是正常的“PDF合并”。它更像是一个包含多个PDF的包。

itextsharp可以这样做吗?此PDF功能的搜索词是什么?

2 个答案:

答案 0 :(得分:5)

您正在寻找的术语是PDF Portfolios。您可以使用iTextSharp创建这样的PDF。以下是iText book中的几个C#示例:

如果您选择下载KubrickMovies结果文件,请将扩展名更改为“.pdf”。刚刚注意到它 - 将在本周末尝试修复错误。

答案 1 :(得分:0)

以下是展示如何将文件附加到新PDF文件的简单示例:

using System.Diagnostics;
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;

namespace PDFAttachment
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var pdfDoc = new Document(PageSize.A4))
            {
                var pdfWriter = PdfWriter.GetInstance(pdfDoc, new FileStream("Test.pdf", FileMode.Create));               
                pdfDoc.Open();

                pdfDoc.Add(new Phrase("Test"));

                var filePath = @"C:\path\logo.png";
                var fileInfo = new FileInfo(filePath);
                var pdfDictionary = new PdfDictionary();
                pdfDictionary.Put(PdfName.MODDATE, new PdfDate(fileInfo.LastWriteTime));
                var fs = PdfFileSpecification.FileEmbedded(pdfWriter, filePath, fileInfo.Name, null, true, null, pdfDictionary);
                pdfWriter.AddFileAttachment("desc.", fs);
            }

            Process.Start("Test.pdf");
        }
    }
}

或现有的PDF文件:

using System.Diagnostics;
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;

namespace PDFAttachment
{
    class Program
    {
        static void Main(string[] args)
        {
            var reader = new PdfReader("Test.pdf");
            using (var stamper = new PdfStamper(reader, new FileStream("newTest.pdf", FileMode.Create)))
            {
                var filePath = @"C:\path\logo.png";
                addAttachment(stamper, filePath, "desc.");
                stamper.Close();
            }

            Process.Start("newTest.pdf");
        }

        private static void addAttachment(PdfStamper stamper, string filePath, string description)
        {
            var fileInfo = new FileInfo(filePath);
            var pdfDictionary = new PdfDictionary();
            pdfDictionary.Put(PdfName.MODDATE, new PdfDate(fileInfo.LastWriteTime));
            var pdfWriter = stamper.Writer;
            var fs = PdfFileSpecification.FileEmbedded(pdfWriter, filePath, fileInfo.Name, null, true, null, pdfDictionary);
            stamper.AddFileAttachment(description, fs);
        }
    }
}
相关问题