如何使用 shinyjs 从闪亮的应用程序中物理打印 png?
How to physically print a png from a shiny app with shinyjs?
我正在尝试从闪亮的应用程序中打印图像,我已经阅读过:
但是,它会打印所有 window 内容,我喜欢将图表发送到打印机。
我希望使用闪亮的 JS 工具可以打印闪亮的图像。
我该如何解决这个问题?
有趣的问题。假设我们想要打印一张普通图像,嵌入到带有 tags$img
的闪亮应用程序中。我试着分两步来处理它。
- 我们如何通过在 javascript 中单击按钮来打印图像。
- 我们如何才能使这种方法闪亮。
SO here 回答了第一个问题。
我选择点赞最多的答案试试
借助 shinyjs,我们可以为 shiny 带来 javascript 功能。
useShinyjs(), # Set up shinyjs
shinyjs::extendShinyjs(text = paste0("shinyjs.img_print = function(){",
"popup = window.open();",
"popup.document.write('",tags$img(src = img_url),"');",
"popup.focus();",
"popup.print(); }"))
借助 observeEvent,我们可以通过单击操作按钮来触发操作。
observeEvent(input$print, {
shinyjs::js$img_print()
})
将所有内容放在一个简单闪亮的应用程序中:
library("shiny")
library("shinyjs")
library("V8")
img_url <-"https://images.unsplash.com/photo-1563169372-eb64c121f9dc?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1561&q=80"
shinyApp(
ui = fluidPage(
useShinyjs(), # Set up shinyjs
shinyjs::extendShinyjs(text = paste0("shinyjs.img_print = function(){",
"popup = window.open();",
"popup.document.write('",tags$img(src = img_url),"');",
"popup.focus();",
"popup.print(); }")),
tags$img(src = img_url,
alt = "Image 1",
height = 400,
width = 300),
actionButton("print", "Print image")
), # closes fluidPage
# Server ------
server = function(input, output, session){
observeEvent(input$print, {
shinyjs::js$img_print()
})
} # Closes server
) # Closes ShinyApp
如果要打印在服务器上呈现的图形,则可能需要先创建绘图的临时图像文件,然后应用上述方法。
我正在尝试从闪亮的应用程序中打印图像,我已经阅读过:
但是,它会打印所有 window 内容,我喜欢将图表发送到打印机。
我希望使用闪亮的 JS 工具可以打印闪亮的图像。
我该如何解决这个问题?
有趣的问题。假设我们想要打印一张普通图像,嵌入到带有 tags$img
的闪亮应用程序中。我试着分两步来处理它。
- 我们如何通过在 javascript 中单击按钮来打印图像。
- 我们如何才能使这种方法闪亮。
SO here 回答了第一个问题。 我选择点赞最多的答案试试
借助 shinyjs,我们可以为 shiny 带来 javascript 功能。
useShinyjs(), # Set up shinyjs
shinyjs::extendShinyjs(text = paste0("shinyjs.img_print = function(){",
"popup = window.open();",
"popup.document.write('",tags$img(src = img_url),"');",
"popup.focus();",
"popup.print(); }"))
借助 observeEvent,我们可以通过单击操作按钮来触发操作。
observeEvent(input$print, {
shinyjs::js$img_print()
})
将所有内容放在一个简单闪亮的应用程序中:
library("shiny")
library("shinyjs")
library("V8")
img_url <-"https://images.unsplash.com/photo-1563169372-eb64c121f9dc?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1561&q=80"
shinyApp(
ui = fluidPage(
useShinyjs(), # Set up shinyjs
shinyjs::extendShinyjs(text = paste0("shinyjs.img_print = function(){",
"popup = window.open();",
"popup.document.write('",tags$img(src = img_url),"');",
"popup.focus();",
"popup.print(); }")),
tags$img(src = img_url,
alt = "Image 1",
height = 400,
width = 300),
actionButton("print", "Print image")
), # closes fluidPage
# Server ------
server = function(input, output, session){
observeEvent(input$print, {
shinyjs::js$img_print()
})
} # Closes server
) # Closes ShinyApp
如果要打印在服务器上呈现的图形,则可能需要先创建绘图的临时图像文件,然后应用上述方法。