我想跳到嵌入PDF的某个页面,该页面具有光泽。我使用tags$iframe
来显示PDF。我知道我必须通过添加#page = x即tags$iframe
来扩展tags$iframe(style="height:785px; width:100%", src="http://www.pdf995.com/samples/pdf.pdf#page=3")
中的URL才能跳转到PDF的特定页面。
但是,如果我有多个选项卡并从选项卡1切换到选项卡2再回到选项卡1,则PDF始终显示第1页。我可以重新加载整个选项卡/ PDF以跳回到第3页,但我不这样做不想这样做!
我尝试使用JavaScript,但是由于document.getElementById
无法正常工作,因此无法正常工作。
到目前为止我的代码
library(shiny)
library(shinyjs)
ui <- tagList(
useShinyjs(),
tags$script('Shiny.addCustomMessageHandler("go_to_page", function(message) {
document.getElementById("show_pdf").contentWindow.PDFViewerApplication.page = 3;
});'),
fluidPage(
fluidRow(
column(6,
tabsetPanel(id = "tabs",
tabPanel(
"Tab 1",
uiOutput("show_pdf")
),
tabPanel(
"Tab 2",
uiOutput("show_pdf1"))
)
)
))
)
server <- function(input, output, session){
output$show_pdf <- renderUI({
tags$iframe(style="height:785px; width:100%", src="http://www.pdf995.com/samples/pdf.pdf#page=3")
})
output$show_pdf1 <- renderUI({
tags$iframe(style="height:785px; width:100%", src="http://www.pdf995.com/samples/pdf.pdf#page=4")
})
observe({
input$tabs
session$sendCustomMessage(type = 'go_to_page', message = runif(1))
})
}
shinyApp(ui = ui, server = server)
为了使代码正常工作,我需要更改什么?