有沒有辦法通過點擊一個actionButton()或一個downloadButton(). 根據用戶所在的選項卡,它將列印和下載相關頁面。
# app.R ##
library(shiny)
library(shinydashboard)
library(DT)
dbHeader <- dashboardHeader(
title = "fr"
)
ui <- dashboardPage(
dbHeader,
dashboardSidebar(),
dashboardBody(
tags$hr(),
actionButton("generate", "Generate PDF"),
tabsetPanel(
id ="tabA",
type = "tabs",
tabPanel("Front",icon = icon("accusoft"),
plotOutput("ir")
),
tabPanel("Data", icon = icon("table"),
dataTableOutput("iris")
)
)
)
)
server <- function(input, output) {
output$ir<-renderPlot(
plot(iris)
)
output$iris<-renderDataTable(
iris
)
}
shinyApp(ui = ui, server = server)
uj5u.com熱心網友回復:
多田
如果我們可以在瀏覽器中做所有事情,為什么我們需要 Shiny 服務器?純 javascript,添加了 0 行服務器代碼。
# app.R ##
library(shiny)
library(shinydashboard)
library(DT)
dbHeader <- dashboardHeader(
title = "fr"
)
ui <- dashboardPage(
dbHeader,
dashboardSidebar(),
dashboardBody(
tags$script(src = "https://cdnjs.cloudflare.com/ajax/libs/dom-to-image/2.6.0/dom-to-image.min.js"),
tags$script(src = "https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.4.0/jspdf.umd.min.js"),
tags$script(HTML(
'
window.jsPDF = window.jspdf.jsPDF;
function capture(){
domtoimage.toPng(document.querySelector("body"))
.then(function(dataurl) {
var orientation = window.innerHeight >= window.innerWidth ? "portrait" : "landscape";
const doc = new jspdf.jsPDF({unit: "px", orientation: orientation, format: [window.innerHeight, window.innerWidth]});
doc.addImage(dataurl, "PNG", 0, 0, window.innerWidth, window.innerHeight);
doc.save("page.pdf");
});
}
'
)),
tags$hr(),
actionButton("generate", "Generate PDF", onclick="capture()"),
tabsetPanel(
id ="tabA",
type = "tabs",
tabPanel("Front",icon = icon("accusoft"),
plotOutput("ir")
),
tabPanel("Data", icon = icon("table"),
dataTableOutput("iris")
)
)
)
)
server <- function(input, output) {
output$ir<-renderPlot(
plot(iris)
)
output$iris<-renderDataTable(
iris
)
}
shinyApp(ui = ui, server = server)

轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/364215.html
上一篇:如何添加到JFrame3JPanel:第一個JPanel占據框架的90%,第二個是在瘦頂上,第三個是可以關閉的抽屜面板
