如何从位于 sftp 服务器中的 pdf 文件中读取所有页面

问题描述

我一直在尝试获取位于 sftp 服务器上的 pdf 文件并阅读所有页面。到目前为止,我只能将一页保存到可变元素中。如果可以改进此代码以实现这一目标,您能否提出建议? 这样做的主要目的不是为了减少 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

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)