HTML to PDF API - Go

Learn how to convert web pages and HTML documents to PDF in Go using the Pdfcrowd API v2. The API is easy to use and the integration takes only a couple of lines of code.

Installation

Install the client library from Github
go get github.com/pdfcrowd/pdfcrowd-go

Learn more about other install options.

Authentication

Authentication is needed in order to use the Pdfcrowd API. The credentials used for accessing the API are your Pdfcrowd username and the API key.
Sign up for a Free Trial

Examples

package main

import (
    "os"
    "fmt"
    "github.com/pdfcrowd/pdfcrowd-go"
)

func main() {
    // create the API client instance
    client := pdfcrowd.NewHtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d")

    // run the conversion and write the result to a file
    err := client.ConvertUrlToFile("http://www.example.com", "example.pdf")

    // check for a conversion error
    handleError(err)
}

func handleError(err error) {
    if err != nil {
        // report the error
        why, ok := err.(pdfcrowd.Error)
        if ok {
            os.Stderr.WriteString(fmt.Sprintf("Pdfcrowd Error: %s\n", why))
        } else {
            os.Stderr.WriteString(fmt.Sprintf("Generic Error: %s\n", err))
        }

        // handle the exception here or rethrow and handle it at a higher level
        panic(err.Error())
    }
}
package main

import (
    "os"
    "fmt"
    "github.com/pdfcrowd/pdfcrowd-go"
)

func main() {
    // create the API client instance
    client := pdfcrowd.NewHtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d")

    // create output file for conversion result
    outputFile, err := os.Create("example.pdf")

    // check for a file creation error
    handleError(err)

    // close the output file
    defer outputFile.Close()

    // run the conversion and store the result into a pdf variable
    pdf, err := client.ConvertUrl("http://www.example.com")

    // check for a conversion error
    handleError(err)

    // write the pdf into the output file
    _, err = outputFile.Write(pdf)

    // check for a file write error
    handleError(err)
}

func handleError(err error) {
    if err != nil {
        // report the error
        why, ok := err.(pdfcrowd.Error)
        if ok {
            os.Stderr.WriteString(fmt.Sprintf("Pdfcrowd Error: %s\n", why))
        } else {
            os.Stderr.WriteString(fmt.Sprintf("Generic Error: %s\n", err))
        }

        // handle the exception here or rethrow and handle it at a higher level
        panic(err.Error())
    }
}
package main

import (
    "os"
    "fmt"
    "github.com/pdfcrowd/pdfcrowd-go"
)

func main() {
    // create the API client instance
    client := pdfcrowd.NewHtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d")

    // create output stream for conversion result
    outputStream, err := os.Create("example.pdf")

    // check for a file creation error
    handleError(err)

    // close the output stream
    defer outputStream.Close()

    // run the conversion and write the result into the output stream
    err = client.ConvertUrlToStream("http://www.example.com", outputStream)

    // check for a conversion error
    handleError(err)
}

func handleError(err error) {
    if err != nil {
        // report the error
        why, ok := err.(pdfcrowd.Error)
        if ok {
            os.Stderr.WriteString(fmt.Sprintf("Pdfcrowd Error: %s\n", why))
        } else {
            os.Stderr.WriteString(fmt.Sprintf("Generic Error: %s\n", err))
        }

        // handle the exception here or rethrow and handle it at a higher level
        panic(err.Error())
    }
}
package main

import (
    "os"
    "fmt"
    "github.com/pdfcrowd/pdfcrowd-go"
)

func main() {
    // create the API client instance
    client := pdfcrowd.NewHtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d")

    // run the conversion and write the result to a file
    err := client.ConvertFileToFile("/path/to/MyLayout.html", "MyLayout.pdf")

    // check for a conversion error
    handleError(err)
}

func handleError(err error) {
    if err != nil {
        // report the error
        why, ok := err.(pdfcrowd.Error)
        if ok {
            os.Stderr.WriteString(fmt.Sprintf("Pdfcrowd Error: %s\n", why))
        } else {
            os.Stderr.WriteString(fmt.Sprintf("Generic Error: %s\n", err))
        }

        // handle the exception here or rethrow and handle it at a higher level
        panic(err.Error())
    }
}
package main

import (
    "os"
    "fmt"
    "github.com/pdfcrowd/pdfcrowd-go"
)

func main() {
    // create the API client instance
    client := pdfcrowd.NewHtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d")

    // create output file for conversion result
    outputFile, err := os.Create("MyLayout.pdf")

    // check for a file creation error
    handleError(err)

    // close the output file
    defer outputFile.Close()

    // run the conversion and store the result into a pdf variable
    pdf, err := client.ConvertFile("/path/to/MyLayout.html")

    // check for a conversion error
    handleError(err)

    // write the pdf into the output file
    _, err = outputFile.Write(pdf)

    // check for a file write error
    handleError(err)
}

func handleError(err error) {
    if err != nil {
        // report the error
        why, ok := err.(pdfcrowd.Error)
        if ok {
            os.Stderr.WriteString(fmt.Sprintf("Pdfcrowd Error: %s\n", why))
        } else {
            os.Stderr.WriteString(fmt.Sprintf("Generic Error: %s\n", err))
        }

        // handle the exception here or rethrow and handle it at a higher level
        panic(err.Error())
    }
}
package main

import (
    "os"
    "fmt"
    "github.com/pdfcrowd/pdfcrowd-go"
)

func main() {
    // create the API client instance
    client := pdfcrowd.NewHtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d")

    // create output stream for conversion result
    outputStream, err := os.Create("MyLayout.pdf")

    // check for a file creation error
    handleError(err)

    // close the output stream
    defer outputStream.Close()

    // run the conversion and write the result into the output stream
    err = client.ConvertFileToStream("/path/to/MyLayout.html", outputStream)

    // check for a conversion error
    handleError(err)
}

func handleError(err error) {
    if err != nil {
        // report the error
        why, ok := err.(pdfcrowd.Error)
        if ok {
            os.Stderr.WriteString(fmt.Sprintf("Pdfcrowd Error: %s\n", why))
        } else {
            os.Stderr.WriteString(fmt.Sprintf("Generic Error: %s\n", err))
        }

        // handle the exception here or rethrow and handle it at a higher level
        panic(err.Error())
    }
}
package main

import (
    "os"
    "fmt"
    "github.com/pdfcrowd/pdfcrowd-go"
)

func main() {
    // create the API client instance
    client := pdfcrowd.NewHtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d")

    // run the conversion and write the result to a file
    err := client.ConvertStringToFile("<html><body><h1>Hello World!</h1></body></html>", "HelloWorld.pdf")

    // check for a conversion error
    handleError(err)
}

func handleError(err error) {
    if err != nil {
        // report the error
        why, ok := err.(pdfcrowd.Error)
        if ok {
            os.Stderr.WriteString(fmt.Sprintf("Pdfcrowd Error: %s\n", why))
        } else {
            os.Stderr.WriteString(fmt.Sprintf("Generic Error: %s\n", err))
        }

        // handle the exception here or rethrow and handle it at a higher level
        panic(err.Error())
    }
}
package main

import (
    "os"
    "fmt"
    "github.com/pdfcrowd/pdfcrowd-go"
)

func main() {
    // create the API client instance
    client := pdfcrowd.NewHtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d")

    // create output file for conversion result
    outputFile, err := os.Create("HelloWorld.pdf")

    // check for a file creation error
    handleError(err)

    // close the output file
    defer outputFile.Close()

    // run the conversion and store the result into a pdf variable
    pdf, err := client.ConvertString("<html><body><h1>Hello World!</h1></body></html>")

    // check for a conversion error
    handleError(err)

    // write the pdf into the output file
    _, err = outputFile.Write(pdf)

    // check for a file write error
    handleError(err)
}

func handleError(err error) {
    if err != nil {
        // report the error
        why, ok := err.(pdfcrowd.Error)
        if ok {
            os.Stderr.WriteString(fmt.Sprintf("Pdfcrowd Error: %s\n", why))
        } else {
            os.Stderr.WriteString(fmt.Sprintf("Generic Error: %s\n", err))
        }

        // handle the exception here or rethrow and handle it at a higher level
        panic(err.Error())
    }
}
package main

import (
    "os"
    "fmt"
    "github.com/pdfcrowd/pdfcrowd-go"
)

func main() {
    // create the API client instance
    client := pdfcrowd.NewHtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d")

    // create output stream for conversion result
    outputStream, err := os.Create("HelloWorld.pdf")

    // check for a file creation error
    handleError(err)

    // close the output stream
    defer outputStream.Close()

    // run the conversion and write the result into the output stream
    err = client.ConvertStringToStream("<html><body><h1>Hello World!</h1></body></html>", outputStream)

    // check for a conversion error
    handleError(err)
}

func handleError(err error) {
    if err != nil {
        // report the error
        why, ok := err.(pdfcrowd.Error)
        if ok {
            os.Stderr.WriteString(fmt.Sprintf("Pdfcrowd Error: %s\n", why))
        } else {
            os.Stderr.WriteString(fmt.Sprintf("Generic Error: %s\n", err))
        }

        // handle the exception here or rethrow and handle it at a higher level
        panic(err.Error())
    }
}
package main

import (
    "os"
    "fmt"
    "github.com/pdfcrowd/pdfcrowd-go"
)

func main() {
    // create the API client instance
    client := pdfcrowd.NewHtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d")

    // configure the conversion
    client.SetDebugLog(true)

    // run the conversion and write the result to a file
    err := client.ConvertFileToFile("/path/to/MyLayout.html", "MyLayout.pdf")

    // check for a conversion error
    handleError(err)
    
    // print URL to the debug log
    fmt.Println("Debug log url:", client.GetDebugLogUrl())
    
    // print the number of available conversion credits in your account
    fmt.Println("Remaining credit count:", client.GetRemainingCreditCount())
    
    // print the number of credits consumed by the conversion
    fmt.Println("Consumed credit count:", client.GetConsumedCreditCount())
    
    // print the unique ID of the conversion
    fmt.Println("Job id:", client.GetJobId())
    
    // print the total number of pages in the output document
    fmt.Println("Page count:", client.GetPageCount())
    
    // print the size of the output in bytes
    fmt.Println("Output size:", client.GetOutputSize())
}

func handleError(err error) {
    if err != nil {
        // report the error
        why, ok := err.(pdfcrowd.Error)
        if ok {
            os.Stderr.WriteString(fmt.Sprintf("Pdfcrowd Error: %s\n", why))
        } else {
            os.Stderr.WriteString(fmt.Sprintf("Generic Error: %s\n", err))
        }

        // handle the exception here or rethrow and handle it at a higher level
        panic(err.Error())
    }
}

Advanced Examples

package main

import (
    "os"
    "fmt"
    "github.com/pdfcrowd/pdfcrowd-go"
)

func main() {
    // create the API client instance
    client := pdfcrowd.NewHtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d")

    // configure the conversion
    client.SetPageSize("Letter")
    client.SetOrientation("landscape")
    client.SetNoMargins(true)

    // run the conversion and write the result to a file
    err := client.ConvertUrlToFile("http://www.example.com", "letter_landscape.pdf")

    // check for a conversion error
    handleError(err)
}

func handleError(err error) {
    if err != nil {
        // report the error
        why, ok := err.(pdfcrowd.Error)
        if ok {
            os.Stderr.WriteString(fmt.Sprintf("Pdfcrowd Error: %s\n", why))
        } else {
            os.Stderr.WriteString(fmt.Sprintf("Generic Error: %s\n", err))
        }

        // handle the exception here or rethrow and handle it at a higher level
        panic(err.Error())
    }
}
package main

import (
    "os"
    "fmt"
    "github.com/pdfcrowd/pdfcrowd-go"
)

func main() {
    // create the API client instance
    client := pdfcrowd.NewHtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d")

    // configure the conversion
    client.SetHeaderHeight("15mm")
    client.SetFooterHeight("10mm")
    client.SetHeaderHtml("<a class='pdfcrowd-source-url' data-pdfcrowd-placement='href-and-content'></a>")
    client.SetFooterHtml("<center><span class='pdfcrowd-page-number'></span></center>")
    client.SetMarginTop("0mm")
    client.SetMarginBottom("0mm")

    // run the conversion and write the result to a file
    err := client.ConvertUrlToFile("http://www.example.com", "header_footer.pdf")

    // check for a conversion error
    handleError(err)
}

func handleError(err error) {
    if err != nil {
        // report the error
        why, ok := err.(pdfcrowd.Error)
        if ok {
            os.Stderr.WriteString(fmt.Sprintf("Pdfcrowd Error: %s\n", why))
        } else {
            os.Stderr.WriteString(fmt.Sprintf("Generic Error: %s\n", err))
        }

        // handle the exception here or rethrow and handle it at a higher level
        panic(err.Error())
    }
}
package main

import (
    "os"
    "fmt"
    "github.com/pdfcrowd/pdfcrowd-go"
)

func main() {
    // create the API client instance
    client := pdfcrowd.NewHtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d")

    // configure the conversion
    client.SetScaleFactor(300)

    // run the conversion and write the result to a file
    err := client.ConvertUrlToFile("http://www.example.com", "zoom_300.pdf")

    // check for a conversion error
    handleError(err)
}

func handleError(err error) {
    if err != nil {
        // report the error
        why, ok := err.(pdfcrowd.Error)
        if ok {
            os.Stderr.WriteString(fmt.Sprintf("Pdfcrowd Error: %s\n", why))
        } else {
            os.Stderr.WriteString(fmt.Sprintf("Generic Error: %s\n", err))
        }

        // handle the exception here or rethrow and handle it at a higher level
        panic(err.Error())
    }
}
package main

import (
    "os"
    "fmt"
    "github.com/pdfcrowd/pdfcrowd-go"
)

func main() {
    // create the API client instance
    client := pdfcrowd.NewHtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d")

    // configure the conversion
    client.SetAuthor("Pdfcrowd")
    client.SetTitle("Hello")
    client.SetSubject("Demo")
    client.SetKeywords("Pdfcrowd,demo")

    // run the conversion and write the result to a file
    err := client.ConvertUrlToFile("http://www.example.com", "with_metadata.pdf")

    // check for a conversion error
    handleError(err)
}

func handleError(err error) {
    if err != nil {
        // report the error
        why, ok := err.(pdfcrowd.Error)
        if ok {
            os.Stderr.WriteString(fmt.Sprintf("Pdfcrowd Error: %s\n", why))
        } else {
            os.Stderr.WriteString(fmt.Sprintf("Generic Error: %s\n", err))
        }

        // handle the exception here or rethrow and handle it at a higher level
        panic(err.Error())
    }
}
package main

import (
    "os"
    "fmt"
    "github.com/pdfcrowd/pdfcrowd-go"
)

func main() {
    // create the API client instance
    client := pdfcrowd.NewHtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d")

    // configure the conversion
    client.SetPageLayout("single-page")
    client.SetPageMode("full-screen")
    client.SetInitialZoomType("fit-page")
    client.SetOrientation("landscape")
    client.SetNoMargins(true)

    // run the conversion and write the result to a file
    err := client.ConvertUrlToFile("https://pdfcrowd.com/doc/api/", "slide_show.pdf")

    // check for a conversion error
    handleError(err)
}

func handleError(err error) {
    if err != nil {
        // report the error
        why, ok := err.(pdfcrowd.Error)
        if ok {
            os.Stderr.WriteString(fmt.Sprintf("Pdfcrowd Error: %s\n", why))
        } else {
            os.Stderr.WriteString(fmt.Sprintf("Generic Error: %s\n", err))
        }

        // handle the exception here or rethrow and handle it at a higher level
        panic(err.Error())
    }
}
package main

import (
    "os"
    "fmt"
    "github.com/pdfcrowd/pdfcrowd-go"
)

func main() {
    // create the API client instance
    client := pdfcrowd.NewHtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d")

    // configure the conversion
    client.SetElementToConvert("#main")

    // run the conversion and write the result to a file
    err := client.ConvertUrlToFile("https://pdfcrowd.com/doc/api/", "html_part.pdf")

    // check for a conversion error
    handleError(err)
}

func handleError(err error) {
    if err != nil {
        // report the error
        why, ok := err.(pdfcrowd.Error)
        if ok {
            os.Stderr.WriteString(fmt.Sprintf("Pdfcrowd Error: %s\n", why))
        } else {
            os.Stderr.WriteString(fmt.Sprintf("Generic Error: %s\n", err))
        }

        // handle the exception here or rethrow and handle it at a higher level
        panic(err.Error())
    }
}
package main

import (
    "os"
    "fmt"
    "github.com/pdfcrowd/pdfcrowd-go"
)

func main() {
    // create the API client instance
    client := pdfcrowd.NewHtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d")

    // configure the conversion
    client.SetCustomJavascript("el=document.createElement('h2'); el.textContent='Hello from Pdfcrowd API'; el.style.color='red'; el_before=document.getElementsByTagName('h1')[0]; el_before.parentNode.insertBefore(el, el_before.nextSibling)")

    // run the conversion and write the result to a file
    err := client.ConvertUrlToFile("http://www.example.com", "html_inject.pdf")

    // check for a conversion error
    handleError(err)
}

func handleError(err error) {
    if err != nil {
        // report the error
        why, ok := err.(pdfcrowd.Error)
        if ok {
            os.Stderr.WriteString(fmt.Sprintf("Pdfcrowd Error: %s\n", why))
        } else {
            os.Stderr.WriteString(fmt.Sprintf("Generic Error: %s\n", err))
        }

        // handle the exception here or rethrow and handle it at a higher level
        panic(err.Error())
    }
}
package main

import (
    "os"
    "fmt"
    "github.com/pdfcrowd/pdfcrowd-go"
)

func main() {
    // create the API client instance
    client := pdfcrowd.NewHtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d")

    // configure the conversion
    client.SetViewportWidth(992)
    client.SetRenderingMode("viewport")
    client.SetSmartScalingMode("viewport-fit")
    client.SetNoMargins(true)

    // run the conversion and write the result to a file
    err := client.ConvertUrlToFile("https://getbootstrap.com/", "bootstrap.pdf")

    // check for a conversion error
    handleError(err)
}

func handleError(err error) {
    if err != nil {
        // report the error
        why, ok := err.(pdfcrowd.Error)
        if ok {
            os.Stderr.WriteString(fmt.Sprintf("Pdfcrowd Error: %s\n", why))
        } else {
            os.Stderr.WriteString(fmt.Sprintf("Generic Error: %s\n", err))
        }

        // handle the exception here or rethrow and handle it at a higher level
        panic(err.Error())
    }
}
package main

import (
    "os"
    "fmt"
    "github.com/pdfcrowd/pdfcrowd-go"
)

func main() {
    // create the API client instance
    client := pdfcrowd.NewHtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d")

    // configure the conversion
    client.SetCustomJavascript("libPdfcrowd.highlightHtmlElements({backgroundColor: 'rgba(255, 191, 0, 0.1)', borderColor:null})")

    // run the conversion and write the result to a file
    err := client.ConvertUrlToFile("http://www.example.com", "highlight_background.pdf")

    // check for a conversion error
    handleError(err)
}

func handleError(err error) {
    if err != nil {
        // report the error
        why, ok := err.(pdfcrowd.Error)
        if ok {
            os.Stderr.WriteString(fmt.Sprintf("Pdfcrowd Error: %s\n", why))
        } else {
            os.Stderr.WriteString(fmt.Sprintf("Generic Error: %s\n", err))
        }

        // handle the exception here or rethrow and handle it at a higher level
        panic(err.Error())
    }
}
package main

import (
    "os"
    "fmt"
    "github.com/pdfcrowd/pdfcrowd-go"
)

func main() {
    // create the API client instance
    client := pdfcrowd.NewHtmlToPdfClient("demo", "ce544b6ea52a5621fb9d55f8b542d14d")

    // configure the conversion
    client.SetCustomJavascript("libPdfcrowd.highlightHtmlElements({borderColor: 'orange', backgroundColor: null, padding: '4px', margin: '4px'})")

    // run the conversion and write the result to a file
    err := client.ConvertUrlToFile("http://www.example.com", "highlight_borders.pdf")

    // check for a conversion error
    handleError(err)
}

func handleError(err error) {
    if err != nil {
        // report the error
        why, ok := err.(pdfcrowd.Error)
        if ok {
            os.Stderr.WriteString(fmt.Sprintf("Pdfcrowd Error: %s\n", why))
        } else {
            os.Stderr.WriteString(fmt.Sprintf("Generic Error: %s\n", err))
        }

        // handle the exception here or rethrow and handle it at a higher level
        panic(err.Error())
    }
}

Common Customizations

The API lets you convert a web page, a local HTML file, or a string containing HTML. The result of the conversion can be stored to a local file, to a stream object or to a variable. See the conversion input section for more details.

The best way to start with the API is to choose one of the examples and once you get it working, you can further customize the code. You can find the most common customizations in the table below.

Page size Change the page size with SetPageSize or SetPageDimensions. Pass -1 to SetPageHeight to get a single page PDF containing the whole document.
Page orientation Change the page orientation to landscape with SetOrientation.
Page margins Adjust the page margins with SetPageMargins.
Headers and footers Add headers and footers with SetHeaderHtml and SetFooterHtml. Set the height with SetFooterHeight and SetHeaderHeight.
Zoom Scale the HTML contents with SetScaleFactor.
Hide or remove elements You can use the following classes in your HTML code to hide or remove elements from the output:
  • pdfcrowd-remove - sets display:none!important on the element
  • pdfcrowd-hide - sets visibility:hidden!important on the element
Use @media print You can switch to the print version of the page (if it exists) with SetUsePrintMedia.
Force page break You can force a page break with
<div style="page-break-before:always"></div>
Avoid page break You can avoid a page break inside an element with the following CSS
th, td, img { page-break-inside:avoid }
Run custom JavaScript You can use SetOnLoadJavascript or SetCustomJavascript to alter the HTML contents with a custom JavaScript. In addition to the standard browser APIs, the custom JavaScript code can use helper functions from our JavaScript library.

Error Handling

// call the API 

    // print error
    os.Stderr.WriteString(fmt.Sprintf("Pdfcrowd Error: %s\n", why))

    // print just error code
    os.Stderr.WriteString(fmt.Sprintf("Pdfcrowd Error Code: %v\n", why.getCode()))

    // print just error message
    os.Stderr.WriteString(fmt.Sprintf("Pdfcrowd Error Message: %v\n", why.getMessage()))

    // or handle the error in your way

Troubleshooting

  • Check API Status Codes in case of the error code is returned.
  • You can use SetDebugLog and GetDebugLogUrl to get detailed info about the conversion, such as conversion errors, time, console output.
  • You can use our JavaScript library to resolve rendering problems, such as missing content or blank pages.
    Just use SetCustomJavascript with libPdfcrowd.highlightHtmlElements method call to visualize all HTML elements. See the example and helper JavaScript library documentation.
  • Take a look at the FAQ section.

API Reference - class HtmlToPdfClient

Conversion from HTML to PDF. All setter methods return HtmlToPdfClient object unless otherwise specified.

Constructor

func NewHtmlToPdfClient(userName string, apiKey string) HtmlToPdfClient
Constructor for the Pdfcrowd API client.
userName
Your username at Pdfcrowd.
apiKey
Your API key.

 

Conversion Input

func (client *HtmlToPdfClient) ConvertUrl(url string) ([]byte, error)
Convert a web page.
url
The address of the web page to convert.
The supported protocols are http:// and https://.
Returns
  • []byte - Byte array containing the conversion output.
func (client *HtmlToPdfClient) ConvertUrlToStream(url string, outStream io.Writer) error
Convert a web page and write the result to an output stream.
url
The address of the web page to convert.
The supported protocols are http:// and https://.
outStream
The output stream that will contain the conversion output.
func (client *HtmlToPdfClient) ConvertUrlToFile(url string, filePath string) error
Convert a web page and write the result to a local file.
url
The address of the web page to convert.
The supported protocols are http:// and https://.
filePath
The output file path.
The string must not be empty.
func (client *HtmlToPdfClient) ConvertFile(file string) ([]byte, error)
Convert a local file.
file
The path to a local file to convert.
The file can be either a single file or an archive (.tar.gz, .tar.bz2, or .zip).
If the HTML document refers to local external assets (images, style sheets, javascript), zip the document together with the assets.
The file must exist and not be empty.
The file name must have a valid extension.
Returns
  • []byte - Byte array containing the conversion output.
func (client *HtmlToPdfClient) ConvertFileToStream(file string, outStream io.Writer) error
Convert a local file and write the result to an output stream.
file
The path to a local file to convert.
The file can be either a single file or an archive (.tar.gz, .tar.bz2, or .zip).
If the HTML document refers to local external assets (images, style sheets, javascript), zip the document together with the assets.
The file must exist and not be empty.
The file name must have a valid extension.
outStream
The output stream that will contain the conversion output.
func (client *HtmlToPdfClient) ConvertFileToFile(file string, filePath string) error
Convert a local file and write the result to a local file.
file
The path to a local file to convert.
The file can be either a single file or an archive (.tar.gz, .tar.bz2, or .zip).
If the HTML document refers to local external assets (images, style sheets, javascript), zip the document together with the assets.
The file must exist and not be empty.
The file name must have a valid extension.
filePath
The output file path.
The string must not be empty.
func (client *HtmlToPdfClient) ConvertString(text string) ([]byte, error)
Convert a string.
text
The string content to convert.
The string must not be empty.
Returns
  • []byte - Byte array containing the conversion output.
func (client *HtmlToPdfClient) ConvertStringToStream(text string, outStream io.Writer) error
Convert a string and write the output to an output stream.
text
The string content to convert.
The string must not be empty.
outStream
The output stream that will contain the conversion output.
func (client *HtmlToPdfClient) ConvertStringToFile(text string, filePath string) error
Convert a string and write the output to a file.
text
The string content to convert.
The string must not be empty.
filePath
The output file path.
The string must not be empty.

 

Page Setup

func (client *HtmlToPdfClient) SetPageSize(pageSize string) *HtmlToPdfClient
Set the output page size.
pageSize
Allowed values:
  • A2
  • A3
  • A4
  • A5
  • A6
  • Letter
Default: A4
func (client *HtmlToPdfClient) SetPageWidth(pageWidth string) *HtmlToPdfClient
Set the output page width. The safe maximum is 200in otherwise some PDF viewers may be unable to open the PDF.
pageWidth
Can be specified in inches (in), millimeters (mm), centimeters (cm), or points (pt).
Default: 8.27in
Examples:
  • SetPageWidth("300mm")
  • SetPageWidth("9.5in")
func (client *HtmlToPdfClient) SetPageHeight(pageHeight string) *HtmlToPdfClient
Set the output page height. Use -1 for a single page PDF. The safe maximum is 200in otherwise some PDF viewers may be unable to open the PDF.
pageHeight
Can be -1 or specified in inches (in), millimeters (mm), centimeters (cm), or points (pt).
Default: 11.7in
Examples:
  • SetPageHeight("350mm")
  • SetPageHeight("15.25in")
  • The height of the page is calculated automatically so that the whole document fits into it.
    SetPageHeight("-1")
func (client *HtmlToPdfClient) SetPageDimensions(width string, height string) *HtmlToPdfClient
Set the output page dimensions.
width
Set the output page width. The safe maximum is 200in otherwise some PDF viewers may be unable to open the PDF.
Can be specified in inches (in), millimeters (mm), centimeters (cm), or points (pt).
Default: 8.27in
height
Set the output page height. Use -1 for a single page PDF. The safe maximum is 200in otherwise some PDF viewers may be unable to open the PDF.
Can be -1 or specified in inches (in), millimeters (mm), centimeters (cm), or points (pt).
Default: 11.7in
Examples:
  • SetPageDimensions("300mm", "350mm")
  • SetPageDimensions("9.5in", "15.25in")
  • SetPageDimensions("372mm", "520pt")
func (client *HtmlToPdfClient) SetOrientation(orientation string) *HtmlToPdfClient
Set the output page orientation.
orientation
Allowed values:
  • landscape
  • portrait
Default: portrait
func (client *HtmlToPdfClient) SetMarginTop(marginTop string) *HtmlToPdfClient
Set the output page top margin.
marginTop
Can be specified in inches (in), millimeters (mm), centimeters (cm), or points (pt).
Default: 0.4in
Examples:
  • SetMarginTop("1in")
  • SetMarginTop("2.5cm")
func (client *HtmlToPdfClient) SetMarginRight(marginRight string) *HtmlToPdfClient
Set the output page right margin.
marginRight
Can be specified in inches (in), millimeters (mm), centimeters (cm), or points (pt).
Default: 0.4in
Examples:
  • SetMarginRight("1in")
  • SetMarginRight("2.5cm")
func (client *HtmlToPdfClient) SetMarginBottom(marginBottom string) *HtmlToPdfClient
Set the output page bottom margin.
marginBottom
Can be specified in inches (in), millimeters (mm), centimeters (cm), or points (pt).
Default: 0.4in
Examples:
  • SetMarginBottom("1in")
  • SetMarginBottom("2.5cm")
func (client *HtmlToPdfClient) SetMarginLeft(marginLeft string) *HtmlToPdfClient
Set the output page left margin.
marginLeft
Can be specified in inches (in), millimeters (mm), centimeters (cm), or points (pt).
Default: 0.4in
Examples:
  • SetMarginLeft("1in")
  • SetMarginLeft("2.5cm")
func (client *HtmlToPdfClient) SetNoMargins(noMargins bool) *HtmlToPdfClient
Disable page margins.
noMargins
Set to true to disable margins.
Default: false
func (client *HtmlToPdfClient) SetPageMargins(top string, right string, bottom string, left string) *HtmlToPdfClient
Set the output page margins.
top
Set the output page top margin.
Can be specified in inches (in), millimeters (mm), centimeters (cm), or points (pt).
Default: 0.4in
right
Set the output page right margin.
Can be specified in inches (in), millimeters (mm), centimeters (cm), or points (pt).
Default: 0.4in
bottom
Set the output page bottom margin.
Can be specified in inches (in), millimeters (mm), centimeters (cm), or points (pt).
Default: 0.4in
left
Set the output page left margin.
Can be specified in inches (in), millimeters (mm), centimeters (cm), or points (pt).
Default: 0.4in
func (client *HtmlToPdfClient) SetHeaderUrl(headerUrl string) *HtmlToPdfClient
Load an HTML code from the specified URL and use it as the page header. The following classes can be used in the HTML. The content of the respective elements will be expanded as follows:
  • pdfcrowd-page-count - the total page count of printed pages
  • pdfcrowd-page-number - the current page number
  • pdfcrowd-source-url - the source URL of a converted document
The following attributes can be used:
  • data-pdfcrowd-number-format - specifies the type of the used numerals
    • Arabic numerals are used by default.
    • Roman numerals can be generated by the roman and roman-lowercase values
      • Example: <span class='pdfcrowd-page-number' data-pdfcrowd-number-format='roman'></span>
  • data-pdfcrowd-placement - specifies where to place the source URL, allowed values:
    • The URL is inserted to the content
      • Example: <span class='pdfcrowd-source-url'></span>
        will produce <span>http://example.com</span>
    • href - the URL is set to the href attribute
      • Example: <a class='pdfcrowd-source-url' data-pdfcrowd-placement='href'>Link to source</a>
        will produce <a href='http://example.com'>Link to source</a>
    • href-and-content - the URL is set to the href attribute and to the content
      • Example: <a class='pdfcrowd-source-url' data-pdfcrowd-placement='href-and-content'></a>
        will produce <a href='http://example.com'>http://example.com</a>
headerUrl
The supported protocols are http:// and https://.
Examples:
  • SetHeaderUrl("http://myserver.com/header.html")
func (client *HtmlToPdfClient) SetHeaderHtml(headerHtml string) *HtmlToPdfClient
Use the specified HTML code as the page header. The following classes can be used in the HTML. The content of the respective elements will be expanded as follows:
  • pdfcrowd-page-count - the total page count of printed pages
  • pdfcrowd-page-number - the current page number
  • pdfcrowd-source-url - the source URL of a converted document
The following attributes can be used:
  • data-pdfcrowd-number-format - specifies the type of the used numerals
    • Arabic numerals are used by default.
    • Roman numerals can be generated by the roman and roman-lowercase values
      • Example: <span class='pdfcrowd-page-number' data-pdfcrowd-number-format='roman'></span>
  • data-pdfcrowd-placement - specifies where to place the source URL, allowed values:
    • The URL is inserted to the content
      • Example: <span class='pdfcrowd-source-url'></span>
        will produce <span>http://example.com</span>
    • href - the URL is set to the href attribute
      • Example: <a class='pdfcrowd-source-url' data-pdfcrowd-placement='href'>Link to source</a>
        will produce <a href='http://example.com'>Link to source</a>
    • href-and-content - the URL is set to the href attribute and to the content
      • Example: <a class='pdfcrowd-source-url' data-pdfcrowd-placement='href-and-content'></a>
        will produce <a href='http://example.com'>http://example.com</a>
headerHtml
The string must not be empty.
Examples:
  • It displays the page number and the total page count.
    SetHeaderHtml("Page <span class='pdfcrowd-page-number'></span> of <span class='pdfcrowd-page-count'></span> pages")
func (client *HtmlToPdfClient) SetHeaderHeight(headerHeight string) *HtmlToPdfClient
Set the header height.
headerHeight
Can be specified in inches (in), millimeters (mm), centimeters (cm), or points (pt).
Default: 0.5in
Examples:
  • SetHeaderHeight("30mm")
  • SetHeaderHeight("1in")
Load an HTML code from the specified URL and use it as the page footer. The following classes can be used in the HTML. The content of the respective elements will be expanded as follows:
  • pdfcrowd-page-count - the total page count of printed pages
  • pdfcrowd-page-number - the current page number
  • pdfcrowd-source-url - the source URL of a converted document
The following attributes can be used:
  • data-pdfcrowd-number-format - specifies the type of the used numerals
    • Arabic numerals are used by default.
    • Roman numerals can be generated by the roman and roman-lowercase values
      • Example: <span class='pdfcrowd-page-number' data-pdfcrowd-number-format='roman'></span>
  • data-pdfcrowd-placement - specifies where to place the source URL, allowed values:
    • The URL is inserted to the content
      • Example: <span class='pdfcrowd-source-url'></span>
        will produce <span>http://example.com</span>
    • href - the URL is set to the href attribute
      • Example: <a class='pdfcrowd-source-url' data-pdfcrowd-placement='href'>Link to source</a>
        will produce <a href='http://example.com'>Link to source</a>
    • href-and-content - the URL is set to the href attribute and to the content
      • Example: <a class='pdfcrowd-source-url' data-pdfcrowd-placement='href-and-content'></a>
        will produce <a href='http://example.com'>http://example.com</a>
Examples:
  • SetFooterUrl("http://myserver.com/header.html")
Use the specified HTML as the page footer. The following classes can be used in the HTML. The content of the respective elements will be expanded as follows:
  • pdfcrowd-page-count - the total page count of printed pages
  • pdfcrowd-page-number - the current page number
  • pdfcrowd-source-url - the source URL of a converted document
The following attributes can be used:
  • data-pdfcrowd-number-format - specifies the type of the used numerals
    • Arabic numerals are used by default.
    • Roman numerals can be generated by the roman and roman-lowercase values
      • Example: <span class='pdfcrowd-page-number' data-pdfcrowd-number-format='roman'></span>
  • data-pdfcrowd-placement - specifies where to place the source URL, allowed values:
    • The URL is inserted to the content
      • Example: <span class='pdfcrowd-source-url'></span>
        will produce <span>http://example.com</span>
    • href - the URL is set to the href attribute
      • Example: <a class='pdfcrowd-source-url' data-pdfcrowd-placement='href'>Link to source</a>
        will produce <a href='http://example.com'>Link to source</a>
    • href-and-content - the URL is set to the href attribute and to the content
      • Example: <a class='pdfcrowd-source-url' data-pdfcrowd-placement='href-and-content'></a>
        will produce <a href='http://example.com'>http://example.com</a>
Examples:
  • It displays the page number and the total page count.
    SetFooterHtml("Page <span class='pdfcrowd-page-number'></span> of <span class='pdfcrowd-page-count'></span> pages")
Set the footer height.
Examples:
  • SetFooterHeight("30mm")
  • SetFooterHeight("1in")
func (client *HtmlToPdfClient) SetPrintPageRange(pages string) *HtmlToPdfClient
Set the page range to print.
pages
A comma separated list of page numbers or ranges.
Examples:
  • Just the second page is printed.
    SetPrintPageRange("2")
  • The first and the third page are printed.
    SetPrintPageRange("1,3")
  • Everything except the first page is printed.
    SetPrintPageRange("2-")
  • Just first 3 pages are printed.
    SetPrintPageRange("-3")
  • Pages 3, 6, 7, 8 and 9 are printed.
    SetPrintPageRange("3,6-9")
func (client *HtmlToPdfClient) SetExcludeHeaderOnPages(pages string) *HtmlToPdfClient
The page header is not printed on the specified pages.
pages
List of physical page numbers. Negative numbers count backwards from the last page: -1 is the last page, -2 is the last but one page, and so on.
A comma separated list of page numbers.
Examples:
  • The header is not printed on the second page.
    SetExcludeHeaderOnPages("2")
  • The header is not printed on the first and the last page.
    SetExcludeHeaderOnPages("1,-1")
The page footer is not printed on the specified pages.
Examples:
  • The footer is not printed on the second page.
    SetExcludeFooterOnPages("2")
  • The footer is not printed on the first and the last page.
    SetExcludeFooterOnPages("1,-1")
func (client *HtmlToPdfClient) SetPageNumberingOffset(offset int) *HtmlToPdfClient
Set an offset between physical and logical page numbers.
offset
Integer specifying page offset.
Default: 0
Examples:
  • The page numbering will start with 0. Set exclude_header_on_pages to "1" and the page numbering will start on the second page with 1.
    SetPageNumberingOffset(1)
  • The page numbering will start with 11 on the first page. It can be useful for joining documents.
    SetPageNumberingOffset(-10)
func (client *HtmlToPdfClient) SetContentAreaX(contentAreaX string) *HtmlToPdfClient
Set the top left X coordinate of the content area. It is relative to the top left X coordinate of the print area.
contentAreaX
Can be specified in inches (in), millimeters (mm), centimeters (cm), or points (pt). It may contain a negative value.
Default: 0in
Examples:
  • SetContentAreaX("-1in")
  • SetContentAreaX("2.5cm")
func (client *HtmlToPdfClient) SetContentAreaY(contentAreaY string) *HtmlToPdfClient
Set the top left Y coordinate of the content area. It is relative to the top left Y coordinate of the print area.
contentAreaY
Can be specified in inches (in), millimeters (mm), centimeters (cm), or points (pt). It may contain a negative value.
Default: 0in
Examples:
  • SetContentAreaY("-1in")
  • SetContentAreaY("2.5cm")
func (client *HtmlToPdfClient) SetContentAreaWidth(contentAreaWidth string) *HtmlToPdfClient
Set the width of the content area. It should be at least 1 inch.
contentAreaWidth
Can be specified in inches (in), millimeters (mm), centimeters (cm), or points (pt).
Default: The width of the print area.
Examples:
  • SetContentAreaWidth("8in")
  • SetContentAreaWidth("25cm")
func (client *HtmlToPdfClient) SetContentAreaHeight(contentAreaHeight string) *HtmlToPdfClient
Set the height of the content area. It should be at least 1 inch.
contentAreaHeight
Can be specified in inches (in), millimeters (mm), centimeters (cm), or points (pt).
Default: The height of the print area.
Examples:
  • SetContentAreaHeight("8in")
  • SetContentAreaHeight("25cm")
func (client *HtmlToPdfClient) SetContentArea(x string, y string, width string, height string) *HtmlToPdfClient
Set the content area position and size. The content area enables to specify a web page area to be converted.
x
Set the top left X coordinate of the content area. It is relative to the top left X coordinate of the print area.
Can be specified in inches (in), millimeters (mm), centimeters (cm), or points (pt). It may contain a negative value.
Default: 0in
y
Set the top left Y coordinate of the content area. It is relative to the top left Y coordinate of the print area.
Can be specified in inches (in), millimeters (mm), centimeters (cm), or points (pt). It may contain a negative value.
Default: 0in
width
Set the width of the content area. It should be at least 1 inch.
Can be specified in inches (in), millimeters (mm), centimeters (cm), or points (pt).
Default: The width of the print area.
height
Set the height of the content area. It should be at least 1 inch.
Can be specified in inches (in), millimeters (mm), centimeters (cm), or points (pt).
Default: The height of the print area.

 

Watermark & Background

func (client *HtmlToPdfClient) SetPageWatermark(pageWatermark string) *HtmlToPdfClient
Apply the first page of the watermark PDF to every page of the output PDF.
pageWatermark
The file path to a local watermark PDF file.
The file must exist and not be empty.
func (client *HtmlToPdfClient) SetPageWatermarkUrl(pageWatermarkUrl string) *HtmlToPdfClient
Load a watermark PDF from the specified URL and apply the first page of the watermark PDF to every page of the output PDF.
pageWatermarkUrl
The supported protocols are http:// and https://.
Examples:
  • SetPageWatermarkUrl("http://myserver.com/watermark.pdf")
func (client *HtmlToPdfClient) SetMultipageWatermark(multipageWatermark string) *HtmlToPdfClient
Apply each page of the specified watermark PDF to the corresponding page of the output PDF.
multipageWatermark
The file path to a local watermark PDF file.
The file must exist and not be empty.
func (client *HtmlToPdfClient) SetMultipageWatermarkUrl(multipageWatermarkUrl string) *HtmlToPdfClient
Load a watermark PDF from the specified URL and apply each page of the specified watermark PDF to the corresponding page of the output PDF.
multipageWatermarkUrl
The supported protocols are http:// and https://.
Examples:
  • SetMultipageWatermarkUrl("http://myserver.com/watermark.pdf")
func (client *HtmlToPdfClient) SetPageBackground(pageBackground string) *HtmlToPdfClient
Apply the first page of the specified PDF to the background of every page of the output PDF.
pageBackground
The file path to a local background PDF file.
The file must exist and not be empty.
func (client *HtmlToPdfClient) SetPageBackgroundUrl(pageBackgroundUrl string) *HtmlToPdfClient
Load a background PDF from the specified URL and apply the first page of the background PDF to every page of the output PDF.
pageBackgroundUrl
The supported protocols are http:// and https://.
Examples:
  • SetPageBackgroundUrl("http://myserver.com/background.pdf")
func (client *HtmlToPdfClient) SetMultipageBackground(multipageBackground string) *HtmlToPdfClient
Apply each page of the specified PDF to the background of the corresponding page of the output PDF.
multipageBackground
The file path to a local background PDF file.
The file must exist and not be empty.
func (client *HtmlToPdfClient) SetMultipageBackgroundUrl(multipageBackgroundUrl string) *HtmlToPdfClient
Load a background PDF from the specified URL and apply each page of the specified background PDF to the corresponding page of the output PDF.
multipageBackgroundUrl
The supported protocols are http:// and https://.
Examples:
  • SetMultipageBackgroundUrl("http://myserver.com/background.pdf")
func (client *HtmlToPdfClient) SetPageBackgroundColor(pageBackgroundColor string) *HtmlToPdfClient
The page background color in RGB or RGBA hexadecimal format. The color fills the entire page regardless of the margins.
pageBackgroundColor
The value must be in RRGGBB or RRGGBBAA hexadecimal format.
Examples:
  • red color
    SetPageBackgroundColor("FF0000")
  • green color
    SetPageBackgroundColor("00ff00")
  • green color with 50% opacity
    SetPageBackgroundColor("00ff0080")

 

General Options

func (client *HtmlToPdfClient) SetNoBackground(noBackground bool) *HtmlToPdfClient
Do not print the background graphics.
noBackground
Set to true to disable the background graphics.
Default: false
func (client *HtmlToPdfClient) SetDisableJavascript(disableJavascript bool) *HtmlToPdfClient
Do not execute JavaScript.
disableJavascript
Set to true to disable JavaScript in web pages.
Default: false
func (client *HtmlToPdfClient) SetDisableImageLoading(disableImageLoading bool) *HtmlToPdfClient
Do not load images.
disableImageLoading
Set to true to disable loading of images.
Default: false
func (client *HtmlToPdfClient) SetDisableRemoteFonts(disableRemoteFonts bool) *HtmlToPdfClient
Disable loading fonts from remote sources.
disableRemoteFonts
Set to true disable loading remote fonts.
Default: false
func (client *HtmlToPdfClient) SetBlockAds(blockAds bool) *HtmlToPdfClient
Try to block ads. Enabling this option can produce smaller output and speed up the conversion.
blockAds
Set to true to block ads in web pages.
Default: false
func (client *HtmlToPdfClient) SetDefaultEncoding(defaultEncoding string) *HtmlToPdfClient
Set the default HTML content text encoding.
defaultEncoding
The text encoding of the HTML content.
Default: auto detect
func (client *HtmlToPdfClient) SetHttpAuth(userName string, password string) *HtmlToPdfClient
Set credentials to access HTTP base authentication protected websites.
userName
Set the HTTP authentication user name.
password
Set the HTTP authentication password.
func (client *HtmlToPdfClient) SetUsePrintMedia(usePrintMedia bool) *HtmlToPdfClient
Use the print version of the page if available (@media print).
usePrintMedia
Set to true to use the print version of the page.
Default: false
func (client *HtmlToPdfClient) SetNoXpdfcrowdHeader(noXpdfcrowdHeader bool) *HtmlToPdfClient
Do not send the X-Pdfcrowd HTTP header in Pdfcrowd HTTP requests.
noXpdfcrowdHeader
Set to true to disable sending X-Pdfcrowd HTTP header.
Default: false
func (client *HtmlToPdfClient) SetCookies(cookies string) *HtmlToPdfClient
Set cookies that are sent in Pdfcrowd HTTP requests.
cookies
The cookie string.
Examples:
  • SetCookies("session=6d7184b3bf35;token=2710")
func (client *HtmlToPdfClient) SetVerifySslCertificates(verifySslCertificates bool) *HtmlToPdfClient
Do not allow insecure HTTPS connections.
verifySslCertificates
Set to true to enable SSL certificate verification.
Default: false
func (client *HtmlToPdfClient) SetFailOnMainUrlError(failOnError bool) *HtmlToPdfClient
Abort the conversion if the main URL HTTP status code is greater than or equal to 400.
failOnError
Set to true to abort the conversion.
Default: false
func (client *HtmlToPdfClient) SetFailOnAnyUrlError(failOnError bool) *HtmlToPdfClient
Abort the conversion if any of the sub-request HTTP status code is greater than or equal to 400 or if some sub-requests are still pending. See details in a debug log.
failOnError
Set to true to abort the conversion.
Default: false
func (client *HtmlToPdfClient) SetCustomJavascript(customJavascript string) *HtmlToPdfClient
Run a custom JavaScript after the document is loaded and ready to print. The script is intended for post-load DOM manipulation (add/remove elements, update CSS, ...). In addition to the standard browser APIs, the custom JavaScript code can use helper functions from our JavaScript library.
customJavascript
A string containing a JavaScript code.
The string must not be empty.
func (client *HtmlToPdfClient) SetOnLoadJavascript(onLoadJavascript string) *HtmlToPdfClient
Run a custom JavaScript right after the document is loaded. The script is intended for early DOM manipulation (add/remove elements, update CSS, ...). In addition to the standard browser APIs, the custom JavaScript code can use helper functions from our JavaScript library.
onLoadJavascript
A string containing a JavaScript code.
The string must not be empty.
func (client *HtmlToPdfClient) SetCustomHttpHeader(customHttpHeader string) *HtmlToPdfClient
Set a custom HTTP header that is sent in Pdfcrowd HTTP requests.
customHttpHeader
A string containing the header name and value separated by a colon.
Examples:
  • SetCustomHttpHeader("X-My-Client-ID:k2017-12345")
func (client *HtmlToPdfClient) SetJavascriptDelay(javascriptDelay int) *HtmlToPdfClient
Wait the specified number of milliseconds to finish all JavaScript after the document is loaded. The maximum value is determined by your API license.
javascriptDelay
The number of milliseconds to wait.
Must be a positive integer number or 0.
Default: 200
func (client *HtmlToPdfClient) SetElementToConvert(selectors string) *HtmlToPdfClient
Convert only the specified element from the main document and its children. The element is specified by one or more CSS selectors. If the element is not found, the conversion fails. If multiple elements are found, the first one is used.
selectors
One or more CSS selectors separated by commas.
The string must not be empty.
Examples:
  • The first element with the id main-content is converted.
    SetElementToConvert("#main-content")
  • The first element with the class name main-content is converted.
    SetElementToConvert(".main-content")
  • The first element with the tag name table is converted.
    SetElementToConvert("table")
  • The first element with the tag name table or with the id main-content is converted.
    SetElementToConvert("table, #main-content")
  • The first element <p class="article"> within <div class="user-panel main"> is converted.
    SetElementToConvert("div.user-panel.main p.article")
func (client *HtmlToPdfClient) SetElementToConvertMode(mode string) *HtmlToPdfClient
Specify the DOM handling when only a part of the document is converted.
mode
Allowed values:
  • cut-out
    The element and its children are cut out of the document.
  • remove-siblings
    All element's siblings are removed.
  • hide-siblings
    All element's sibilings are hidden.
Default: cut-out
func (client *HtmlToPdfClient) SetWaitForElement(selectors string) *HtmlToPdfClient
Wait for the specified element in a source document. The element is specified by one or more CSS selectors. The element is searched for in the main document and all iframes. If the element is not found, the conversion fails. Your API license defines the maximum wait time by "Max Delay" parameter.
selectors
One or more CSS selectors separated by commas.
The string must not be empty.
Examples:
  • Wait until an element with the id main-content is found.
    SetWaitForElement("#main-content")
  • Wait until an element with the class name main-content is found.
    SetWaitForElement(".main-content")
  • Wait until an element with the tag name table is found.
    SetWaitForElement("table")
  • Wait until an element with the tag name table or with the id main-content is found.
    SetWaitForElement("table, #main-content")
  • Wait until <p class="article"> is found within <div class="user-panel main">.
    SetWaitForElement("div.user-panel.main p.article")

 

func (client *HtmlToPdfClient) SetViewportWidth(viewportWidth int) *HtmlToPdfClient
Set the viewport width in pixels. The viewport is the user's visible area of the page.
viewportWidth
The value must be in the range 96-65000.
Default: 1024
func (client *HtmlToPdfClient) SetViewportHeight(viewportHeight int) *HtmlToPdfClient
Set the viewport height in pixels. The viewport is the user's visible area of the page.
viewportHeight
Must be a positive integer number.
Default: 768
func (client *HtmlToPdfClient) SetViewport(width int, height int) *HtmlToPdfClient
Set the viewport size. The viewport is the user's visible area of the page.
width
Set the viewport width in pixels. The viewport is the user's visible area of the page.
The value must be in the range 96-65000.
Default: 1024
height
Set the viewport height in pixels. The viewport is the user's visible area of the page.
Must be a positive integer number.
Default: 768
func (client *HtmlToPdfClient) SetRenderingMode(renderingMode string) *HtmlToPdfClient
Set the rendering mode.
renderingMode
The rendering mode.
Allowed values:
  • default
    This mode is based on the standard browser print functionality.
  • viewport
    The viewport width affects the @media min-width and max-width CSS properties. This mode can be used to choose a particular version (mobile, desktop, ..) of a responsive page.
Default: default
func (client *HtmlToPdfClient) SetSmartScalingMode(smartScalingMode string) *HtmlToPdfClient
Specifies the scaling mode used for fitting the HTML contents to the print area.
smartScalingMode
The smart scaling mode.
Allowed values:
  • default
    This mode is based on the standard browser print functionality.
  • disabled
    No smart scaling is performed.
  • viewport-fit
    The viewport width fits the print area width.
  • content-fit
    The HTML contents width fits the print area width.
  • single-page-fit
    The whole HTML contents fits the print area of a single page.
Default: default
func (client *HtmlToPdfClient) SetScaleFactor(scaleFactor int) *HtmlToPdfClient
Set the scaling factor (zoom) for the main page area.
scaleFactor
The percentage value.
The value must be in the range 10-500.
Default: 100
Set the scaling factor (zoom) for the header and footer.
func (client *HtmlToPdfClient) SetDisableSmartShrinking(disableSmartShrinking bool) *HtmlToPdfClient
Disable the intelligent shrinking strategy that tries to optimally fit the HTML contents to a PDF page.
disableSmartShrinking
Set to true to disable the intelligent shrinking strategy.
Default: false
func (client *HtmlToPdfClient) SetJpegQuality(jpegQuality int) *HtmlToPdfClient
Set the quality of embedded JPEG images. A lower quality results in a smaller PDF file but can lead to compression artifacts.
jpegQuality
The percentage value.
The value must be in the range 1-100.
Default: 100
func (client *HtmlToPdfClient) SetConvertImagesToJpeg(convertImagesToJpeg string) *HtmlToPdfClient
Specify which image types will be converted to JPEG. Converting lossless compression image formats (PNG, GIF, ...) to JPEG may result in a smaller PDF file.
convertImagesToJpeg
The image category.
Allowed values:
  • none
    No image conversion is done.
  • opaque
    Only opaque images are converted to JPEG images.
  • all
    All images are converted to JPEG images. The JPEG format does not support transparency so the transparent color is replaced by a PDF page background color.
Default: none
func (client *HtmlToPdfClient) SetImageDpi(imageDpi int) *HtmlToPdfClient
Set the DPI of images in PDF. A lower DPI may result in a smaller PDF file. If the specified DPI is higher than the actual image DPI, the original image DPI is retained (no upscaling is performed). Use 0 to leave the images unaltered.
imageDpi
The DPI value.
Must be a positive integer number or 0.
Default: 0
Examples:
  • No change of the source image is done.
    SetImageDpi(0)
  • Screen-only view lower DPI.
    SetImageDpi(72)
  • Screen-only view recommended DPI.
    SetImageDpi(96)
  • Ebook typical DPI.
    SetImageDpi(150)
  • Printer standard DPI.
    SetImageDpi(300)

 

PDF Format

Miscellaneous values for PDF output.

func (client *HtmlToPdfClient) SetLinearize(linearize bool) *HtmlToPdfClient
Create linearized PDF. This is also known as Fast Web View.
linearize
Set to true to create linearized PDF.
Default: false
func (client *HtmlToPdfClient) SetEncrypt(encrypt bool) *HtmlToPdfClient
Encrypt the PDF. This prevents search engines from indexing the contents.
encrypt
Set to true to enable PDF encryption.
Default: false
func (client *HtmlToPdfClient) SetUserPassword(userPassword string) *HtmlToPdfClient
Protect the PDF with a user password. When a PDF has a user password, it must be supplied in order to view the document and to perform operations allowed by the access permissions.
userPassword
The user password.
func (client *HtmlToPdfClient) SetOwnerPassword(ownerPassword string) *HtmlToPdfClient
Protect the PDF with an owner password. Supplying an owner password grants unlimited access to the PDF including changing the passwords and access permissions.
ownerPassword
The owner password.
func (client *HtmlToPdfClient) SetNoPrint(noPrint bool) *HtmlToPdfClient
Disallow printing of the output PDF.
noPrint
Set to true to set the no-print flag in the output PDF.
Default: false
func (client *HtmlToPdfClient) SetNoModify(noModify bool) *HtmlToPdfClient
Disallow modification of the output PDF.
noModify
Set to true to set the read-only only flag in the output PDF.
Default: false
func (client *HtmlToPdfClient) SetNoCopy(noCopy bool) *HtmlToPdfClient
Disallow text and graphics extraction from the output PDF.
noCopy
Set to true to set the no-copy flag in the output PDF.
Default: false
func (client *HtmlToPdfClient) SetTitle(title string) *HtmlToPdfClient
Set the title of the PDF.
title
The title.
func (client *HtmlToPdfClient) SetSubject(subject string) *HtmlToPdfClient
Set the subject of the PDF.
subject
The subject.
func (client *HtmlToPdfClient) SetAuthor(author string) *HtmlToPdfClient
Set the author of the PDF.
author
The author.
func (client *HtmlToPdfClient) SetKeywords(keywords string) *HtmlToPdfClient
Associate keywords with the document.
keywords
The string with the keywords.

 

Viewer Preferences

These preferences specify how a PDF viewer should present the document. The preferences may be ignored by some PDF viewers.

func (client *HtmlToPdfClient) SetPageLayout(pageLayout string) *HtmlToPdfClient
Specify the page layout to be used when the document is opened.
pageLayout
Allowed values:
  • single-page
    Display one page at a time.
  • one-column
    Display the pages in one column.
  • two-column-left
    Display the pages in two columns, with odd-numbered pages on the left.
  • two-column-right
    Display the pages in two columns, with odd-numbered pages on the right.
func (client *HtmlToPdfClient) SetPageMode(pageMode string) *HtmlToPdfClient
Specify how the document should be displayed when opened.
pageMode
Allowed values:
  • full-screen
    Full-screen mode.
  • thumbnails
    Thumbnail images are visible.
  • outlines
    Document outline is visible.
func (client *HtmlToPdfClient) SetInitialZoomType(initialZoomType string) *HtmlToPdfClient
Specify how the page should be displayed when opened.
initialZoomType
Allowed values:
  • fit-width
    The page content is magnified just enough to fit the entire width of the page within the window.
  • fit-height
    The page content is magnified just enough to fit the entire height of the page within the window.
  • fit-page
    The page content is magnified just enough to fit the entire page within the window both horizontally and vertically. If the required horizontal and vertical magnification factors are different, use the smaller of the two, centering the page within the window in the other dimension.
func (client *HtmlToPdfClient) SetInitialPage(initialPage int) *HtmlToPdfClient
Display the specified page when the document is opened.
initialPage
Must be a positive integer number.
func (client *HtmlToPdfClient) SetInitialZoom(initialZoom int) *HtmlToPdfClient
Specify the initial page zoom in percents when the document is opened.
initialZoom
Must be a positive integer number.
func (client *HtmlToPdfClient) SetHideToolbar(hideToolbar bool) *HtmlToPdfClient
Specify whether to hide the viewer application's tool bars when the document is active.
hideToolbar
Set to true to hide tool bars.
Default: false
func (client *HtmlToPdfClient) SetHideMenubar(hideMenubar bool) *HtmlToPdfClient
Specify whether to hide the viewer application's menu bar when the document is active.
hideMenubar
Set to true to hide the menu bar.
Default: false
func (client *HtmlToPdfClient) SetHideWindowUi(hideWindowUi bool) *HtmlToPdfClient
Specify whether to hide user interface elements in the document's window (such as scroll bars and navigation controls), leaving only the document's contents displayed.
hideWindowUi
Set to true to hide ui elements.
Default: false
func (client *HtmlToPdfClient) SetFitWindow(fitWindow bool) *HtmlToPdfClient
Specify whether to resize the document's window to fit the size of the first displayed page.
fitWindow
Set to true to resize the window.
Default: false
func (client *HtmlToPdfClient) SetCenterWindow(centerWindow bool) *HtmlToPdfClient
Specify whether to position the document's window in the center of the screen.
centerWindow
Set to true to center the window.
Default: false
func (client *HtmlToPdfClient) SetDisplayTitle(displayTitle bool) *HtmlToPdfClient
Specify whether the window's title bar should display the document title. If false , the title bar should instead display the name of the PDF file containing the document.
displayTitle
Set to true to display the title.
Default: false
func (client *HtmlToPdfClient) SetRightToLeft(rightToLeft bool) *HtmlToPdfClient
Set the predominant reading order for text to right-to-left. This option has no direct effect on the document's contents or page numbering but can be used to determine the relative positioning of pages when displayed side by side or printed n-up
rightToLeft
Set to true to set right-to-left reading order.
Default: false

 

Miscellaneous

func (client *HtmlToPdfClient) SetDebugLog(debugLog bool) *HtmlToPdfClient
Turn on the debug logging. Details about the conversion are stored in the debug log. The URL of the log can be obtained from the getDebugLogUrl method or available in conversion statistics.
debugLog
Set to true to enable the debug logging.
Default: false
func (client *HtmlToPdfClient) GetDebugLogUrl() string
Get the URL of the debug log for the last conversion.
Returns
  • string - The link to the debug log.
func (client *HtmlToPdfClient) GetRemainingCreditCount() int
Get the number of conversion credits available in your account.
This method can only be called after a call to one of the convertXYZ methods.
The returned value can differ from the actual count if you run parallel conversions.
The special value 999999 is returned if the information is not available.
Returns
  • int - The number of credits.
func (client *HtmlToPdfClient) GetConsumedCreditCount() int
Get the number of credits consumed by the last conversion.
Returns
  • int - The number of credits.
func (client *HtmlToPdfClient) GetJobId() string
Get the job id.
Returns
  • string - The unique job identifier.
func (client *HtmlToPdfClient) GetPageCount() int
Get the total number of pages in the output document.
Returns
  • int - The page count.
func (client *HtmlToPdfClient) GetOutputSize() int
Get the size of the output in bytes.
Returns
  • int - The count of bytes.
func (client *HtmlToPdfClient) SetTag(tag string) *HtmlToPdfClient
Tag the conversion with a custom value. The tag is used in conversion statistics. A value longer than 32 characters is cut off.
tag
A string with the custom tag.
func (client *HtmlToPdfClient) SetHttpProxy(httpProxy string) *HtmlToPdfClient
A proxy server used by Pdfcrowd conversion process for accessing the source URLs with HTTP scheme. It can help to circumvent regional restrictions or provide limited access to your intranet.
httpProxy
The value must have format DOMAIN_OR_IP_ADDRESS:PORT.
Examples:
  • SetHttpProxy("myproxy.com:8080")
  • SetHttpProxy("113.25.84.10:33333")
func (client *HtmlToPdfClient) SetHttpsProxy(httpsProxy string) *HtmlToPdfClient
A proxy server used by Pdfcrowd conversion process for accessing the source URLs with HTTPS scheme. It can help to circumvent regional restrictions or provide limited access to your intranet.
httpsProxy
The value must have format DOMAIN_OR_IP_ADDRESS:PORT.
Examples:
  • SetHttpsProxy("myproxy.com:443")
  • SetHttpsProxy("113.25.84.10:44333")
func (client *HtmlToPdfClient) SetClientCertificate(clientCertificate string) *HtmlToPdfClient
A client certificate to authenticate Pdfcrowd converter on your web server. The certificate is used for two-way SSL/TLS authentication and adds extra security.
clientCertificate
The file must be in PKCS12 format.
The file must exist and not be empty.
func (client *HtmlToPdfClient) SetClientCertificatePassword(clientCertificatePassword string) *HtmlToPdfClient
A password for PKCS12 file with a client certificate if it is needed.
clientCertificatePassword

 

API Client Options

func (client *HtmlToPdfClient) SetUseHttp(useHttp bool) *HtmlToPdfClient
Specifies if the client communicates over HTTP or HTTPS with Pdfcrowd API.
useHttp
Set to true to use HTTP.
Default: false
func (client *HtmlToPdfClient) SetUserAgent(userAgent string) *HtmlToPdfClient
Set a custom user agent HTTP header. It can be usefull if you are behind some proxy or firewall.
userAgent
The user agent string.
Default: pdfcrowd_go_client/4.11.0 (http://pdfcrowd.com)
func (client *HtmlToPdfClient) SetProxy(host string, port int, userName string, password string) *HtmlToPdfClient
Specifies an HTTP proxy that the API client library will use to connect to the internet.
host
The proxy hostname.
port
The proxy port.
userName
The username.
password
The password.
func (client *HtmlToPdfClient) SetRetryCount(retryCount int) *HtmlToPdfClient
Specifies the number of retries when the 502 HTTP status code is received. The 502 status code indicates a temporary network issue. This feature can be disabled by setting to 0.
retryCount
Number of retries wanted.
Default: 1