pandoc version 1.12.3 ou plus est nécessaire et n'a pas été trouvé (R brillant)

j'ai un problème à générer un rapport pdf à partir de mon application shiny qui est hébergée sur un serveur.

l'application fonctionne très bien mais quand j'appuie sur le bouton pour télécharger le rapport, j'ai cette erreur :

 pandoc version 1.12.3 or higher is required and was not found.

Le problème est que si je tape pandoc -v j'obtiens:

 pandoc 1.12.3.3
 Compiled with texmath 0.6.6, highlighting-kate 0.5.6.1.
Syntax highlighting is supported for the following languages:
    actionscript, ada, apache, asn1, asp, awk, bash, bibtex, boo, c, changelog,
    clojure, cmake, coffee, coldfusion, commonlisp, cpp, cs, css, curry, d,
    diff, djangotemplate, doxygen, doxygenlua, dtd, eiffel, email, erlang,
    fortran, fsharp, gnuassembler, go, haskell, haxe, html, ini, java, javadoc,
    javascript, json, jsp, julia, latex, lex, literatecurry, literatehaskell,
    lua, makefile, mandoc, markdown, matlab, maxima, metafont, mips, modelines,
    modula2, modula3, monobasic, nasm, noweb, objectivec, objectivecpp, ocaml,
    octave, pascal, perl, php, pike, postscript, prolog, python, r,
    relaxngcompact, restructuredtext, rhtml, roff, ruby, rust, scala, scheme,
    sci, sed, sgml, sql, sqlmysql, sqlpostgresql, tcl, texinfo, verilog, vhdl,
    xml, xorg, xslt, xul, yacc, yaml
 Default user data directory: /home/daniele/.pandoc
 Copyright (C) 2006-2013 John MacFarlane
 Web:  http://johnmacfarlane.net/pandoc
 This is free software; see the source for copying conditions.  There is no
 warranty, not even for merchantability or fitness for a particular purpose.

donc je suppose que j'ai la bonne version pour ça. TexLive est aussi installé et le chemin est en $PATH.

le Serveur.R

library(shiny)
library(drsmooth)
library(shinyBS)
library(knitr)
library(xtable)
library(rmarkdown)

shinyServer(function(input, output,session) { 

 output$downloadReport <- downloadHandler(
filename = function() {
  paste('report', sep = '.','pdf')
},

content = function(file) {
  src <- normalizePath('report.Rmd')

  # temporarily switch to the temp dir, in case you do not have write
  # permission to the current working directory
  owd <- setwd(tempdir())
  on.exit(setwd(owd))
  file.copy(src, 'report.Rmd')

  library(rmarkdown)
  out <- render('report.Rmd')
  file.rename(out, file)
})

output$tb <- renderUI({
             p(h4("Report")),
            "Dowload a the report of your analysis in a pdf format",
            tags$br(),downloadButton('downloadReport',label="Download report"),
            tags$em("This option will be available soon")
     })
})

* rapport.Mdm* ne contient aucune sorte de calcul, ce n'est que du texte. La génération pdf fonctionne très bien sur ma version locale (MacOS) mais pas sur le serveur.

Merci d'avance, et je suis ici pour donner d'autres informations si nécessaire.

Daniele

37
demandé sur Daniele Avancini 2015-02-10 16:13:52

6 réponses

allez dans RStudio et trouvez la variable d'environnement système pour RSTUDIO_PANDOC

Sys.getenv("RSTUDIO_PANDOC")

alors mettez cela dans votre script R avant d'appeler la commande de rendu.

Sys.setenv(RSTUDIO_PANDOC="--- insert directory here ---")

cela a fonctionné pour moi après que j'ai eu du mal à trouver comment rmarkdown trouve pandoc. J'ai dû vérifier github pour rechercher la source.

67
répondu Chris 2016-05-04 18:53:52

une autre option pour que cela fonctionne pour tous vos scripts R est de définir cette variable globalement.

Sur Debian/Ubuntu, ajoutez la ligne suivante à votre .bashrc fichier:

export RSTUDIO_PANDOC=/usr/lib/rstudio/bin/pandoc

sur macOS, ajoutez ce qui suit à votre .bash_profile fichier:

export RSTUDIO_PANDOC=/Applications/RStudio.app/Contents/MacOS/pandoc

sur Windows (en utilisant Git Bash), ajouter ce qui suit à votre .bashrc fichier:

export RSTUDIO_PANDOC="/c/Program Files/RStudio/bin/pandoc/"
10
répondu John Blischak 2018-04-04 19:39:17

Hey, je viens de battre cette erreur. J'ai résolu ce problème en supprimant les 2 fichiers pandoc, "pandoc" et "pandoc-citeproc" du répertoire shiny-server. J'ai ensuite créé un lien pour chacun de ces fichiers à partir du dossier rstudio-server. Il a travaillé comme un charme. C'était un problème pour moi quand j'essayais d'intégrer tract dans les documents rmarkdown à partir de l'exécution d'un serveur brillant sur une machine linux. J'ai trouvé étrange que lorsque je l'ai lancé dans rstudio sur la même machine linux, il fonctionnait bien, mais pas quand je l'ai lancé utiliser le serveur brillant. Ainsi, l'installation du serveur brillant de pandoc est ancienne/périmée. Acclamations

1
répondu DTakacs 2018-05-09 00:26:44

la meilleure façon de résoudre ce problème est de passer le Sys.setenv(..) commande à l'intérieur de la commande crontab avant d'appeler le RMarkdown::render. Vous devez séparer les deux commandes avec un point-virgule:

R -e "Sys.setenv(RSTUDIO_PANDOC='/usr/lib/rstudio-server/bin/pandoc'); rmarkdown::render('File.Rmd', output_file='output.html')"

(rappelez-vous que le chemin rstudio-server diffère de la version non-server)

1
répondu Thomas Goerner 2018-06-18 15:55:06

si vous essayez d'exécuter un script depuis la ligne de commande de Windows, vous avez juste besoin d'avoir le chemin du répertoire dans la variable PATH*. Vous pouvez également créer une variable utilisateur séparée appelée RSTUDIO_PANDOC et donner à cette variable le répertoire*. Puis fermez et rouvrez tous les terminaux pour rafraîchir les chemins du système.**

*expérimentez avec une traînée / si vous avez des problèmes. **Je n'ai pas été en mesure de montrer un chemin vers L'UNC. Le / / au début du chemin a hos é le paquet rmarkdown pandoc fonction. Si vous utilisez un chemin UNC, vous devez l'associer à un lecteur et faire référence à la lettre du lecteur. Il y a des moyens de le faire de façon dynamique. J'utilise un script DOS/batch que j'ai trouvé sur Google.

0
répondu DonkeyKong 2018-04-20 21:17:03

Pour ceux qui n'utilisent pas RStudio, vous aurez juste besoin d'installer pandoc sur votre système. Pour moi, c'était

sudo pacman -S pandoc

et ça a marché (Arch Linux).

0
répondu haff 2018-06-27 21:53:28