【问题标题】:Using R, how can someone count the number of pages in a PDF file?使用 R,有人如何计算 PDF 文件的页数?
【发布时间】:2015-10-20 11:08:04
【问题描述】:

我在一个目录中有大约一百个长 PDF 文件,想知道 R 是否可以计算每个文件中有多少页。我的操作系统是 Windows 8。

这是一个 10 页的 PDF 文件的链接,以帮助您测试您的解决方案。 MWE pdf file

似乎可以用 python 计算 PDF 页面,但我不知道那种语言 python solution。其他解决方案已经在 SO 上使用,例如 Imagemagick 进行了讨论。和 C##。

【问题讨论】:

  • 如果Rpoppler::PDF_info(filename)$Pages 不起作用,那么(可能)最快的方法是获取poppler for Windows 并使用system2 在文件上运行pdfinfo 并提取Pages:行。
  • 请注意,Rpoppler 似乎不适用于 Windows。
  • 我没有尝试让它在 Windows 上编译(我也不得不在 OS X 上使用type="source")但是自从 Kurt 做了它之后,我假设如果所有的星星都对齐在 Windows 盒子上它可以工作。另一种选择是使用standalone poppler tools for Windows 并使用system2 检测pdfinfo 并获取Pages: 行。
  • 我没有尝试从源代码安装它,因为说明文件指出“OS_type: unix. But having just tried now, I get the error ERROR: Unix-only package”。我很抱歉,我之前的评论太短了。我本来打算分享这个限制,以便说为 Windows 安装 poppler 工具可能是要走的路。我会继续努力,看看我是否能找到一个可行的解决方案。
  • 不用担心,但我不会花太多时间。让 R 编译的东西在 Windows 上工作是一门黑暗的艺术。 poppler 有如此多的大规模依赖项,因此努力可能不会有成果。这个问题大部分源于 R 强加的工具链。我不确定 python 人是否有这样的限制。

标签: r pdf count


【解决方案1】:

在 R 版本 3.3.2 pdftools 上工作:

library(pdftools)
pdfInfo <- pdf_info(<path to PDF file>)
pdfInfo$pages

【讨论】:

    【解决方案2】:

    我正在使用 Windows 7 机器,但我在 Windows 8 上的经验让我认为它应该同样适合您。

    我无法编译 Rpoppler 包,正如 hrbrmstr 指出的那样,它可能不值得战斗。如果您有 7-Zip,则可以提取适用于 Windows 的 poppler 工具。我已将它们提取到位置C:\poppler。在那里,我可以执行以下操作

    file_name <- "C:/[file_path]/whitepaper-pdfprimer.pdf"
    
    pdf_pages <- function(file_name){
      require(magrittr)
      pages <- system2("C:/poppler/bin/pdfinfo.exe",
                       args = file_name,
                       stdout = TRUE)
      pages[grepl("Pages:", pages)] %>%
        gsub("Pages:", "", .) %>%
        as.numeric()
    }
    
    pdf_pages(file_name)
    

    如果您有要传递的文件名向量

    vapply(file_names, pdf_pages, numeric(1))
    

    感谢@hrbrmstr 指出了 poppler 工具(直到今天我才听说过它们)。

    【讨论】:

    • 试试Rpoppler 包?我相信它会在 Linux 上运行。
    • 是的,它在 Linux 中工作,确认。这工作Rpoppler::PDF_info("/usr/share/doc/cvs/cvs.pdf")$Pages。在这里讨论unix.stackexchange.com/a/331185/16920
    猜你喜欢
    • 2014-06-29
    • 2021-12-28
    • 2016-11-16
    • 2011-11-19
    • 1970-01-01
    • 1970-01-01
    • 2023-02-19
    • 1970-01-01
    • 2013-05-14
    相关资源
    最近更新 更多