2016-07-14 60 views
2

有沒有辦法從R中統計PDF文件的頁數?如果沒有,是否有另一種與操作系統無關的方式來做到這一點?到目前爲止,我已經找到了唯一的答案是this,它是專門針對Windows 7的如何統計R中PDF的頁數?

我試圖編譯在R和knitr一些報告,彙總從以前的腳本,自動處理數百個輸出的PDF情節的數據集。一些數據集不好,最終破壞了繪圖功能。由於繪圖函數被包裝在pdf函數中,因此生成一個空的PDF文件,由報告找到並打破pdflatex。試圖修改分析腳本以避免首先生成這些PDF已被證明是困難的,並且是特定於個案的。我非常希望能夠在報告中嵌入一些功能,在包含它之前檢查PDF> = 1頁。我更喜歡基於R的解決方案,儘管bash,LaTeX,knitr或pdflatex解決方案也可能足夠。

編輯:此外,正如我在前面的答案中提到的,我嘗試使用Rpopplerhere),但無法編譯它。我在沒有管理員權限的CentOS 6環境中使用R版本3.3.0。

+1

檢查出來的'pdftools' PKG – hrbrmstr

+0

我想'pdftools'現在但到目前爲止,我無法得到它的CentOS 6編譯,並且由於這是一臺服務器,我沒有管理員權限來嘗試使用其系統依賴關係進行安裝。 – user5359531

+1

我不確定這是否有幫助,但是您可以使用'system'從R進行系統級調用,因此您可以使用pdfinfo(例如,pdfinfo file.pdf | grep'Pages')。 JK。 Centos似乎沒有附帶pdfinfo(因爲我猜它在poppler庫中?)。不理我。 –

回答

5

下面的腳本爲我工作。

######################################### 
#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 

希望能有所幫助。祝你好運。

+0

這看起來很有希望,但我仍然無法在我的主服務器上安裝pdftools軟件包,所以可能需要一段時間才能測試它。 – user5359531

1

上述建議和代碼似乎不必要地不透明或複雜。一旦安裝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))