如何生成PDF并加载ASCX asp.net用户控件的内容?

时间:2011-11-14 21:15:13

标签: c# asp.net webforms

我有一个ASP.NET用户控件,.ascx,我需要生成一个包含用户控件内容的PDF。这是否可能,如果是这样,有人能指出我正确的方向吗?

由于

2 个答案:

答案 0 :(得分:2)

有许多第三方PDF创建工具。我们在工作中使用得很好的是PdfSharp

就将用户控件输出为文本而言,这就是您需要做的事情:

        Page page = new Page();
        HtmlForm form = new HtmlForm();
        [USERCONTROL] uc  = (ReportHeaderInfoUC)page.LoadControl("~/UserControls/[NAME OF YOUR USER CONTROL].ascx");
        page.Controls.Add(form);
        form.Controls.Add(uc);
        //call the function on the user control that populates the control and pass in any data needed (if any)
        uc.Populate(data);
        StringWriter stringWriter = new StringWriter();
        this.Server.Execute(page, stringWriter, false);

你在这里做的是创建一个新的WebForm,向其添加用户控件并让服务器将输出呈现为流,这基本上是ASP.NET为常规页面请求所做的。

将输出的用户控件的内容写入文件使用:

  

File.WriteAllText([FILE PATH],stringWriter.ToString());

答案 1 :(得分:0)

只要用户控件仅基于文本,就不难将其作为带有任何pdf创建库的pdf输出(搜索generating pdfpdf creation)。如果你的用户控件有更复杂的html标签,那么你基本上需要购买一个Html 2 Pdf库。我找不到一个支持html到pdf的可接受的免费库。

你也可以用PDF建立表格,但是根据我的经验,从html表格转换为pdf表格是非常困难的,而不需要购买图书馆。您还可以将PDF表格的构建与usercontrol分开编码,但同样很难将该功能组合到其中。