我正面临着一个问题,就是可能需要获取html小部件的屏幕截图以供进一步实施,例如pdf文档。 datatable
(DT
包)的屏幕截图具有太高的高度,在rmarkdown
文档中显示为空白区域(fig.cap
的位置很容易发现它,这是在datatable
的结尾之下。我无法理解为什么会发生这种情况,我想将其删除(datatable
下没有空格)。请看下面的示例test.Rmd
,它充分显示了问题:
---
output:
pdf_document:
toc: yes
header-includes:
- \usepackage{fancyhdr}
- \usepackage[ngerman]{babel}
---
\addtolength{\headheight}{1.0cm}
\pagestyle{fancyplain}
\renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\footrulewidth}{0.4pt}
\chead{Test}
\lhead{\scriptsize\today}
```{r, fig.align='center', fig.pos='htb!', fig.width=12, fig.cap="The height of screenshot is too high!!",fig.height=3,echo=FALSE, cache=FALSE, warning = FALSE, message = FALSE, tidy=TRUE}
library(DT)
library(webshot)
datatable(mtcars[1:2,],rownames=FALSE, options = list(dom='t',ordering=F))
```
datatable
尝试了不同数量的显示行,我注意到datatable
是否有> 20 行然后使用标题显示良好。rmarkdown
)的可下载报告,这就是为什么在示例中我只使用了来自shiny app
数据集的两行。 答案 0 :(得分:1)
您可以尝试将以下内容添加到r chunk
,看看是否有效:
screenshot.opts = list(delay = 1, cliprect = c(0, 0, 1000, 150)), dev='jpeg'
答案 1 :(得分:0)
在你抓住桌子的网页上,有一个CSS选择器吗?如果你能找到一个只包围桌子,它可能只是抓住桌子而不是整个页面的镜头。见这个例子:
webshot("http://www.nfl.com/superbowl/results/superbowl/", "nfl.png",
selector = "div.columnStats")
要查找CSS选择器,我在浏览器中访问了网页(在本例中为http://www.nfl.com/superbowl/results/superbowl/),然后按Ctrl + u查看源代码。我滚动直到找到了桌子并在1374号线找到了
<!-- Records table -->
<div class="columnStats">
我将div class="columnStats"
翻译成我为选择器指定的选项div.columnStats
。
Windows
我能够重现你的错误。在您的实际应用程序中是否有可以指定的CSS选择器? (见上面的NFL例子)。
<强> MAC 强>
空格没问题。这就是我的所作所为:
我从未使用DT
,webshot
或PhantomJS。所以之后:
install.packages("DT")
install.packages("webshot")
webshot::install_phantomjs()
我编织了测试。你在我的Mac上发布了 并得到了:
答案 2 :(得分:0)
我在使用renderUI
呈现datatable
对象的Shiny应用中遇到此问题。我必须添加width = 100%
和height = 100%
。所以也许试试:
datatable(mtcars[1:2, ], rownames = FALSE, options = list(dom = "t", ordering = F), height = "100%")