【发布时间】:2017-09-13 13:50:18
【问题描述】:
我正在使用 C# 和 PDFSharp 处理导出到 PDF 的功能。我收到此错误:
Value cannot be null.
Parameter name: elementId
错误在这一行:
PdfDocument document = PdfGenerator.GeneratePdf(htmlcontenttbl.ToString(), PdfSharp.PageSize.A4, 30);
这是整个方法:
public bool ExportPdf(string htmlcontenttbl)
{
Response.ClearContent();
Response.ClearHeaders();
Response.Buffer = true;
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment;filename=Myfile.pdf");
//Response.AddHeader("Content-Disposition", "inline;filename=file.pdf");
//Response.AppendHeader("Content-Disposition", "attachment; filename=Myfile.pdf");
Response.Charset = "";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
PdfDocument document = PdfGenerator.GeneratePdf(htmlcontenttbl.ToString(), PdfSharp.PageSize.A4, 30);
var config = new PdfGenerateConfig();
config.PageOrientation = PageOrientation.Landscape;
config.PageSize = PageSize.A4;
config.MarginBottom = 30;
config.MarginTop = 30;
//PdfDocument document = PdfGenerator.GeneratePdf(htmlcontenttbl, config);
byte[] bytes = null;
using (MemoryStream stream = new MemoryStream())
{
document.Save(stream, true);
bytes = stream.ToArray();
}
//var path1 = Server.MapPath("~/Images/" + DateTime.Now.TimeOfDay.Ticks + "result.pdf");
//System.IO.File.WriteAllBytes(path1, bytes);
//Response.TransmitFile(path1, 0, bytes.Length);
//Response.OutputStream.Write(bytes, 0, bytes.Length);
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();
return true;
}
【问题讨论】:
-
我们能看到堆栈跟踪吗?
-
堆栈跟踪真的很有帮助,没有名为 elementId 的参数。
-
ScrollToElement是该项目中唯一引发此异常的地方:github.com/ArthurHub/HTML-Renderer/… 但不知道它来自何处以及为什么参数为null或为空 . -
也许还有github.com/ArthurHub/HTML-Renderer/blob/…@TimSchmelter?
-
标题错了——这不是PDFsharp的问题,是PdfGenerator的问题。