Shiny R中导出多页不同尺寸PDF的技术问询
解决方法
要实现不同PDF页面的自定义尺寸,不能一次性打开PDF设备后统一设置尺寸,而是需要分阶段操作PDF文件:先以7x7尺寸创建第一页并导出第一个图表,再以8x11尺寸追加后续所有页面的图表。具体操作逻辑如下:
- 第一次调用
pdf()时指定7x7的尺寸,打印第一个图表后关闭设备 - 第二次调用
pdf()时添加append=TRUE参数(确保在已有PDF后追加内容),设置8x11尺寸,打印剩余所有图表后关闭设备
修改后的完整代码如下:
output$exportall <- downloadHandler( filename = "Allplots.pdf", content = function(file){ withProgress(message = 'Exporting', min=0, max=1, { # 第一页:7x7尺寸 pdf(file, width=7, height=7) print(plot1()) dev.off() # 后续页面:8x11尺寸,追加到已有PDF pdf(file, width=8, height=11, append=TRUE) print(histogram()) print(plots2()) print(marrangeGrob(woodsbytimepoint(), nrow=2, ncol=1)) print(digestion()) print(map()) print(marrangeGrob(allplots(), nrow=4, ncol=2, top=NULL)) dev.off() }) } )
注意事项
- 必须添加
append=TRUE参数,否则第二次调用pdf()会覆盖之前生成的PDF内容 - 如果需要更多不同尺寸的页面,可以重复“设置尺寸→打印图表→关闭设备→追加打开”的流程
内容的提问来源于stack exchange,提问作者Juan Pablo Rincon
相关产品推荐
相关产品推荐

