闪亮-跳至嵌入式PDF页面

时间:2019-03-16 00:40:40

标签: r shiny

我想跳到嵌入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)

为了使代码正常工作,我需要更改什么?

0 个答案:

没有答案