用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

知道如何解决这个问题吗?

用IText从流中读取Aspose 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);