如何从R计算PDF中的页数?

时间:2016-07-14 02:06:31

标签: r pdf

有没有办法从R计算PDF文件中的页数?如果没有,是否还有另一种与操作系统无关的方法呢?到目前为止,我找到的唯一答案是this,它特定于Windows 7.

我正在尝试在R和knitr中编译一些报告,汇总上一个脚本的PDF绘图输出,该脚本会自动处理数百个数据集。一些数据集很糟糕,最终打破了绘图功能。由于绘图函数包含在pdf函数中,因此生成一个空PDF文件,由报告找到,并中断pdflatex。尝试修改分析脚本以避免首先生成这些PDF已被证明是困难的,并且是非常特定于案例的。我真的希望有一些功能可以嵌入到报告中,在包含之前检查PDF的> = 1页面。我更喜欢基于R的解决方案,尽管bash,LaTeX,knitr或pdflatex解决方案也可能就足够了。

编辑:另外,正如我之前回答的链接中所提到的,我尝试使用Rpopplerhere)但无法进行编译。我在没有管理员权限的CentOS 6环境中使用R版本3.3.0。

2 个答案:

答案 0 :(得分:7)

下面的脚本对我有用。

#########################################
#GET PDF PAGE NUMBER :: R - JULY 16
##########################################

##SOURCE
#----pdftools package
#https://cran.rstudio.com/web/packages/pdftools

#Requirement
#brew install poppler
## TO AVOID ERROR ::: configure: error: cannot determine poppler-glib compile/link flags

#INSTALL PACKAGES
#install.packages("pdftools", dependencies=TRUE)  #only once

#IN/OUT FILES
in_put_pdf="pathTo/test.pdf"
out_put_pdf="pathTo/testCopy.pdf"

#LOAD LIBS
library(pdftools)

#Copy of the original file
file.copy(file.path(Sys.getenv("PATH_TO_PDF_FILE"), in_put_pdf), out_put_pdf)

#Many informations about the file are displayed here
info <- pdf_info(out_put_pdf)
text <- pdf_text(out_put_pdf)
fonts <- pdf_fonts(out_put_pdf)
files <- pdf_attachments(out_put_pdf)


#To get the number of pages
numberOfPageInPdf = info[2]
numberOfPageInPdf
希望能有所帮助。祝你好运。

答案 1 :(得分:5)

上述建议和代码似乎不必要地不透明或复杂。安装pdftools后,pdf_info命令将返回页面字段:

    library(pdftools)
    # returns number of pages
    # assumes your_file_name is in working directory
    pdf_info("your_file_name")$pages  

    # to see other available metadata in pdf_info object, use names()
    names(pdf_info("your_file_name"))