Category: ASP.NET

Please Note: You need a hosting plan that supports custom components to use this software. There is also a one off charge for the HTMLDOC license cost from the product vendor plus a Hyve setup fee, please contact sales for more information.

This project uses an HTML to PDF exe from ESP []. Please read the GNU license agreement for more information. HTMLDOC is a desktop application to create PDF documents from a HTML page. I wrote some code to use it from a web application. The best used is from a Web Report to add a PRINT to PDF button to use the C# class.

  public string Run(string sRawUrl)
        string sFileName = GetNewName();
        string sPage = Server.MapPath("" + sFileName + ".html");            
        string sUrlVirtual = sRawUrl;
        StringWriter sw = new StringWriter();

        Server.Execute(sUrlVirtual, sw);

        StreamWriter sWriter = File.CreateText(sPage);

        System.Diagnostics.Process pProcess 
                             = new System.Diagnostics.Process();
        pProcess.StartInfo.FileName = m_sDrive + ":" + m_Directory + 
        pProcess.StartInfo.Arguments = "--webpage --quiet " + sFontSize + 
                  m_sWaterMark + " --bodyfont Arial " + sLandScape + 
                  " -t pdf14 -f " + sFileName + ".pdf " + sFileName + ".html";
        pProcess.StartInfo.WorkingDirectory = m_sDrive + ":" + m_Directory;


        return(sFileName + ".pdf");            

The class PDFGenerator contains a public method called Run that will call the process hghtmldoc.exe with the arguments you choose. The most important part is to set a working directory where the Web application has permission to read, write and execute, otherwise the program won’t work, and the function pProcess.Start will raise a Win32 Exception “access denied”.

StreamWriter will save the page into a HTML file on the hard disk.

The file DisplayPDF.aspx and DisplayPDF.aspx.cs will do just that, displays the generated PDF file when ready.

private void Page_Load(object sender, System.EventArgs e)

            if ( Request.Params["File" = null )
                bool bRet = false;
                int iTimeout = 0;
                while ( bRet == false )
                    bRet = CheckIfFileExist(Request.Params["File".ToString());
                    if ( iTimeout == 10 )

                if ( bRet == true )
                    Response.ContentType = "Application/pdf";
                        Response.WriteFile( MapPath( "" + 
                                      Request.Params["File".ToString() ) ); 
                    if ( Request.Params["Msg" = null )
                        LabelMsg.Text = Request.Params["Msg".ToString();

The page accepts a parameter, FILE, previously saved in the hard disk by StreamWriter. The Response.Redirect will include application/PDF, so the browser knows what kind of file is downloading and ask you to SAVE or OPEN. If you have Adobe plug-in installed on your browser, you’ll be able to see the PDF from your browser.

0 0 vote
Article Rating


How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.