当前位置: 首页 > 编程语言 > C#

iTextSharp正在生成一个损坏的PDF分享

时间:2023-04-10 17:11:36 C#

C#学习教程:iTextSharp正在生成损坏的PDFmergedDocument基于我使用Word创建的PDF文件,完成的文档完全以编程方式生成。代码“有效”是因为它没有抛出异常。为什么iTextSharp会创建损坏的PDF?byte[]completedDocument=null;使用(MemoryStreamstreamCompleted=newMemoryStream()){使用(Documentdocument=newDocument()){PdfCopycopy=newPdfCopy(document,streamCompleted);文档.Open();复制.打开();foreach(varitemineventItems){byte[]mergedDocument=null;PdfReader阅读器=newPdfReader(pdfTemplates[item.DataTokens[NotifyTokenType.OrganisationID]]);使用(MemoryStreamstreamTemplate=newMemoryStream()){使用(PdfStamperstamper=newPdfStamper(reader,streamTemplate)){foreach(vartokeninitem.DataTokens){if(stamper.AcroFields.Fields.Any(fld=>fld.Key==token.Key.ToString())){stamper.AcroFields.SetField(token.Key.ToString(),token.Value);}}stamper.FormFlattening=true;stamper.Writer.CloseStream=false;}mergedDocument=newbyte[streamTemplate.Length];streamTemplate.Position=0;streamTemplate.Read(mergedDocument,0,(int)streamTemplate.Length);}读者=新PdfReader(合并文档);对于(inti=1;i<=reader.NumberOfPages;i++){document.SetPageSize(PageSize.A4);copy.AddPage(copy.GetImportedPage(reader,i));}}completedDocument=newbyte[streamCompleted.Length];streamCompleted.Position=0;streamCompleted.Read(completedDocument,0,(int)streamCompleted.Length);}}返回完成文档;您需要关闭文档并复制对象以刷新PDF写入缓冲区,但是,这会在尝试将流读入数组时导致一些问题。解决方法是使用MemoryStream的ToArray()方法,它仍然适用于关闭的流。我所做的更改对它们进行了评论。byte[]completedDocument=null;使用(MemoryStreamstreamCompleted=newMemoryStream()){使用(Documentdocument=newDocument()){PdfCopycopy=newPdfCopy(document,streamCompleted);文档.Open();复制.打开();foreach(varitemineventItems){byte[]mergedDocument=null;PdfReader阅读器=newPdfReader(pdfTemplates[item.DataTokens[NotifyTokenType.OrganisationID]]);使用(MemoryStreamstreamTemplate=newMemoryStream()){使用(PdfStamperstamper=newPdfStamper(reader,streamTemplate)){foreach(vartokeninitem.DataTokens){if(stamper.AcroFields.Fields.Any(fld=>fld.Key==token.Key.ToString())){stamper.AcroFields.SetField(token.Key.ToString(),token.Value);}}stamper.FormFlattening=true;stamper.Writer.CloseStream=false;}//复制流的字节mergedDocument=streamTemplate.ToArray();}reader=newPdfReader(mergedDocument);for(inti=1;ihtml转pdf时也要确保你的html不包含hr标签以上是C#学习教程:iTextSharpisgeneratinga本损坏PDF分享的所有内容,如果对您有用,需要了解更多C#学习教程,希望您多多关注---hdnEditorText.Value.Replace(""","'").Replace("","").Replace("","")本文采集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如有转载请注明出处: