值不能为空。参数名称:PDFsharp中的elementId

时间:2017-09-13 13:50:18

标签: c# .net pdfsharp

我正在使用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;
    }

1 个答案:

答案 0 :(得分:0)

如果您有一个空白锚标记,则会发生异常。

最终可能是从here生成的。

您应该删除空白锚标记。