如何在R语言中直接降低合并后PDF文件的质量与大小?
在R中压缩合并后的PDF文件
当然可以直接在R中降低合并后PDF的质量或大小,以下是两种实用方法:
方法1:使用qpdf包进行快速压缩
qpdf是专门处理PDF文件的R包,支持多种压缩等级,操作简单高效,适合大多数场景:
首先安装并加载包:
install.packages("qpdf") library(qpdf)
然后对合并后的merged.pdf进行压缩:
# 压缩PDF,生成新的压缩文件 pdf_compress( input = paste0(working_dir, "/merged.pdf"), output = paste0(working_dir, "/compressed_merged.pdf"), compression_level = "high" # 可选值:"low", "default", "high" )
compression_level参数可按需调整:high压缩率最高,可能轻微降低图片质量;default在质量与大小间取平衡;low压缩程度最低。
方法2:针对含图片的PDF进行精细化压缩
如果你的PDF包含大量图片,想要精准控制图片质量来减小体积,可以结合pdftools和magick包操作:
- 安装并加载所需包:
install.packages(c("pdftools", "magick")) library(pdftools) library(magick)
- 提取PDF中的图片并压缩,再重新生成PDF:
# 读取合并后的PDF总页数 pdf_pages <- pdf_info(paste0(working_dir, "/merged.pdf"))$pages # 逐页处理并压缩 compressed_pages <- lapply(1:pdf_pages, function(page_num) { # 将PDF页面转为图片 img <- pdf_convert( paste0(working_dir, "/merged.pdf"), pages = page_num, format = "png", dpi = 150 # 降低dpi减小图片大小,默认值为300 ) # 压缩图片(quality范围0-100,值越小压缩率越高) compressed_img <- image_read(img) %>% image_quality(quality = 75) %>% image_write(tempfile(fileext = ".png"), format = "png") # 将压缩后的图片转回PDF页面 pdf_render_page(compressed_img) }) # 合并压缩后的页面为新PDF pdf_combine(compressed_pages, output = paste0(working_dir, "/image_compressed_merged.pdf"))
- 调整
dpi和quality参数可控制图片清晰度与文件大小:dpi越低、quality值越小,文件体积越小,但画质会相应下降。
内容的提问来源于stack exchange,提问作者stats_noob
相关产品推荐
相关产品推荐

