如何将PDF合并到PDF组合中?

如何将PDF合并到PDF组合中?,pdf,itext,Pdf,Itext,我正在寻找创建PDF公文包的功能: 图中显示了可以从adobe下载的免费adobe reader(duh!)。当我打开这个特殊的PDF时,我很惊讶它有所有这些布局、文件和附件特性。这绝对不是正常的“PDF合并”。它更像是一个包含多个PDF的包 它能做到这一点吗?此PDF功能的搜索词是什么?以下是一个简单的示例,演示如何将文件附加到新的PDF文件: using System.Diagnostics; using System.IO; using iTextSharp.text; using iT

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

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


它能做到这一点吗?此PDF功能的搜索词是什么?

以下是一个简单的示例,演示如何将文件附加到新的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");
        }
    }
}
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);
        }
    }
}
或现有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");
        }
    }
}
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);
        }
    }
}

下面是一个简单的示例,演示如何将文件附加到新的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");
        }
    }
}
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);
        }
    }
}
或现有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");
        }
    }
}
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);
        }
    }
}

你要找的术语是。您可以使用iTextSharp创建这样的PDF。以下是来自以下网站的几个C#示例:


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

您要查找的术语是。您可以使用iTextSharp创建这样的PDF。以下是来自以下网站的几个C#示例:


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

Hi,这只会将文件作为附件添加(在我的OP图像的侧栏中),但不会添加到工具栏的“文件”下,因为我已经用红色标记。我需要它是在“文件”部分。这是一个“PDF档案袋”。欲了解更多信息,请阅读“iText-in-action,2nd-edtion”一书中的“16.2.4 PDF软件包、便携集或公文包”一节。您好,这只会将文件作为附件添加(在我的OP图像的侧栏中),但不会添加到工具栏中的“文件”下,因为我已用红色标记。我需要它是在“文件”部分。这是一个“PDF档案袋”。有关更多信息,请阅读“iText in action,2nd edtion”一书中的“16.2.4 PDF软件包、可移植集合或公文包”一节。为了避免每个人在单步执行代码时遇到麻烦,生成公文包的相关步骤包括(1)使用架构创建PdfCollection(2)创建PdfFileSpecification.FileEmbedded()如果参数fileDisplay包含扩展名为嵌入文件类型的文件名,否则包含的文件将显示为未知文件类型(3)创建一个将PdfCollectionItem添加到PdfFileSpecification以获取公文包窗格中的条目(2)使用PdfWriter.AddFileAttachment附加嵌入的文件。与往常一样,Adobe链接已损坏:-(@MartinSchröder-感谢您的提醒。:)链接已修复。为了避免每个人在逐步阅读代码时遇到麻烦,生成公文包的相关步骤包括(1)使用架构创建PdfCollection(2)创建PdfFileSpecification.FileEmbedded()文件如果参数fileDisplay包含扩展名为嵌入文件类型的文件名,否则包含的文件将显示为未知文件类型(3)创建一个将PdfCollectionItem添加到PdfFileSpecification以获取公文包窗格中的条目(2)使用PdfWriter.AddFileAttachment附加嵌入的文件。与往常一样,Adobe链接已损坏:-(@MartinSchröder-谢谢提醒。)链接已修复。