Generating PDF Files from Complex HTML

Processor provides a powerful API for generating PDF files directly from HTML strings. The conversion is fast, but it only supports simple HTML tags, such as <strong>, <a>, or <font>.

If you want to generate a PDF file from more complex HTML, you can use another technique. First save your HTML to a temporary local file, and then generate a PDF file from that URL. PSPDFKit utilizes the full power of WebKit when generating PDF files from URLs, allowing you to use CSS, embed images, or take advantage of a variety of tags and modern HTML constructs. This isn’t possible with simple HTML-to-PDF conversion.

Information

Generating PDF files from URLs is a more time- and memory-consuming operation than simple HTML-to-PDF conversion. Make sure to perform the conversion and opt to do simple HTML-to-PDF conversion if possible.

Information

Using these APIs requires the HTML-to-PDF Conversion component in your license.

let htmlURL = // URL to save the temporary HTML file to.
let pdfURL = // URL to save the converted PDF file to.

let html = """
<html>
    <head>
        <style type="text/css">
            h1 {
                color: red;
            }
        </style>
    </head>
    <body>
        <h1>Hello, world!</h1>
    </body>
</html>
"""

do {
    try html.data(using: .utf8)!.write(to: htmlURL)
} catch {
    // Handle the error.
}

Processor.generatePDF(from: htmlURL, outputFileURL: pdfURL, options: nil) { outputURL, error in
    if let outputURL = outputURL {
        let document = Document(url: outputURL)
        // Handle the document.
    } else if let error = error {
        // Handle the error.
    }
}
NSURL *htmlURL = // URL to save the temporary HTML file to.
NSURL *pdfURL = // URL to save the converted PDF file to.

NSString *html = @"\
<html>\
    <head>\
        <style type=\"text/css\">\
            h1 {\
                color: red;\
            }\
        </style>\
    </head>\
    <body>\
        <h1>Hello, world!</h1>\
    </body>\
</html>";

if (![[html dataUsingEncoding:NSUTF8StringEncoding] writeToURL:htmlURL atomically:NO]) {
    // Handle the error.
}

[PSPDFProcessor generatePDFFromURL:htmlURL outputFileURL:pdfURL options:nil completionBlock:^(NSURL *outputURL, NSError *error) {
    if (outputURL != nil) {
        PSPDFDocument *document = [[PSPDFDocument alloc] initWithURL:outputURL];
        // Handle the document.
    } else if (error != nil) {
        // Handle the error.
    }
}];

For more details about how to generate PDF files from HTML strings, URLs, and attributed strings, take a look at Processor documentation and ConvertHTMLToPDFExample from our Catalog app.