You can use the object
tag to embed a PDF file
in an HTML file
(but it is not supported by all web browsers).
One tricky point is that the size of the PDF files generated by
LaTeX has to be set in advance; but, to display a table, you may
prefer if the PDF file had exactly the size of the table, to
avoid large empty margins and/or scrolling bars.
You can use GhostScript to crop the PDF file.
Here is an example.
# Sample data
library(stargazer)
example(stargazer)
code <- .Last.value$value
# Generate the LaTeX file
file <- tempfile("latex_", fileext = "")
tex_file <- paste( file, "tex", sep="." )
pdf_file <- paste( file, "pdf", sep="." )
pdf_file2 <- paste( file, "_cropped.pdf", sep="" )
png_file <- paste( file, "png", sep="." )
html_file <- paste( file, "html", sep="." )
cat(
"\\documentclass{report}",
# Unreasonably tall page size: we want everything on the same page
"\\usepackage[paperwidth=10cm,paperheight=100cm,noheadfoot,margin=0in]{geometry}",
"\\begin{document}",
"\\pagestyle{empty}",
paste(code, collapse="\n"),
"\\end{document}\n",
sep="\n",
file = tex_file
)
# Generate the PDF file
old_wd <- getwd()
setwd( tempdir() )
system(paste( "pdflatex --interaction=nonstopmode", shQuote(tex_file) ))
# We need to crop the file.
# I will use Ghostscript, but you could also use
# http://pdfcrop.sourceforge.net/
# or
# http://www.ctan.org/tex-archive/support/pdfcrop
# First, find the dimensions
bbox <- system(paste( "gs -sDEVICE=bbox -dNOPAUSE -dBATCH -f", pdf_file, "2>&1" ), intern=TRUE)
bbox <- bbox[ grep("%%BoundingBox", bbox) ]
bbox <- as.numeric( strsplit(bbox, " ")[[1]][-1] )
# Then, crop the file
cmd <- paste(
"gs -sDEVICE=pdfwrite",
"-o", pdf_file2,
"-c \"[/CropBox [", paste(bbox, collapse=" "), "] /PAGES pdfmark\"",
"-f", pdf_file
)
system(cmd)
# Convert it to PNG, in case the browser cannot display inline PDF files.
# This assumes that ImageMagick is installed.
# You may want to play with the options to have a better quality and/or larger file.
system(paste( "convert", "-trim", "-density 400", pdf_file2, "-resize 50%", png_file ))
# You can now include it in an HTML file
# (or a Markdown file, since you can include raw HTML).
cat(
"<html><body><p>Here is an embedded PDF file.</p>\n",
"<object width='100%' height='100%' type='application/pdf' data='", pdf_file2, "'>",
"<img src='", png_file, "'/>",
"</object>\n",
"</body></html>",
sep="",
file=html_file
)
# Check that the result can be displayed in your browser
# (Chrome should be fine, but I have not had any success with the others.)
browseURL( html_file )