4

我有一个包含多页的 pdf 文件,但我只对其中的一个子组感兴趣。例如,我的原始 PDF 有 30 页,我只想要第 10 到 16 页。

我尝试使用 tabulizer 包中的 split_pdf 函数,它只将 pdf 页面拆分为页面(产生 200 个文件,每页一个),然后是 merge_pdfs(合并 pdf 文件)。它工作正常,但需要很长时间(我必须拆分大约 2000 个 pdf 文件)。

这是我正在使用的代码:

split = split_pdf('file_path')

start = 10
end = 16

merge_pdfs(split[start:end], 'saving_path')

我找不到更好的选择来做到这一点。任何帮助将不胜感激。

4

3 回答 3

5

不幸的是,我发现您的 PDF 中有哪些类型的数据以及您试图从中提取什么有点不清楚。所以我概述了两种方法。

  1. 如果您在 pdf 中有表格,您应该能够使用以下方法从所述页面中提取数据:

    tab <- tabulizer::extract_tables(file = "path/file.pdf", pages = 10:16)

  2. 如果你只想要文本,你应该使用pdftools哪个更快:

    text <- pdftools::pdf_text("path/file.pdf")[10:16]

于 2018-03-16T22:52:37.290 回答
2

安装pdftk(如果您还没有)。假设它在您的路径上并且myfile.pdf在当前目录中,从 R 运行它:

system("pdftk myfile.pdf cat 10-16 output myfile_10to16.pdf")
于 2018-03-16T23:02:20.797 回答
0

作为G.Grothendieck 答案的附件,人们还可以使用 package staplr,它是程序的 R 包装器pdftk

library('staplr')

staplr::select_pages(
    selpages = 10:16,
    input_filepath = 'file_path',
    output_filepath = 'saving_path')

以我的经验,plain 的pdftk效果更快。但是,如果您需要做一些复杂的事情,并且您更熟悉 R 语法而不是 bash 语法,那么使用该staplr包将节省编码时间。

于 2021-08-29T14:29:31.480 回答