Windows phone 7 Itextsharp似乎在填写pdf表单后破坏了它;在AdobeReaderforWP7中打开的问题

Windows phone 7 Itextsharp似乎在填写pdf表单后破坏了它;在AdobeReaderforWP7中打开的问题,windows-phone-7,itextsharp,acrobat,Windows Phone 7,Itextsharp,Acrobat,我正在尝试从asp.net C#应用程序动态生成pdf表单。生成表单并通过电子邮件发送给某些用户。人们已经能够在AdobeReader上打开它好几个月了 最近,有人要求用户能够在手机上阅读这些pdf附件。不幸的是,当这些人试图在手机上打开PDF时,会显示“打开文档时出错” 我试着在我的wp7手机上打开原始表单,结果它成功了 我向一个免费的pdf/a验证服务发送了一份无法工作的pdf的副本。服务返回时显示以下消息: 加载文件失败:不正确的“startxref”引用 这让我觉得问题在于Adobe R

我正在尝试从asp.net C#应用程序动态生成pdf表单。生成表单并通过电子邮件发送给某些用户。人们已经能够在AdobeReader上打开它好几个月了

最近,有人要求用户能够在手机上阅读这些pdf附件。不幸的是,当这些人试图在手机上打开PDF时,会显示“打开文档时出错”

我试着在我的wp7手机上打开原始表单,结果它成功了

我向一个免费的pdf/a验证服务发送了一份无法工作的pdf的副本。服务返回时显示以下消息:

加载文件失败:不正确的“startxref”引用

这让我觉得问题在于Adobe Reader在打开文档时正在重建文档中的一些元数据/索引。因为大多数人都有速度快的机器,重建这些指数所花费的时间可以忽略不计。但据我所知,手机版本没有这个功能,因此它正在读取xstartref并失败

以下是我的应用程序中似乎正在生成损坏文件的代码:

File.Copy(original, newpath);
FileStream fs = new FileStream(newpath, FileMode.Open);
PdfReader r = new PdfReader(fs);
PdfStamper stamper = new PdfStamper(r, fs);            
AcroFields af = stamper.AcroFields;

af.SetField("Event", ef.eName); af.SetField("EventType", ef.EventType);
af.SetField("eStartDate", ef.eStartDate);
af.SetField("eStartTime",ef.eStartTime);


stamper.FormFlattening = true;
stamper.FreeTextFlattening = true;
stamper.Close();

r.Close();
fs.Close();

我做错了什么?我读过,如果不正确关闭流、stamp和pdfreader,可能会造成麻烦。但我想我已经把它关好了。我忽略了什么?

您应该将
PdfReader
绑定到源文档,将
PdfStamper
绑定到目标文档

//Get rid of the below line completely
//File.Copy(original, newpath);
FileStream fs = new FileStream(newpath, FileMode.Open);
PdfReader r = new PdfReader(original);
PdfStamper stamper = new PdfStamper(r, fs);

否则,您在写入文档的同时读取文档,这不是一个好主意。

您应该将
PdfReader
绑定到源文档,将
PdfStamper
绑定到目标文档

//Get rid of the below line completely
//File.Copy(original, newpath);
FileStream fs = new FileStream(newpath, FileMode.Open);
PdfReader r = new PdfReader(original);
PdfStamper stamper = new PdfStamper(r, fs);

否则,你在写文档的同时阅读文档,这不是一个好主意。

谢谢克里斯!我想我并没有真正想清楚pdfstamper和pdfreader在做什么…现在我想起来了。用这些话来说,事情真的很清楚。再次感谢!谢谢你,克里斯!我想我并没有真正想清楚pdfstamper和pdfreader在做什么…现在我想起来了。用这些话来说,事情真的很清楚。再次感谢!