如何在闪亮的应用程序中创建打印按钮来打印用户在文本框中输入的文本的硬拷贝?

rob*_*rty 4 markdown r shiny

我正在尝试创建一个闪亮的应用程序来帮助我的同事对大量定性数据进行排序、突出显示、组织等。基本上,我希望它显示一些叙述性文本,允许用户复制/粘贴文本或在文本区域中做笔记,然后将这些笔记打印到物理打印机。我已经成功创建了一个最小的应用程序,允许用户在文本字段中输入文本,但我不知道如何将内容发送到物理打印机

这是我所能得到的...

library(shiny)
library(noteMD)

ui <- fluidPage(

  sidebarLayout(
  sidebarPanel(),

  mainPanel(
     tags$textarea("", id='input_notes', rows =20, style = 'width:100%;'),
     actionButton('input_notes', 'Print Notes'))))

server <- function(input, output) {
output$print_notes <- reactive({input$input_notes}) #????????????????
}

shinyApp(ui = ui, server = server)
Run Code Online (Sandbox Code Playgroud)

我遇到了 noteMD 包,它看起来很有前途,在这里: https: //www.rdocumentation.org/packages/noteMD/versions/0.1.0 我似乎无法让它工作。

最终,我想为用户提供一种简洁的方法,只需单击一两次即可打印自己的笔记。

Sté*_*ent 5

这是一个使用库的简单解决方案jQuery print

library(shiny)

ui <- fluidPage(
  tags$head(
    tags$script(src = "https://cdnjs.cloudflare.com/ajax/libs/jQuery.print/1.6.0/jQuery.print.min.js")
  ),
  textAreaInput("textarea", "Type some text to be printed"), 
  actionButton("print", "Print", onclick = "$('#textarea').print();")
)

server <- function(input, output){}

shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)

但是,这也会打印文本区域的框架。以下解决方案仅打印文本:

library(shiny)

js <- paste(
  "function print(){",
  "  var content = $('#textarea').val();",
  "  content = content.replace(/([^>\\r\\n]?)(\\r\\n|\\n\\r|\\r|\\n)/g, '$1' + '</br>' + '$2')",
  "  var $p = $('<p></p>');",
  "  $p.html(content);",
  "  $p.print();",
  "}", 
  sep = "\n"
)

ui <- fluidPage(
  tags$head(
    tags$script(HTML(js)),
    tags$script(src = "https://cdnjs.cloudflare.com/ajax/libs/jQuery.print/1.6.0/jQuery.print.min.js")
  ),
  textAreaInput("textarea", "Type some text to be printed"), 
  actionButton("print", "Print", onclick = "print();")
)

server <- function(input, output){}

shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)