2017-01-12 11 views
3

を使用してHTMLレポートを生成しています。私は制限されたマシン上にいる、テックスをインストールすることはできません。だから、私はHTML文書を生成してからpdfに変換/印刷しようとしていました。例の値下げ文書は次のとおりです。クロムにhtmlからpdfを保存する

--- 
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") 

``` 

HTML formatted tables in rmarkdown word documentで説明したように書式が失われたとして、私は単語のいずれかに編むことができません。生成されたHTMLはまさに私が望んでいたものです。単語のHTMLを単語として保存すると、ほとんどの場合問題はありませんが、pdfを印刷することはできますが、pdfから直接印刷するほど良くはありません。 enter image description here

クロムにpdfとして保存しようとすると色が失われます。

enter image description here

は、このようなenter image description here

罰金我々の最愛サイトReplace NA's using data from Multiple Columns印刷物でこの質問など enter image description here

他のページは、あなたが任意のポインタどこにありますか、印刷オプションには問題はありません私は一点が不足しているか、問題がどこにあるか。

答えて

4

は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マークダウンテンプレートは、ブートストラップを使用することで、bootstrap.min.cssの彼らのバージョンがあります:

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

*がこれらの設定をに適用すると、完全に破壊的なメディアクエリとなります。タグとcolor: #000 !important;の意味は、「あなたのための色はありません!」という意味です。文書を印刷するとき。私はその惑星+トナー/インクのコストを節約して、その背後にある感情を突き飛ばしますが、あなたがPDFに印刷しているのであれば、何の意味もありません。

残念ながら、PDFへの印刷用のハイパーターゲットメディアクエリはないため、WebページをPDFに印刷するときに一般的な「印刷」のものが適用され、これらの無意味なキャッチオールメディアクエリが引き継ぎます。

問題は、これらの設定を上書きするために、他のタグのターゲット設定を非常に具体的にする必要があることです。これは、Rmdsで生成したものに独自のCSSクラスを追加すること、またはすべてをキャッチするまで「Inspect Element」で快適になることを意味します。

ただし、あなたは冒険を感じている場合は、あることをYAMLヘッダを変更することができます:あなたはそれがbase64-対さまざまなコンポーネント用のサブディレクトリを含むディレクトリを作成しますHTMLにレンダリングするとき

output: 
    html_document: 
    self_contained: false 

それらを1つの大きな文書にエンコードします。

私はforso.Rmdという名前の文書を作成しました。つまり、forso_filesという名前のディレクトリを作成し、その下にサブディレクトリを配置しました。

メインのHTMLファイルを開き、あなたのようなものが表示されるまでスクロールダウンします:削除、編集bootstrap.css

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

<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" /> 

をしますcolor: #000 !important;行に追加し、-webkit-print-color-adjust:exact;行を追加します。 bootstrap.cssのコピーを残してください。将来のレンダリングで潰れてしまいます(レンダリングごとにコピーする必要があります)。

あなただけ*ターゲットにcolor: #000 !important;影響するのであまり脳死印刷メディアクエリで個別のCSSファイルにすべてのタグのおかげでリンクすることはできませんし、あなただけのinitialまたはinherit`にそれをリセットすることはできませんので、その意志ちょうどそれらも黒に変えてください。

最終的な(おそらく最も良い)オプションは、独自のR Markdownテンプレートを作成することです(詳しくはhttps://github.com/hrbrmstr/markdowntemplatesを参照)。

+1

ありがとうございます!これは私がSOで読んだ最も深い答えの一つです。 – discipulus

関連する問題