我正在尝试创建一个闪亮的应用程序,以帮助我的同事对大量定性数据进行排序,突出显示,组织等。基本上,我希望它显示一些叙述性文本,允许使用它来复制/粘贴文本或在文本区域中做笔记,然后将这些笔记打印到物理打印机上。我设法创建了一个最小的应用程序,允许用户在文本字段中输入文本,但是我不知道如何将内容发送到物理打印机
据我所知...
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)
我遇到了noteMD软件包,它似乎很有前途,在这里:https://www.rdocumentation.org/packages/noteMD/versions/0.1.0 我似乎无法使它正常工作。
最终,我想为用户提供一种干净的方法,使用户只需单击一下即可打印自己的笔记。
答案 0 :(得分:1)
这是一个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)
但是,这也会打印文本区域的框架。以下解决方案仅打印文本:
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)