我一直在尝试获取位于 sftp 服务器上的 pdf 文件并阅读所有页面。到目前为止,我只能将一页保存到变量元素中。您能否建议是否可以改进此代码以实现这一目标?这样做的主要目的不是在本地 R 文件夹中保存文件副本以减少 R/W
# SFTP
protocol <- "sftp"
server <- "172.16.19.9"
port = "63636"
userpwd <- "aaa:bbb"
filename <- "document1.pdf"
url <- paste0(protocol, "://", server,":", port, "/", filename)
> url
[1] "sftp://172.16.19.9:63636/document1.pdf"
data1 <- getBinaryURL (url = url, userpwd=userpwd)
read_raw_pdf <- function(data){
con <- rawConnection(data)
on.exit(close(con))
magick::image_read(pdftools::pdf_render_page(con, dpi = 250))
}
当我运行该功能read_raw_pdf
时,它可以工作,但它只会获取 pdf 文档的第一页
image1 = read_raw_pdf(data1)
image_info(image1)
# A tibble: 1 x 7
format width height colorspace matte filesize density
<chr> <int> <int> <chr> <lgl> <int> <chr>
1 PNG 2125 2750 sRGB TRUE 0 72x72
另一方面,这个函数可以将所有页面放入一个变量中,但我不能让它从外部 sftp 服务器获取文件,因为它需要一个路径,而不是二进制数据
image2 = image_read_pdf ("document1.pdf", density=250)
image_info(image2)
# A tibble: 3 x 7
format width height colorspace matte filesize density
<chr> <int> <int> <chr> <lgl> <int> <chr>
1 PNG 2125 2750 sRGB TRUE 0 250x250
2 PNG 2125 2750 sRGB TRUE 0 250x250
3 PNG 2125 2750 sRGB TRUE 0 250x250