HelloWorldHtml.vb
- ''
- '' This code is part of Document Solutions for PDF demos.
- '' Copyright (c) MESCIUS inc. All rights reserved.
- ''
- Imports System.IO
- Imports System.Drawing
- Imports GrapeCity.Documents.Pdf
- Imports GrapeCity.Documents.Text
- Imports GrapeCity.Documents.Html
-
- '' This sample shows how to render a hard-coded HTML string.
- ''
- '' Adding DsHtml to your projects:
- '' - Public classes and extension methods that enable rendering HTML
- '' are provided by the GrapeCity.Documents.Html (DsHtml) package.
- '' - DsHtml supports Windows, macOS and Linux platforms.
- ''
- '' Dealing with errors when using DsHtml:
- '' - If DsHtml is not doing what you expect (e.g. rendering HTML to PDF
- '' produces an invalid PDF), check the content of the string property
- '' GcHtmlBrowser.ErrorLog after the call to SaveAsPdf returns,
- '' it may explain why the error occurred.
- ''
- '' DsHtml uses a local copy of a Chromium-based browser.
- '' You can either rely on Google Chrome or Microsoft Edge browsers
- '' installed in the operating system, or download an instance of
- '' Chromium browser to the application's local folder or some shared folder.
- '' If you know the custom path to an installed Chromium-based browser,
- '' use it instead of the above-mentioned options.
- '' The BrowserFetcher class can be used to install or fetch an already
- '' installed browser, you can then use the BrowserFetcher.GetDownloadedPath()
- '' to get the path to the browser. See the BrowserFetcher class for methods
- '' retrieving the path to Chrome or Edge executables and for other
- '' options and methods that help to download Chromium browser
- '' to a local folder if necessary.
- ''
- '' See the Util.NewHtmlBrowser() utility method used by this sample for a
- '' implementation example.
- ''
- '' The above notes apply to any project that uses DsHtml.
- Public Class HelloWorldHtml
- Function CreatePDF(ByVal stream As Stream) As Integer
- '' HTML code that represents the content to render:
- Dim html = "<!DOCTYPE html>" +
- "<html>" +
- "<head>" +
- "<style>" +
- "span.bold {" +
- "font-weight: bold;" +
- "}" +
- "p.round {" +
- "font: 36px arial, sans-serif;" +
- "color: DarkSlateBlue;" +
- "border: 4px solid SlateBlue;" +
- "border-radius: 16px;" +
- "padding: 3px 5px 3px 5px;" +
- "text-shadow: 3px 2px LightSkyBlue;" +
- "}" +
- "</style>" +
- "</head>" +
- "<body>" +
- "<p class='round'>Hello, World, from <span class='bold'>DsHtml</span>!</p>" +
- "</body>" +
- "</html>"
-
- '' Create a New PDF document, add a page, get graphics to draw on:
- Dim doc = New GcPdfDocument()
- Dim page = doc.NewPage()
- Dim g = page.Graphics
-
- Try
- '' Create an instance of GcHtmlBrowser that is used to render HTML:
- Using browser = Util.NewHtmlBrowser()
-
- '' Render HTML.
- '' The return value from DrawHtml() indicates whether anything has been rendered.
- '' The output parameter 'size' returns the actual size of the rendered content.
- Dim size As SizeF
- Dim ok = g.DrawHtml(browser, html, 72, 72, New HtmlToPdfFormat(False) With {.MaxPageWidth = 6.5F}, size)
-
- '' If anything has been rendered, draw an extra border around the rendered content
- If ok Then
- Dim rc = New RectangleF(72 - 4, 72 - 4, size.Width + 8, size.Height + 8)
- g.DrawRoundRect(rc, 8, Color.PaleVioletRed)
- ElseIf Not String.IsNullOrEmpty(browser.ErrorLog) Then
- '' Optional diagnostics that may be useful when diagnosing browser errors.
- '' Note that the error log may contain harmless information messages
- '' even if there were no errors, so testing whether the error log is empty
- '' should not be used as the error indicator.
- Util.AddNote(browser.ErrorLog, page,
- New RectangleF(72, 72 + size.Height + 36, page.Size.Width - 144, page.Size.Height - size.Height - 108))
- End If
- End Using
- Catch ex As Exception
- Throw New Exception($"Error:\n{ex.Message}")
- End Try
-
- '' Save the PDF
- doc.Save(stream)
- Return doc.Pages.Count
- End Function
- End Class
-