在chrome中将html保存为pdf

2024-02-05

我在用rmarkdown生成 HTML 报告。我在受限制的机器上,无法安装 tex。所以,我试图生成一个 HTML 文档,然后将其转换/打印为 pdf。示例 Markdown 文档是:

---
title: "trials"
author: "Foo Bar"
date: "15 December 2016"
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

```{r cars, echo=FALSE, cache=FALSE, message=FALSE}

library(dplyr, quietly = TRUE)
library(abind, quietly = TRUE)
virginica <- iris %>% filter(Species == "virginica") %>% head() %>% select(-Species)
setosa <- iris %>% filter(Species == "setosa") %>% head() %>% select(-Species)

diff_mat <- virginica - setosa


diff_mat[diff_mat<0] <- '<font color="green">&dArr; </font>'
diff_mat[diff_mat>0] <- '<font color="red">&uArr; </font>'
diff_mat[diff_mat == 0] <- '<font color="blue">&hArr; </font>'

datArray <- abind::abind(virginica, diff_mat, along=3)

fin_dat <- apply(datArray,1:2, function(x)paste(x[1],x[2], sep = " "))

knitr::kable(fin_dat, format = "html",
      escape = FALSE, table.attr = "border=1",
      caption = "Changes across species")

```

I can't knit to word either as the formatting is lost as discussed in HTML formatted tables in rmarkdown word document https://stackoverflow.com/questions/41156265/html-formatted-tables-in-rmarkdown-word-document. The HTML produced is exactly what I wanted. HTML to word using save as in word works mostly fine with some issues and I can print pdf but it is not as good as directly printed from pdf. enter image description here

当我尝试在 Chrome 中将其另存为 pdf 时,颜色丢失了。

There is no issues in print options enter image description here

其他页面,例如我们喜爱的网站中的这个问题使用多列数据替换 NA https://stackoverflow.com/questions/41604626/replace-nas-using-data-from-multiple-columns打印精细

您是否有任何指示我遗漏了一点或问题出在哪里。


在 YAML 标头后面添加以下内容:

<style>
@media print {

  font[color="green"] {
    color: #00ff00!important;
    -webkit-print-color-adjust:exact;
  }

  font[color="red"] {
    color: #ff0000!important;
    -webkit-print-color-adjust:exact;
  }

}
</style>

问题是 RStudio 的默认 R markdown 模板使用 Bootstrap 及其版本bootstrap.min.css has:

@media print {
  *,
  *:before,
  *:after {
    color: #000 !important;
    text-shadow: none !important;
    background: transparent !important;
    -webkit-box-shadow: none !important;
            box-shadow: none !important;
  }

在里面。这是一个相当“破坏性”的媒体查询*导致这些设置被应用到all标签和color: #000 !important; means “没有颜色适合你!”当您打印文档时。我理解这背后的情感(拯救地球+墨粉/墨水成本),但如果你打印为 PDF,那就毫无意义了。

不幸的是,没有用于打印到 PDF 的超针对性媒体查询,因此当您将网页打印到 PDF 时,会应用通用的“打印”媒体查询,而这些无意识的、包罗万象的媒体查询就会接管。

您面临的问题是,您需要非常具体地定位任何其他标签才能覆盖这些设置。这意味着将您自己的 CSS 类添加到您在 Rmds 中生成的任何内容中,或者熟悉“检查元素”直到您掌握所有内容。

However,如果您喜欢冒险,可以将 YAML 标头修改为:

output:
  html_document:
    self_contained: false

当您渲染为 HTML 时,它将创建一个目录,其中包含各种组件的子目录,而不是将它们进行 base64 编码到一个大文档中。

我将我的文档命名为forso.Rmd这意味着它创建了一个名为forso_files并在其下放置子目录。

打开主 HTML 文件并向下滚动,直到看到类似以下内容:

<script src="forso_files/jquery-1.11.3/jquery.min.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link href="forso_files/bootstrap-3.3.5/css/bootstrap.min.css" rel="stylesheet" />
<script src="forso_files/bootstrap-3.3.5/js/bootstrap.min.js"></script>
<script src="forso_files/bootstrap-3.3.5/shim/html5shiv.min.js"></script>
<script src="forso_files/bootstrap-3.3.5/shim/respond.min.js"></script>
<script src="forso_files/navigation-1.1/tabsets.js"></script>

改变这个:

<link href="forso_files/bootstrap-3.3.5/css/bootstrap.min.css" rel="stylesheet" />

to:

<link href="forso_files/bootstrap-3.3.5/css/bootstrap.css" rel="stylesheet" />

Edit bootstrap.css, 去除color: #000 !important;行并添加-webkit-print-color-adjust:exact;线。保存副本bootstrap.css在其他地方,因为它会在未来的渲染中被压缩(即您需要在每次渲染时将其复制回来)。

你不能仅仅链接到一个单独的 CSS 文件,并使用更少脑死亡的打印媒体查询,因为color: #000 !important;影响所有标签,这要归功于*目标,你不能只是将其重置为initial或继承`,因为这也会让他们变黑。

您最后的(可能也是最好的)选择是制作自己的 R Markdown 模板(请参阅https://github.com/hrbrmstr/markdowntemplates https://github.com/hrbrmstr/markdowntemplates了解更多信息)并避免在其中放置全面的印刷媒体查询。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在chrome中将html保存为pdf 的相关文章

随机推荐

  • 为什么没有调用构造函数? [复制]

    这个问题在这里已经有答案了 这段代码的行为不符合我的预期 include
  • 使用jdk1.7获取java中文件最后访问时间的示例

    请朋友帮忙 我知道使用jdk1 7我们可以获取文件的最后访问时间 谁能给出一个带有代码的示例来获取文件的上次访问时间 既然您在问题中提到使用jdk1 7 你真的应该研究方法上的接口 BasicFileAttributes最后访问时间 htt
  • C++ 使用参数初始化引用

    我有以下代码 我想知道为什么它写出 22 而不是垃圾 class example public example int ea ref ea int ref int main example obj 22 cout lt lt obj ref
  • 当 LINQ 语句没有 where 子句时,为什么没有智能感知?

    谁能告诉我为什么我do not使用以下代码获取智能感知 var testDocuments from u in db TestDocuments orderby u WhenCreated descending select u but I
  • 如何解决Apache Camel中的“无法创建路由route1异常”?

    我对 Apache Camel 概念很陌生 我尝试使用 apache Camel API 编写示例代码 当我尝试运行代码时 出现以下异常 谁能帮我解决这个问题 缺少依赖库 所以我添加了这些库并解决了我的问题
  • Composer create-project 在本地包存储库上失败

    我正在尝试创建一个local存储库来测试作曲家项目 但是 composer create project repository url path to packages json vendor project name 失败了 Unexpe
  • 如何重新排列 igraph 图中边的顺序?

    我正在尝试在 igraph 中制作一个网络图 通过对某些重要边缘进行不同的着色来突出显示某些重要边缘 对于大图 它们经常被埋在其他图下面 例如 library igraph test lt barabasi game 200 m 2 E t
  • 通过 URL 哈希链接触发打开 Zurb Foundation Accordion

    我真的很希望能够通过问题散列中带有手风琴窗格的 URL 激活 打开 Zurb 基金会手风琴 就像 example com page accordion1 Foundation 已经可以做到这一点吗 或者是否很容易实现 老实说我没有任何线索
  • Eclipse 中的块选择

    有谁知道在 Eclipse 中是否可以进行块选择 或矩形选择 也许有插件 我自己还没找到 从 Eclipse 3 5 开始可以进行块选择 您可以使用以下方法在标准选择和块选择之间切换 Alt Shift A Opt Cmd A on Mac
  • 动态地从 Reveal.JS 添加/删除幻灯片

    使用 Reveal js 运行演示文稿时是否可以添加 删除幻灯片 准确地说 是否有一个 API 可以实现这一点 或者可能有一些肮脏的解决方法 我对即将到来的项目也对此感到好奇 环顾四周 找不到任何东西 所以我为自己的项目写了一些东西 附加在
  • 将字节数组转换为 POD

    比方说 我有一个无符号字符数组 代表一堆 POD 对象 例如 从套接字或通过 mmap 读取 它们代表哪些类型以及在什么位置是在运行时确定的 但我们假设每个类型都已经正确对齐 将这些字节 转换 为相应 POD 类型的最佳方法是什么 解决方案
  • SQL/C# - 执行查询的最佳方法

    我需要从 C 类中执行 sql 查询 我想到了2个选择 启动sqlcmd进程 使用 SqlCommand 对象 我的问题是哪种方法更好 重要的是 该解决方案只能在短时间内保持与服务器的连接 如果上述想法不好 我愿意接受其他想法 提前致谢 使
  • select 的 Angular ng-change 不调用声明的方法

    我有以下 html 表单选择语句
  • 将 C# MethodInvoker.Invoke() 用于 GUI 应用程序...这样好吗?

    使用 C 2 0 和 MethodInvoker 委托 我有一个 GUI 应用程序从 GUI 线程或工作线程接收一些事件 我使用以下模式来处理表单中的事件 private void SomeEventHandler object sende
  • 错误:Angular2 中没有 HttpHandler 的提供者

    我正在尝试通过拦截器实现 HttpCache 以下是caching interceptor service ts import HttpRequest HttpResponse HttpInterceptor HttpHandler Htt
  • Linux 中的 Eclipse Luna UI 渲染

    我在 Fedora 19 中安装了 Eclipse Luna 并面临以下问题 与 Windows 安装相比 选项卡标题似乎很大 我在主目录中搜索并编辑了 gtkrc 2 0 文件 这使得选项卡更小 但我使用高对比度外观而不是 GTK 来获得
  • 提交时显示“您的二进制文件未针对 iPhone 5 进行优化”(ITMS-90096)

    这是我的第一个 iOS 应用程序 当我尝试将其提交到应用程序商店时 它给了我 ITMS 90096 错误 我想我已经上传了所有正确的图标和启动画面图像 它提到了 iphone 5 上 4 英寸显示屏的启动图像 但我不知道在哪里添加它 这是我
  • 如何将 Base64 字符串保存到文件并使用 Flutter 查看它

    我需要使用 Flutter 下载并查看文件 如果可能的话 图像 PDF 等 我的问题是 我要下载的文件是 Base64 String 我如何使用 Flutter 来实现这一点 以下是解码 Base64 字符串并将其保存为本地设备上的文件的代
  • Xcode 6 - 如何为 Ad-Hoc 分发选择签名证书/配置文件?

    为了将应用程序分发给我们的测试人员 我们使用 Xcode 我们使用以下过程来执行此操作 归档申请 临时分发 选择配置文件 将 ipa 保存到文件夹 但与Xcode 6 这个工作流程发生了一些变化 我仍然可以选择 Ad Hoc 分发选项 但无
  • 在chrome中将html保存为pdf

    我在用rmarkdown生成 HTML 报告 我在受限制的机器上 无法安装 tex 所以 我试图生成一个 HTML 文档 然后将其转换 打印为 pdf 示例 Markdown 文档是 title trials author Foo Bar