【发布时间】:2014-04-24 02:49:22
【问题描述】:
我正在使用 ITextSharp 生成 pdf,我必须使用 MemoryStream 在内存中生成 pdf(因为我不必物理保存文件)。我已经生成了流,但我不明白如何在内存中生成 pdf。 这就是我生成流的方式
private static byte[] GetFileStream()
{
var stream = new MemoryStream();
Document document = new Document(PageSize.A4, 1f, 1f, 1f, 1f);
PdfWriter writer = PdfWriter.GetInstance(document, stream);
document.Open();
try
{
StringBuilder sb= new StringBuilder();
sb.Append("<table class=\"table\">");
sb.Append("<thead>");
sb.Append("<tr>");
sb.Append(" <th> Crime Category </th>");
sb.Append(" <th>Date</th>");
sb.Append(" <th>City</th>");
sb.Append(" <th>Description</th>");
sb.Append(" <th>Option(s)</th>");
sb.Append(" </tr>");
sb.Append(" </thead>");
sb.Append(" <tbody>");
sb.Append(" <tr><td>This is a test</td><td>2</td><td>3</td><td>4</td><td>5</td><tr/>");
sb.Append(" </tbody>");
sb.Append(" </table>");
List<IElement> htmlarraylist = HTMLWorker.ParseToList(new StringReader(misdem.ToString()), null);
for (int k = 0; k < htmlarraylist.Count; k++)
{
document.Add((IElement)htmlarraylist[k]);
}
}
catch (Exception ex)
{ }
finally
{
document.Close();
}
return stream.GetBuffer();
}
byte[] pdfByteData = GetFileStream();
var ms = new MemoryStream(pdfByteData);
我尝试使用它,但它抛出异常
令牌''不是预期的。
using (PdfSharp.Pdf.PdfDocument inputDocument = PdfSharp.Pdf.IO.PdfReader.Open(ms, PdfSharp.Pdf.IO.PdfDocumentOpenMode.Import))
{
int count = inputDocument.PageCount;
for (int idx = 0; idx < count; idx++)
{
PdfSharp.Pdf.PdfPage page1 = inputDocument.PageCount > idx ? inputDocument.Pages[idx] : new PdfSharp.Pdf.PdfPage();
// outputDocument.AddPage(page1);
}
}
【问题讨论】:
标签: c# itextsharp