HelloWorldHtml.vb
'' 完毕:
Imports System.IO
Imports System.Drawing
Imports GrapeCity.Documents.Pdf
Imports GrapeCity.Documents.Text
Imports GrapeCity.Documents.Html

'' 此示例演示如何呈现硬编码的 HTML 字符串。
'' 
'' 将 GcDocs.Html 添加到您的项目中:
'' - 支持渲染 HTML 的公共类和扩展方法
''   由 GrapeCity.Documents.Html (GcDocs.Html) 包提供。
'' - GcDocs.Html 支持 Windows、macOS 和 Linux 平台。
'' 
'' 使用 GcDocs.Html 时处理错误:
'' - 如果 GcDocs.Html 没有达到您的预期(例如将 HTML 渲染为 PDF)
''   生成无效的 PDF),检查字符串属性的内容
''   调用 SaveAsPdf 返回后的 GcHtmlBrowser.ErrorLog,
''   它可以解释错误发生的原因。
'' 
'' 上述注释适用于任何使用 GcDocs.Html 的项目。
Public Class HelloWorldHtml
    Function CreatePDF(ByVal stream As Stream) As Integer
        '' 表示要呈现的内容的 HTML 代码:
        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>"

        '' 创建一个新的 PDF 文档,添加页面,获取要绘制的图形:
        Dim doc = New GcPdfDocument()
        Dim page = doc.NewPage()
        Dim g = page.Graphics

        Try
            '' 创建一个用于呈现 HTML 的 GcHtmlBrowser 实例:
            Using browser = Util.NewHtmlBrowser()

                '' 渲染 HTML。
                '' DrawHtml() 的返回值指示是否已呈现任何内容。
                '' 输出参数“size”返回渲染内容的实际大小。
                Dim size As SizeF
                Dim ok = g.DrawHtml(browser, html, 72, 72, New HtmlToPdfFormat(False) With {.MaxPageWidth = 6.5F}, size)

                '' 如果已渲染任何内容,请在渲染内容周围绘制额外的边框:
                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
                    '' 诊断浏览器错误时可能有用的可选诊断。
                    '' 请注意,错误日志可能包含无害的信息消息
                    '' 即使没有错误,所以测试错误日志是否为空
                    '' 不应该被用作错误指示器。
                    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

        '' 保存 PDF:
        doc.Save(stream)
        Return doc.Pages.Count
    End Function
End Class