用IText从流中读取Aspose pdf
本文关键字:读取 Aspose pdf IText | 更新日期: 2023-09-27 18:29:27
我需要使用ITextSharp阅读用Aspose创建的PDF。这是我的代码:
// instantiate Pdf object
Aspose.Pdf.Generator.Pdf pdf = new Aspose.Pdf.Generator.Pdf();
// specify the Character encoding for for HTML file
pdf.HtmlInfo.CharSet = "UTF-8";
pdf.HtmlInfo.CharsetApplyingLevelOfForce = Aspose.Pdf.Generator.HtmlInfo.CharsetApplyingForceLevel.UseWhenImpossibleDetectFromContent;
// bind the source HTML
pdf.BindHTML(htmlString);
MemoryStream stream = new MemoryStream();
pdf.Save(stream);
Form form = new Form();
form.BindPdf(stream);
var inStream = new MemoryStream(Input.TemplateFile);
var pdfConcat = new PdfConcatenate(inStream);
var pdfReader = new PdfReader(stream);
pdfReader.SelectPages(new List<int>() { 0, 1 });
pdfConcat.AddPages(pdfReader);
pdfReader.Close();
pdfConcat.Close();
在调试时,我在var pdfReader = new PdfReader(stream);
行上收到以下错误
找不到PDF标头签名
我想做的事:-从HTML字符串创建一个PDF页面-将其附加到现有的PDF
知道如何解决这个问题吗?
您进行
form.BindPdf(stream);
在将流提供给iTextSharp 之前
var pdfReader = new PdfReader(stream);
前一个操作已经读取了流,没有为PdfReader
留下任何可读取的内容。
可能是
stream.Position = 0;
就在CCD_ 3初始化之前可以正确地倒带流。
如果这不起作用(例如,如果form.BindPdf
不仅读取流,而且操纵它),则检索流的byte[]
副本
byte[] bytes = stream.ToArray();
在调用BindPdf
之前,并用初始化PdfReader
var pdfReader = new PdfReader(bytes);