0

我一直在尝试获取位于 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
4

0 回答 0