AcroForm值压扁后失踪 [英] AcroForm values missing after flattening

查看:231
本文介绍了AcroForm值压扁后失踪的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我用的LibreOffice 4.1.3.2产生一个可填写的PDF:

I'm using LibreOffice 4.1.3.2 to produce a fillable PDF:


  1. 创建一个Writer文档

  2. 设置一些文本和测试领域

  3. 导出为PDF

与Acrobar阅读器打开PDF文件显示正确填写的PDF。结果
接下来,我用iTextSharp的5.4.5填写字段并保存扁平文件:

Opening pdf file with Acrobar Reader shows a correct fillable pdf.
Next I use iTextSharp 5.4.5 to fill fields and save flattened document:

var pdf = new PdfReader(srcFilename);
using (var fw = new FileStream(dstFilename, FileMode.Create))
{
    var stamper = new PdfStamper(pdf, fw);
    var f = stamper.AcroFields;

    f.SetField("field1", "John Doe");
    f.SetField("field2", "12/04/2013");
    stamper.FormFlattening = true;
    stamper.Close();
}
pdf.Close();

问题是,填充字段中的值完全新的文件消失!结果
我以为田均未发现或填充,但发现注释 stamper.FormFlattening = TRUE 字段值是否有保存的PDF !!结果
当然,我需要一个扁平的PDF ...

Problem is that filled fields values completely disappear in new document!
I thought fields were not found or filled, but discovered that commenting stamper.FormFlattening = true field values are there in saved pdf!!
Naturally I need a flattened pdf...

有没有解决这个?

推荐答案

在创建使用开放式办公形式,开放式办公室设置一个标志,告诉iText的不是创造亮相。如果你看一下 FillDataSheet 例如,你会看到我们有以下行覆盖此:

When creating a form using Open Office, Open Office sets a flag telling iText not to create appearances. If you look at the FillDataSheet example, you'll see that we override this with the following line:

fields.setGenerateAppearances(true);

在特定的C#代码段,这将是:

In your specific C# snippet, that would be:

f.GenerateAppearances = true;

设置字段前​​设置此值是非常重要或外观将不会创建。

It's important to set this value before setting the fields or the appearances won't be created.

这篇关于AcroForm值压扁后失踪的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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