R Shiny多页PDF生成异常求助:图表与表格未分页显示
问题解决:R Shiny中PDF导出分页显示图表与表格
问题原因
你混淆了onefile=FALSE的作用:这个参数是让PDF设备为每个绘图生成独立的PDF文件,而非在同一个PDF内分页。同时你用grid.arrange(plot,tab)将图表和表格放在了同一个布局里,所以两者会显示在同一页。
解决方案(同一PDF内分页)
如果需要在同一个PDF文件中让图表和表格各占一页,按以下方式修改代码:
- 移除
onefile=FALSE参数(默认onefile=TRUE,会生成单个PDF文件并支持多页面) - 分开渲染图表和表格,每次渲染后用
grid.newpage()创建新页面
修改后的完整代码:
pdfTitle <- as.character(format(Sys.Date(), "%A")) # Report generator output$export1 <- downloadHandler( filename = function() { paste("report-", Sys.Date(), ".pdf") }, content = function(file) { tab <- tableGrob(mtcars) plot <- createPlot(mtcars[1], mtcars[2]) # 初始化PDF设备,默认生成单个多页PDF pdf(file, title = pdfTitle, paper = "a4") # 渲染图表到第一页 grid.arrange(plot) # 创建新页面 grid.newpage() # 渲染表格到第二页 grid.arrange(tab) # 关闭PDF设备 dev.off() } )
补充说明
如果你的需求是生成两个独立的PDF文件(图表、表格各一个),Shiny的downloadHandler无法直接返回多个文件,这种场景下需要打包成ZIP文件后导出,不过这通常不是这类需求的常规做法。
内容的提问来源于stack exchange,提问作者Shubhradev
相关产品推荐
相关产品推荐

