The toHTML S3 generic method converts various report objects into HTML representations.
This is the primary method for rendering report content for display in web browsers,
IDE Viewer, or for inclusion in Shiny applications.
Arguments
- x
-
The object to convert to HTML. Supported types include:
teal_card: A list-like structure containing report elementsteal_report: A report object containing ateal_cardReportCard: Deprecated R6 class for report cardscode_chunk: Code blocks created withcode_chunk()chunk_output: Output from evaluated code chunksPlot objects:
ggplot,recordedplot,trellis,grobTable objects:
data.frame,rtables,TableTree,ElementaryTable,listing_df,gtsummary,flextable,datatablesText:
characterstrings (rendered as markdown)Other objects: Conditions, model summaries, etc.
- ...
Additional arguments passed to methods.
Value
An HTML representation of the input object. The exact return type depends on the input class:
For
teal_card: Abslib::card()containing all elementsFor
code_chunk: Abslib::accordion()with the codeFor plots: A
shiny::tags$img()tagFor text: HTML markup from markdown conversion
For tables: HTML table elements
All returns are wrapped with htmltools::browsable() to enable viewer display.
Details
Relationship with teal_card
The teal_card class is a central component in the teal.reporter ecosystem. It is an S3 list
where each element represents a piece of report content (text, plots, tables, code chunks, etc.).
The toHTML method for teal_card objects:
Iterates through each element in the
teal_cardlistCalls
toHTML()recursively on each element based on its classWraps all converted elements in a
bslib::card()container
This hierarchical conversion allows complex report structures to be rendered as styled HTML with proper formatting for each content type.
Content Type Conversions
Text and Markdown: Character strings are converted to HTML using CommonMark markdown syntax.
Supports headers, lists, code blocks, emphasis, and other markdown features.
Code Chunks: Created with code_chunk(), these are rendered as collapsible Bootstrap
accordions with syntax highlighting. The accordion includes the programming language indicator
and an icon.
Plots: Plot objects (ggplot, recordedplot, trellis, grob) are converted to PNG
images with base64-encoded data URIs, making them self-contained in the HTML output.
Tables: Table objects are converted to styled HTML tables, typically via flextable
for consistent formatting.
Viewer Integration
All HTML output is wrapped with htmltools::browsable(), which enables:
Automatic render in IDE Viewer when displayed interactively
Proper HTML dependency injection (Bootstrap CSS/JavaScript, Font Awesome icons, etc.)
Standalone HTML files with all required resources
You can override the browsable behavior with:
print(toHTML(x), browse = FALSE) # Print markup to console instead
See also
teal_report()for creating report objectsteal_card()for creating report cardscode_chunk()for creating code blocksrender()for rendering complete reports to files
Examples
# Initialize empty report
report <- teal_report()
# Add arbitrary markdown elements to the report's teal_card
teal_card(report) <- c(
teal_card(report),
"## Document section",
"Lorem ipsum dolor sit amet"
)
# Use within() to execute code and add code-chunk
report <- within(report, a <- 2)
# within() automatically captures code and outputs
report <- within(report, plot(a))
html <- tools::toHTML(report)
# display HTML markup in viewer
html
Document section
Lorem ipsum dolor sit amet
a <- 2
plot(a)
# Print HTML markup to console instead of viewer
print(html, browse = FALSE)
#> <div class="container-fluid">
#> <div class="card bslib-card bslib-mb-spacing html-fill-item html-fill-container" data-bslib-card-init data-require-bs-caller="card()" data-require-bs-version="5">
#> <div class="card-body bslib-gap-spacing html-fill-item html-fill-container" style="margin-top:auto;margin-bottom:auto;flex:1 1 auto;">
#> <h2>Document section</h2>
#>
#> <p>Lorem ipsum dolor sit amet</p>
#>
#> <div class="accordion code_chunk" data-require-bs-caller="accordion()" data-require-bs-version="5" id="bslib-accordion-1382">
#> <div class="accordion-item" data-value="rcode">
#> <div class="accordion-header">
#> <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#bslib-accordion-panel-6549" aria-expanded="false" aria-controls="bslib-accordion-panel-6549">
#> <div class="accordion-icon"></div>
#> <div class="accordion-title">
#> <span>
#> <i class="fas fa-code" role="presentation" aria-label="code icon"></i>
#> R
#> </span>
#> </div>
#> </button>
#> </div>
#> <div id="bslib-accordion-panel-6549" class="accordion-collapse collapse">
#> <div class="accordion-body">
#> <pre><code class="language-R">a <- 2</code></pre>
#> </div>
#> </div>
#> </div>
#> </div>
#> <div class="accordion code_chunk" data-require-bs-caller="accordion()" data-require-bs-version="5" id="bslib-accordion-2131">
#> <div class="accordion-item" data-value="rcode">
#> <div class="accordion-header">
#> <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#bslib-accordion-panel-2133" aria-expanded="false" aria-controls="bslib-accordion-panel-2133">
#> <div class="accordion-icon"></div>
#> <div class="accordion-title">
#> <span>
#> <i class="fas fa-code" role="presentation" aria-label="code icon"></i>
#> R
#> </span>
#> </div>
#> </button>
#> </div>
#> <div id="bslib-accordion-panel-2133" class="accordion-collapse collapse">
#> <div class="accordion-body">
#> <pre><code class="language-R">plot(a)</code></pre>
#> </div>
#> </div>
#> </div>
#> </div>
#> <img src="data:image/png;base64,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z+bNm2+wcNWqVevXrw+cB1CTtGjRorS0tFOnTp/9WFpa2rp16/xOCaidNgqs4t5DBow++YAJ7f4yuv/WJ1x03o1LWk97uO4OxxYGD1y/Q/ddv3NXVPPmzXv27LnBwrZt2y5atCh4KkBNceSRR44bN+7mm29u3779nDlz7rjjjgcffDDfkwJqo41Ogcq0GHbtzMkjt29S1Pawq/6w5+J7bn9u8zOuP3XHH3DBrNWv33Hmwf179tr7yLP/33PLPj91fv1Tv95n9NSS9PuvFmAD3bt3nzhx4pgxY/bcc8/LL7/8lltuadrUtfaAPPimbqq/1aAjt0qSJGm6/4Sb9/+hI6z++68Gn/H+kZdecnzBSzdOGDxk0d8fPadHvSRdNf+1uW0c7QNi9enT59577833LIDaLvtXcn/z8We2HH/fBYduWZDsPWjXZsMGnPSHAx8/vWu2xwUAyJfsXyWhuE7Rqk+WVyZJkiRFW4+66pyGfxp92ctrHBsEAGqqrAdW0faH/KLBtQftd8KFNz1bkiaF2xz/54s73HDQ4FNve60822MDAORD9vdgFXUb9+Csq4Y0+eiteaurkiQp7Hj4LU9MHtFwfcPttm6R9SOUAAA5l4vCyTTebsjYS4Z8ZdAO/cf8vv+YHAwNAJB7vqkGACCYwAIACCawAACCCSwAgGACCwAgmMACAAgmsAAAggksAIBgAgsAIJjAAgAIJrAAAIIJLACAYAILACCYwAIACCawAACCCSwAgGACCwAgmMACAAgmsAAAggksAIBgAgsAIJjAAgAIJrAAAIIJLACAYAILACCYwAIACCawAACCCSwAgGACCwAgmMACAAgmsAAAggksAIBgAgsAIJjAAgAIJrAAAIIJLACAYAILACCYwAIACCawAACCCSwAgGACCwAgmMACAAgmsAAAggksAIBgAgsAIJjAAgAIJrAAAIIJLACAYAILACCYwAIACCawAACCCSwAgGACCwAgmMACAAgmsAAAggksAIBgAgsAIJjAAgAIJrAAAIIJLACAYAILACCYwAIACCawAACCCSwAgGACCwAgmMACAAgmsAAAggksAIBgAgsAIJjAAgAIJrAAAIIJLACAYAILACCYwAIACCawAACCCSwAgGACCwAgmMACAAgmsAAAggksAIBgAgsAIJjAAgAIJrAAAIIJLACAYAILACCYwAIACCawAACCCSwAgGACCwAgmMACAAgmsAAAggksAIBgAgsAIJjAAgAIJrAAAIIJLACAYAILACCYwAIACCawAACCCSwAgGACCwAgmMACAAgmsAAAggksAIBgAgsAIJjAAgAIJrAAAIIJLACAYAILACCYwAIACCawAACCCSwAgGACCwAgmMACAAgmsAAAggksAIBgAgsAIJjAAgAIVpTtAdJV81/7qE7nbdvWTZJk3cInbv7vv724uKDDLj876pcDt6ib7dEBAHIv63uwKp7/3dCRN8+rTJLKd/98wK4/n/RmQfvNGi2578Q9fvLbF9dme3QAgNzL+h6sL1S8duuk9w+58/mr9myYJEl6XI8hfa9+ZOzkIQ1yNgMAgJzI4TlY69dVbb1Dt897KtN6u+0aLC0pS3M3PgBAbuQisCrenXrB+P/6/RPlrV6/8drnViVJUvnJK5OvvLfurj2bZXIwPgBATmU9sIp2Pe2uyafvs02jsgWr2uzUeO6LCyuT8vtO3u/yypOuG7dj7o5QAgDkStYLJ9N46z77bd3n6wuHTp53UJG4AgBqpvxUTlFRwfuTR456YciUqw9q9S1HCefNm/f2229vvLCqqirr8wMA+AHytRsp02TbPfevt1W9bz8Ha/HixS+88MIGC6uqqjbbbLPsTg0A4IfJW2C17HPUaX2+6x69evXq1avXBgunTJlSWlqaxXkBAPxgvioHACCYwAIACJb9Q4SVb9x06oXTS7/hzPSi7sdcfc7ezV0KCwCoWbIfWIXbDD52yHPHHH9Hk+N+c2iXwq/estlmddUVAFDj5OAk9+JWOx168Zn3znxyyHH/Z8/i7I8HAJBfOforwsb7Tpy8Y2uXFgUAaoMcNU+maZdeTXMzFABAnvkrQgCAYAILACCYwAIACCawAACCCSwAgGACCwAgmMACAAgmsAAAggksAIBgAgsAIJjAAgAIJrAAAIIJLACAYAILACCYwAIACCawAACCCSwAgGACCwAgmMACAAgmsAAAggksAIBgAgsAIJjAAgAIJrAAAIIJLACAYAILACCYwAIACCawAACCCSwAgGACCwAgmMACAAgmsAAAggksAIBgAgsAIJjAAgAIJrAAAIIJLACAYAILACCYwAIACCawAACCCSwAgGACCwAgmMACAAgmsAAAggksAIBgAgsAIJjAAgAIJrAAAIIJLACAYAILACCYwAIACCawAACCCSwAgGACCwAgmMACAAgmsAAAggksAIBgAgsAIJjAAgAIJrAAAIIJLACAYAILACCYwAIACCawAACCCSwAgGACCwAgmMACAAgmsAAAggksAIBgAgsAIJjAAgAIJrAAAIIJLACAYAILACCYwAIACCawAACCCSwAgGACCwAgmMACAAgmsAAAggksAIBgAgsAIJjAAgAIJrAAAIIJLACAYAILACCYwAIACCawAACCCSwAgGBF+Z7Af6Zp06YXX3zxPffcE7XCp59+ul69elFrY1NWXl5eVFRUWFiY74mQC2VlZQ0aNMj3LMiFdevWFRQUFBVVs7czvp/KyspevXpFrW3+/Pn169ePWtsGMmmaZmnVm77Kysp99913xowZ+Z4IuTBx4sR+/foNGjQo3xMhFwYOHDhz5sx8z4JcuPTSS7t16zZ48OB8T4RcqEabtkOEAADBBBYAQDCBBQAQTGABAAQTWAAAwWp1YGUyGX/ZW3sUFha6RkPtYdOuPWzatUo12rRr9WUakiRZtWpV48aN8z0LcqGsrKxevXoFBbX6Q0XtYdOuPdasWVNcXFyN3nf5IarRpl3bAwsAIJxP8wAAwQQWAEAwgQUAEExgAQAEE1gAAMEEFgBAMIEFABCscMKECfmeQ46kK96cMfXOB59fXHfzTu0ablSW6xa//PBfpk57vrRxp85t6mXyMUMCffr+rL/eed/TH6ZtO23eZMMLEKYrXp9+x+1/e/Kdta06b9WiOC8TJNiako9WFTeuv/EFvStKXpl219S//8/yxh23bm3TrhEqV3y0pKJRozobPZuVS+c8cNut9z3x6pI6W3TusPHrPNXQt27an1u/qmRV2rDeJnid2dry+5eufOy0PQaeNX3B4tmXDt195N0ff/3yqute+8OQPkfc8Oqy0qcv3PfHv3pipauvVmvlL160V5/Rd7275LUbfrHbgX+eW/nVG9Nl00/cbZ+Js0rLFj4wrt+AC2aX5WuaxKl46w8HHXTNO5UbLq/6+C8je+//u2cXLXjk3J/0G/+YTbsGSFdMO3XA+L+v22j54ntG9d5nwqMfly3752VDewydtPHvA9XOt23an0tXPDa+9/anPFKe00n9u9JaoWrhpH1b7nXt/Mo0rfrkr7/osOuFr1V85dbFNw9rv/c1H1amaVq56MHfnPrfc9blbar8cCv+enjb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" style="width: 100%; height: auto;"/>
#> </div>
#> <script data-bslib-card-init>bslib.Card.initializeAllCards();</script>
#> </div>
#> </div>