Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 303
  • Last Modified:

Save generated output to folder instead of displaying in browser

Hi Experts

My code below takes the current html of a page and creates a PDF. I am struggling to find a way to save the PDF into a folder instead of showing it in the browser

Dim htmlToPdf = New HtmlToPdfConverter()
        Dim pdfData = htmlToPdf.GeneratePdf(html)
        Response.ContentType = "application/pdf"
        Response.OutputStream.Write(pdfData, 0, pdfData.Length)
        Response.[End]()

Open in new window

0
takwirirar
Asked:
takwirirar
  • 6
  • 3
1 Solution
 
käµfm³d 👽Commented:
Save it in a folder where:  on the server or on the client?
0
 
takwirirarAuthor Commented:
Apologies on the server
0
 
käµfm³d 👽Commented:
Replace lines 3 - 5 with:

System.IO.File.WriteAllBytes("path\to\folder", pdfData)  ' First parameter may need to change
                                                         '  to Server.MapPath("path\to\folder")
                                                         '  depending on which folder you are
                                                         '  referencing

Open in new window

0
Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
takwirirarAuthor Commented:
Thank you it tries to do it then says

 System.Web.HttpException: A page can have only one server-side Form tag.

Open in new window


I tried it with

 Public Overrides Sub VerifyRenderingInServerForm(control As Control)
    End Sub

Open in new window


and without but get the same error

I have placed the line as follows

System.IO.File.WriteAllBytes(Server.MapPath("~\PDF\test.pdf"), pdfData) 

Open in new window

0
 
käµfm³d 👽Commented:
That sounds like an issue in your markup file, not your code-behind file. Do you have two <form> tags in your HTML somewhere?
0
 
takwirirarAuthor Commented:
No I have just 1
Default.aspx
0
 
takwirirarAuthor Commented:
I have noticed that it creates the file which is brilliant news but its just the error that I need to get rid off.
0
 
takwirirarAuthor Commented:
I have also noticed that if I remove the only form tag and place the code in the form load, everything works fine however this renders the form useless as none of the controls work without the form tag.

This is how I am generating the html

  'Generate from current page
        Dim renderedOutput As StringBuilder
        Dim strWriter As StringWriter
        Dim tWriter As HtmlTextWriter
        Dim html As String

        'create a HtmlTextWriter to use for rendering the page
        renderedOutput = New StringBuilder
        strWriter = New StringWriter(renderedOutput)
        tWriter = New HtmlTextWriter(strWriter)
        'render the page output
        Page.RenderControl(tWriter)
        html = renderedOutput.ToString

Open in new window


Maybe if I change that it'll work? Is there any other way to get the HTML of the current page?
0
 
takwirirarAuthor Commented:
Thanks
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 6
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now