如何扁平化已经使用iTextSharp的填写PDF表单 [英] How to flatten already filled out PDF form using iTextSharp

查看:481
本文介绍了如何扁平化已经使用iTextSharp的填写PDF表单的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用iTextSharp的合并到一起了一批PDF文件转换为一个单一的文件。

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

我使用iTextSharp的描述方法官方教程的专这里,它通过通过PdfWriter和PdfImportedPage页合并文件页面。

I'm using method described in iTextSharp official tutorials, specifically here, which merges files page by page via PdfWriter and PdfImportedPage.

打开了一些我需要合并的文件都填写PDF表单并使用合并形式的数据丢失的这个方法。

Turns out some of the files I need to merge are filled out PDF Forms and using this method of merging form data is lost.

我已经看到的几个例子使用PdfStamper填写表格并压平他们。

I've see several examples of using PdfStamper to fill out forms and flatten them.

我找不到什么,就是击败已经填写PDF表格,并希望与其他文件进行合并的方式不保存它第一平整出来的版本。

What I can't find, is a way to flatten already filled out PDF Form and hopefully merge it with the other files without saving it flattened out version first.

感谢

推荐答案

刚设置.FormFlattening上PdfStamper是不太够......最后我用用,我用邮票/拼合的数据来获得的字节数组放入一个新的PdfReader文件内容字节数组PdfReader。下面是我做到了。现在工作很好。

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();
  }

这篇关于如何扁平化已经使用iTextSharp的填写PDF表单的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆