在R中使用url pdf而不是file pdf

时间:2015-03-16 12:27:50

标签: r

我使用以下行从R

中的PDF导入文本
uri <- sprintf("name.pdf", system.file(file.path("doc", "tm.pdf"),
                package = "tm"))

但是,我想直接使用我在第一个参数中获取PDF的URL,而不是我硬盘中的PDF文件。

1 个答案:

答案 0 :(得分:2)

我怀疑问题是readPDF文档中的示例使用此行创建本地文件URL:

uri <- sprintf("file://%s", system.file(file.path("doc", "tm.pdf"), package = "tm"))

您无需为ftphttp网址执行此操作,只需按原样传递网址即可。 readPDF只接受的网址,因此即使本地文件路径也必须转换为URI。

您可以简单地写一下:

uri <- "http://cran.r-project.org/web/packages/tm/tm.pdf"

要获取tm软件包的文档,请继续使用readPDF阅读:

uri <- "http://cran.r-project.org/web/packages/tm/tm.pdf"
pdf <- readPDF(control = list(text = "-layout"))(elem = list(uri = uri),
                                               language = "en",
                                               id = "id1")

尽管readPDF需要一个URL,但至少在Windows中,您只能将其与本地文件一起使用。 readPDF本质上充当外部命令的包装器,因此URI将 as-is 传递给pdftotext(对于xpdf)或您指定的引擎使用的任何命令。除非 命令理解URL,否则它将失败并显示警告。

唯一真正的替代方案是使用download.file在本地下载文件,然后使用readPDF阅读:

uri <- "http://cran.r-project.org/web/packages/tm/tm.pdf"
download.file(uri,"tm.pdf",method="internal",mode="wb")
pdf <- readPDF(control = list(text = "-layout"))(elem = list(uri = "tm.pdf"),
                                               language = "en",
                                               id = "id1")
content(pdf)[1:13]

我可以使用相对文件路径,因为uri参数按原样传递,它根本不被视为URI。我也能够通过"h:\\documents\\tm.pdf""h:/documents/tm.pdf"