You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R中chrome_print()设landscape=T后HTML打印未自适应尺寸求助

解决chrome_print横向模式下echarts4r组件宽度适配问题

在R Shiny应用中生成包含echarts4r组件的HTML报告后,使用pagedown::chrome_print()转换为PDF时,开启landscape=T横向模式后,echarts组件无法适配打印区域宽度,但手动用非无头Chrome浏览器打印时显示正常。最小复现示例如下:

最小复现代码

R Markdown 文件

---
title: "Untitled"
author: "fullera"
date: "`r Sys.Date()`"
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
# Output the plot
mtcars |>
e_charts(cyl,renderer = 'svg') |>
e_line(mpg) |> e_animation(show = F)
### R 转换代码
```r
library(echarts4r)
library(pagedown)

pagedown::chrome_print(input = 'untitled.html', output = 'foo.pdf', options = 
list(landscape=T))

解决方案

1. 嵌入打印专用CSS样式

在R Markdown中添加针对打印媒体的CSS,强制echarts容器占满横向页面宽度:

---
title: "Untitled"
author: "fullera"
date: "`r Sys.Date()`"
output: html_document
---

<style media="print">
  .echarts {
    width: 100% !important;
    height: auto !important;
  }
</style>

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(echarts4r)
mtcars |>
  e_charts(cyl, renderer = 'svg') |>
  e_line(mpg) |> 
  e_animation(show = F)
### 2. 调整chrome_print的无头浏览器参数
通过`extra_args`指定窗口和视口尺寸,匹配横向页面比例,同时增加等待时间确保echarts完全渲染:
```r
library(echarts4r)
library(pagedown)

pagedown::chrome_print(
  input = 'untitled.html', 
  output = 'foo.pdf', 
  options = list(landscape = TRUE),
  extra_args = c("--window-size=1920,1080", "--viewport-size=1920,1080"),
  wait = 2
)

3. 给echarts组件设置响应式宽度

调用e_charts()时直接指定宽度为100%,让组件自适应父容器:

mtcars |>
  e_charts(cyl, renderer = 'svg', width = "100%") |>
  e_line(mpg) |> 
  e_animation(show = F)

内容的提问来源于stack exchange,提问作者fullera

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 21:22:43