使用 ItextSharp 复制没有松散表单字段结构的 PDF

Copying PDF without loose form field structure with ItextSharp

我想要一个 pdf,保留一些页面,然后将它保存到另一个目的地而不丢失字段结构。

这里的代码非常适合复制:

string sourceFolder = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
        string sourceFile = Path.Combine(sourceFolder, "POMultiple.pdf");

        string fileName = @"C:\Users\MyUser\Desktop\POMultiple.pdf";
        byte[] file = System.IO.File.ReadAllBytes(fileName);

 public static void removePagesFromPdf(byte[] sourceFile, String destinationFile, params int[] pagesToKeep)
    {
        //Used to pull individual pages from our source
        PdfReader r = new PdfReader(sourceFile);
        //Create our destination file
        using (FileStream fs = new FileStream(destinationFile, FileMode.Create, FileAccess.Write, FileShare.None))
        {
            using (Document doc = new Document())
            {
                PdfWriter writer = PdfWriter.GetInstance(doc, fs);

                //Open the desitination for writing
                doc.Open();
                //Loop through each page that we want to keep
                foreach (int page in pagesToKeep)
                {
                    //Add a new blank page to destination document
                    doc.NewPage();
                    //Extract the given page from our reader and add it directly to the destination PDF
                    writer.DirectContent.AddTemplate(writer.GetImportedPage(r, page), 0, 0);

                }
                //Close our document
                doc.Close();
            }
        }
    }

但是当我在 acrobat reader 中打开 "TestOutput.pdf" 文件时,我的所有字段都是空的。

有帮助吗?

你需要这样的东西:

PdfReader reader = new PdfReader(sourceFile);
reader.SelectPages(2-4,8-9);
PdfStamper stp = new PdfStamper(reader, new FileStream(destinationFile, FileMode.Create));
stp.Close();
reader.Close();