2016-09-19 10 views
0

"downloadHandler"で生成されたpdfファイルを表示する方法があるのか​​どうか疑問に思っていましたか?R "downloadHandler"で生成されたpdfファイルを表示する方法が光ります

私はいくつかの生物学的分析を行うためにパッケージを使用しており、downloadHandlerでpdfファイルを作成することができます。しかし、このpdfをダウンロードする代わりに見ることができれば、私はまだ苦労しています。

この質問は、Shiny to output a function that generates a pdf file itselfに関連しています。 pdf出力をダウンロードするコードについては、下記を参照してください。本当にありがとう!

library(shiny) 
library(msa) 
runApp(list(
    #Load the exmaple from the msa package. 
    mySequenceFile <- system.file("examples", "exampleAA.fasta", package="msa"), 
    mySequences <- readAAStringSet(mySequenceFile), 
    myFirstAlignment <- msa(mySequences), 
    # A simple shiny app. 
    # Is it possible to see the generated pdf file on screen? 
    ui = fluidPage(downloadButton('downloadPDF')), 
    server = function(input, output) { 
     output$downloadPDF = downloadHandler(
     filename = 'myreport.pdf', 
     content = function(file) { 
      msaPrettyPrint(
       myFirstAlignment 
       , file = 'myreport.pdf' 
       , output="pdf" 
       , showNames="left" 
       , showLogo="top" 
       , consensusColor="BlueRed" 
       , logoColors="accessible area" 
       , askForOverwrite=FALSE) 
     file.rename("myreport.pdf", file) # move pdf to file for downloading 
     }, 
     contentType = 'application/pdf' 
    ) 
    } 
)) 
+0

このSO質問チェックアウト:[光沢でローカルドライブからPDFを表示する](http://stackoverflow.com/questions/19469978/displaying-a-pdf-from-a-local-drive-を光沢のある) –

+0

Adam、新しく生成されたpdfファイルの正しいsrcパス(src = ...)を見つける方法を教えてもらえますか?私はMacでローカルに走っています。私は頑張りましたが、正しい方法を見つけることができません。どうもありがとう! – l0110

答えて

1

pdfを表示する場合は、downloadHandlerを使用しないでください。代わりに、単にPDFファイルを生成するためにあなたのPDF印刷機能を使用しますが、キーは

  1. msaPrettyPrint
  2. www/myreport.pdfへのファイル引数が動的に追加するには光沢のあるプロジェクトのルートの下に
  3. ポイントをwwwフォルダを作成していますiframeをクリックしてファイルを表示します。 iframeではに直接wwwを付けずに指していますが、Shinyは自動的にwwwフォルダ内の静的/メディアファイルを探します。

実際の例(ここではmsaパッケージは使用していませんが、アイデアは同じである必要があります)を参照してください。

library(shiny) 

ui <- shinyUI(fluidPage(

    titlePanel("Old Faithful Geyser Data"), 

    sidebarLayout(
     sidebarPanel(
     actionButton("generate", "Generate PDF") 
    ), 

     mainPanel(
     uiOutput("pdfview") 
    ) 
    ) 
)) 

server <- shinyServer(function(input, output) { 

    observeEvent(input$generate, { 
    output$pdfview <- renderUI({ 
     pdf("www/myreport.pdf") 
     hist(rnorm(100)) 
     dev.off() 
     tags$iframe(style="height:600px; width:100%", src="myreport.pdf") 
    }) 
    }) 
}) 

shinyApp(ui = ui, server = server) 
+0

こんにちはwarmoverflow、あなたの助けをありがとう。上記のコードを実行するのに問題があります。しかし、コードを2つのファイルshiny(つまりui.Rとservice.R)に分割すると、コードは正常に実行されます。システムでコードを実行できますか?私はRStudioバージョン0.99.903、R 3.3.1、Shiny 0.14、Mac OS X El Capitanを使用しています。 – l0110

+0

Windowsマシンで問題なく動作します。 OS Xで何かのことが分からない場合は、コードでどのようなエラーメッセージが表示されましたか? –

+0

ちょうどそれがファイルを見つけることができないと言った...とにかく、少なくとも2つのファイルコードが動作します。あなたの助けをありがとう! – l0110

関連する問題