How to flatten already filled out PDF form using iTextSharp

后端 未结 4 1778
清酒与你
清酒与你 2021-01-01 22:57

I\'m using iTextSharp to merge a number of pdf files together into a single file.

I\'m using method described in iTextSharp official tutorials, specifically here, wh

4条回答
  •  青春惊慌失措
    2021-01-01 23:31

    Just setting .FormFlattening on PdfStamper wasn't quite enough...I ended up using a PdfReader with byte array of file contents that i used to stamp/flatten the data to get the byte array of that to put in a new PdfReader. Below is how i did it. works great now.

     private void AppendPdfFile(FileDTO file, PdfContentByte cb, iTextSharp.text.Document printDocument, PdfWriter iwriter) 
      {
         var reader = new PdfReader(file.FileContents);
    
         if (reader.AcroForm != null)
            reader = new PdfReader(FlattenPdfFormToBytes(reader,file.FileID));
    
         AppendFilePages(reader, printDocument, iwriter, cb);
      }
    
      private byte[] FlattenPdfFormToBytes(PdfReader reader, Guid fileID)
      {
         var memStream = new MemoryStream();
         var stamper = new PdfStamper(reader, memStream) {FormFlattening = true};
         stamper.Close();
         return memStream.ToArray();
      }
    

提交回复
热议问题