【问题标题】:Looping over PDF's to create dataframe循环 PDF 以创建数据框
【发布时间】:2019-07-28 15:33:00
【问题描述】:

我正在尝试遍历多个 PDF 并使用 rbind 组合它们。现在我有这个:

for (i in 1:length(all_pdfs)) {
   docket <- pdftools::pdf_text(all_pdfs[[i]]) %>%
     as.tibble() %>%
     mutate(month = as.character(d$docket_month[[i]]))
  }

其中 all_pdfs 是 PDF 列表。但是,docket 仅将第一个 PDF 作为数据框返回。我究竟做错了什么?提前致谢。

【问题讨论】:

  • 看起来你在每次循环迭代中都在重写docket

标签: r loops pdf


【解决方案1】:

我不知道如何用 R 合并 PDF 文件,但是如果你安装了 Python,你可以使用下面的代码将所有 PDF 文件合并到一个文件中。

# pdf_merger.py

import glob
from PyPDF2 import PdfFileWriter, PdfFileReader

def merger(output_path, input_paths):
    pdf_writer = PdfFileWriter()

    for path in input_paths:
        pdf_reader = PdfFileReader(path)
        for page in range(pdf_reader.getNumPages()):
            pdf_writer.addPage(pdf_reader.getPage(page))

    with open(output_path, 'wb') as fh:
        pdf_writer.write(fh)


if __name__ == '__main__':
    paths = glob.glob('C:/your_path/*.pdf')
    paths.sort()
    merger('pdf_merger.pdf', paths)

https://www.blog.pythonlibrary.org/2018/04/11/splitting-and-merging-pdfs-with-python/

【讨论】:

    【解决方案2】:

    您可以尝试将 docket 构建到一个列表中,然后取消列出该列表。

    docket <- list()
    for (i in 1:length(all_pdfs)) {
              docket[[i]] <- pdftools::pdf_text(all_pdfs[[i]]) %>%
              as.tibble() %>%
              mutate(month = as.character(d$docket_month[[i]]))
           }
    
    docket <- unlist(docket)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-17
      • 1970-01-01
      • 1970-01-01
      • 2018-12-03
      • 1970-01-01
      • 2015-08-18
      • 1970-01-01
      相关资源
      最近更新 更多