我需要使用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
知道如何解决这个问题吗?
答案 0 :(得分:3)
你做了
form.BindPdf(stream);
在将流提供给iTextSharp之前
var pdfReader = new PdfReader(stream);
前一个操作已经读取了流,没有为PdfReader
留下任何内容。
可能是
stream.Position = 0;
在PdfReader
初始化之前可以正确地回流流。
如果这不起作用(例如,如果form.BindPdf
不只是读取流而是操纵它),请检索流的byte[]
副本
byte[] bytes = stream.ToArray();
在 BindPdf
电话之前 并使用以下内容初始化PdfReader
:
var pdfReader = new PdfReader(bytes);