我无法使HTML Renderer输出可下载的PDF文件

时间:2018-08-06 17:09:26

标签: c# html css asp.net html-renderer

我是Web开发的新手,我必须做一个可以提取为PDF(即发票,收据)的页面。

我已经尝试过JSPdf,但它似乎只能输出纯文本。 我不能使用HTML2Canvas,因为它会输出图像而不是文本(无法从图像中搜索/复制文本)

我环顾四周,并按照此处的建议尝试了HTML渲染器:Convert HTML to PDF in .NET

应用NuGet包和给定的示例方法后,它只会刷新页面,并且不会生成PDF文件。 我试图将pdf.Save(ms)更改为pdf.Save(“ test.pdf”),但出现错误:System.UnauthorizedAccessException:'访问路径'C:\ Program Files(x86)... \ test.pdf'被拒绝。'

我一直在寻找,它循环回到相同的问题/建议,但我不知道还需要做些什么才能使其起作用。

这是我用于测试的HTML:

<form id="form1" runat="server">
    <section class="content">
        <div class="row col-xs-12">
            <div class="box" id="wholebox">
                <div class="box-body" id="inputbox">
                    <div class="form-group input-group-sm col-sm-8">
                        <label for="Comp_Name">Company Name</label>
                        <Input type="text" class="form-control" name="CompName" id="Comp_Name" value="Company 1" disabled />    
                    </div>
                    <div class="form-group input-group-sm col-sm-8">
                        <label for="BUnit_Name">Business Unit</label>
                        <Input type="text" class="form-control" name="BUnitName" id="BUnit_Name" value="Unit 1" disabled />    
                    </div>
                    <div class="form-group input-group-sm col-sm-8">
                        <label for="BUnit_Adr">Address</label>
                        <Input type="text" class="form-control" name="BUnitAdr" id="BUnit_Adr" value="Address 1" disabled />    
                    </div>
                </div>
                <div class="box-footer">
                    <div class="col-sm-2">
                        <button onclick="<%PdfSharpConvert(Request.Url.ToString()); %>">pdfsharp</button>
                    </div>
                </div>
            </div>
        </div>
    </section>
</form>

这是C#中的后端代码:

public partial class Test2 : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e)
{

}

public static Byte[] PdfSharpConvert(String html)
{
    Byte[] res = null;
    using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
    {
        var pdf = TheArtOfDev.HtmlRenderer.PdfSharp.PdfGenerator.GeneratePdf(html, PdfSharp.PageSize.A4);
        pdf.Save(ms);
        res = ms.ToArray();
    }
    return res;
}}

0 个答案:

没有答案