Ich versuche, einige PDFs aus dem Internet in einer App auf glnnapps.io zu zeigen. Leider ist die standardmäßige Verwendung eines Iframes mit der URL aufgrund der Sicherheitsvorkehrungen für gemischte Inhalte (die PDF-Dateien werden über HTTP bereitgestellt) nicht möglich. Ich denke, dass eine mögliche Option darin besteht, die pdfs von der URL herunterzuladen und sie dann in einem iframe aus der lokalen Datei anzuzeigen, aber ich kann das nicht mit tempfile()
arbeiten.Download und Anzeige von PDF in Shiny
Eine Probe App:
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
textInput("url", "add a url"),
actionButton("button","hit the button"),
h5("use case - embed a pdf user guide in the app - embed as a local pdf or from web URL")
),
mainPanel(
tabsetPanel(
tabPanel("PDF",
htmlOutput("pdf")
)
)
)
)
)
server <- function(input, output, session) {
observeEvent(input$button, {
temp <- tempfile(fileext = ".pdf")
download.file(input$url, temp)
output$pdf <- renderUI({
tags$iframe(src=temp)
})
})
}
shinyApp(ui, server)
Beispiel pdf: http://www.pdf995.com/samples/pdf.pdf
Als ich das ich im Browser öffne einen Fehler in der Browser-Konsole erhalten: Not allowed to load local resource: file:///C:/Users/.../Local/Temp/Rtmp8subWX/file19403a2a2fc8.pdf
und nichts in der Platte, wo der iframe ist .
Ein ähnlicher Versuch, der auf shinyapps.io hochgeladen wurde, ist ebenfalls fehlgeschlagen und zeigt einen 404 Not Found
Fehler im PDF-Viewer.
Ich denke, das kann ein Problem sein, wie glänzend/glnnapps.io mit temporären Dateien umgehen, aber es nicht ganz herausfinden kann. Vielen Dank.