如何使用 Plumber API 传输 PDF 文件?

How to transfer a PDF file using the Plumber API?

我有一个 API 函数,它接受输入,使用该输入获取必要的数据,调用 .rmd 文件,然后使用该 .rmd 文件在指定目录中生成 pdf 文件。 我需要 API 的剩余部分来获取新生成的 pdf 文件并通过 HTTP 将其发布。但是,每当我尝试这样做时,我最终都会得到一个损坏的文件作为输出。

这是我当前的代码:

#* @serializer contentType list(type="application/pdf")
#* parameter_selection
#* @param a1
#* @get /pdf

function( a1) {
  
  #Please assume that the filename location is correct. 

  filename = paste0( a1, '_','report','.pdf', sepp='')

  locale_filename = paste0('notebooks/',filename, sepp= '')

  readBin(locale_filename, "raw", n=file.info(locale_filename)$size)


}

谢谢。

是这样的:

#* @serializer contentType list(type="application/pdf")
#* parameter_selection
#* @param a1
#* @get /pdf

function( a1, res) {

  #Please assume that the filename location is correct. 

  filename = paste0( a1, '_','report','.pdf', sepp='')

  locale_filename = paste0('notebooks/',filename, sepp= '')

  tmp <- tempfile()

  res$setHeader("Content-Disposition", paste0("attachment; filename=", basename(locale_filename)))

  tmp <- rmarkdown::render(file_location ,output_file = paste0(this_title, sepp=''), envir = new.env(parent = globalenv()))


  readBin(locale_filename, "raw", n=file.info(locale_filename)$size)

}