【问题标题】:Convert (print) a file to PDF - using R? (in windows)将文件转换(打印)为 PDF - 使用 R? (在窗口中)
【发布时间】:2011-11-20 20:43:02
【问题描述】:

我希望使用 R 将 HTML 文件转换为 PDF 文件。

是否有可以执行此转换的命令或工具/命令的组合?

【问题讨论】:

  • 不是一个真正的 R 问题,因为 R 无法做到这一点。您必须调用一个外部实用程序,这是从 R 执行此操作的简单步骤。困难的步骤是 HTML 到 PDF 的转换 - 您所说的“HTML 文件”是指它的 rendered 版本还是纯 HTML 文本?要呈现 HTML,您几乎需要一个 Web 浏览器来处理图像、样式表、javascript。
  • 嗨 spacedman - 我的意思是纯 HTML 文本。如果我理解正确,我需要让 R 从我的浏览器“运行”打印命令。这甚至可能吗?
  • 所以你想要一个 HTML 漂亮的打印机?高亮标签、着色文本之类的?
  • 是的。我想在 R 中创建一个 HTML 报告,然后如果我需要将其作为这样的文件发送,则自动将其打印为 PDF...
  • 还是不清楚...什么是 HTML 报告?您想制作一个包含
  • The error was 2.334
  • 等内容的文件,然后制作一个带有格式化输出的 PDF(即带有项目符号的列表、正确大小的标题等等)?

标签: html r pdf


【解决方案1】:

更新:如果你安装了 Pandoc,你可以使用类似的东西

html_to_pdf <- function(html_file, pdf_file) {
  cmd <- sprintf("pandoc %s -t latex -o %s", html_file, pdf_file)
  system(cmd)
}

有一些 Web 服务可以将 HTML 转换为 PDF 并具有 REST API,因此您可以使用 RCurl 调用它们。快速互联网搜索给出pdfcrowd.com。它们允许您上传文档以及转换 URL,但这是一项付费服务​​。

下一个点击是joliprint,它是免费的。试试这个:

library(RCurl)
url_to_convert <- curlEscape("http://lifehacker.com/5706937/dont-make-important-decisions-until-your-decision-time") #or wherever

the_pdf <- getForm(
  "http://eu.joliprint.com/api/rest/url/print", 
  url = url_to_convert
)

【讨论】:

  • 我似乎遇到了令人讨厌的防火墙问题。请不受公司网络影响的人尝试我的代码。
  • 它会发出警告。并且输出文件似乎不起作用。虽然你的方向看起来很有趣! # 警告消息:# 在 testCurlOptionsInFormParameters(.params) 中:# 在表单参数中找到可能的 curl 选项:url cat(the_pdf, file = "d:\\temp.pdf")
  • 是他们使用 R 将 pdf 转换为 html 的任何方法
  • joliprint.com 还在吗?当我尝试访问它时收到一个错误...有没有其他方法可以做到这一点?
  • @theforestecologist 我也在寻找这个......我在想 rPython 或 reticulate 使用 beautifulsoup 可能是唯一的答案
【解决方案2】:

wkhtmltopdf 是一个很好的跨平台工具。根据您的操作系统安装,然后从 R 调用,例如

system("wkhtmltopdf --javascript-delay 1 in.html out.pdf")

我发现了必要的 javascript 延迟,以避免由于加载 MathJax 而在 pdf 中包含消息“正在加载 [Contrib]/a11y/accessibility-menu.js” - R markdown 生成的 HTML 文件可以做到这一点。

【讨论】:

    【解决方案3】:

    要从 html 转换为 pdf,您可以使用:

    library(pagedown)
    chrome_print(path_To_Html, output = path_To_PDF)
    

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签