pandoc पंडोक संस्करण 1.12.3 या उच्चतर की आवश्यकता है और पाया नहीं गया था(आर चमकदार)




r-markdown shiny-server (6)

मुझे अपने ऐप चमकदार से एक पीडीएफ रिपोर्ट बनाने में समस्या है जो एक सर्वर पर होस्ट की जाती है।

ऐप ठीक काम करता है लेकिन जब मैं रिपोर्ट डाउनलोड करने के लिए बटन दबाता हूं, मुझे यह त्रुटि मिलती है:

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

समस्या यह है कि अगर मैं pandoc -v टाइप pandoc -v हूं तो मुझे यह मिलता है:

 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.

इसलिए मुझे लगता है कि मेरे पास इसके लिए सही संस्करण है। TexLive भी स्थापित है और पथ $PATH

Server.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")
     })
})

* report.Rmd * में किसी भी प्रकार की गणना शामिल नहीं है, यह केवल पाठ है। पीडीएफ पीढ़ी मेरे स्थानीय संस्करण (MacOS) पर ठीक काम करती है, लेकिन सर्वर पर नहीं।

अग्रिम धन्यवाद, और यदि आवश्यक हो तो अन्य जानकारी देने के लिए मैं यहां हूं।

डेनियल


यदि आप विंडोज पर कमांड लाइन से स्क्रिप्ट चलाने की कोशिश कर रहे हैं, तो आपको पैठ चर * में निर्देशिका पथ की आवश्यकता है। आप RSTUDIO_PANDOC नाम से एक अलग उपयोगकर्ता चर भी बना सकते हैं और इस चर को निर्देशिका * दे सकते हैं। फिर सिस्टम पथ को ताज़ा करने के लिए किसी भी टर्मिनल को बंद करें और फिर से खोलें। **

* एक अनुगामी के साथ प्रयोग करें / यदि आप समस्या कर रहे हैं। ** मैं एक UNC पथ को इंगित करने में असमर्थ था। पथ की शुरुआत में // rmarkdown पैकेज पंडोक फ़ंक्शंस को hosed किया। यदि आप एक यूएनसी पथ का उपयोग कर रहे हैं, तो आपको इसे एक ड्राइव पर मैप करना होगा और ड्राइव अक्षर को संदर्भित करना होगा। इसे गतिशील रूप से करने के तरीके हैं। मैं एक डॉस / बैच स्क्रिप्ट का उपयोग करता हूं जो मुझे Google के माध्यम से मिली।


अगर किसी को यह समस्या हो रही है और एनाकोंडा का उपयोग भी कर रहा है, तो संभव है कि वे मेरा मुद्दा बना रहे हों। Rstudio शेल .bashrc फ़ाइल को लोड नहीं करता है जब यह अर्थ शुरू होता है यदि एनाकोंडा Rstudio के भीतर आपके पैंडॉक का संस्करण स्थापित है तो इसे नहीं मिलेगा। एक कमांड के साथ अलग से पंडोक स्थापित करना जैसे sudo pacman -S pandoc ने मेरे लिए काम किया!


अरे मैंने इस त्रुटि को हरा दिया है। मैंने इसे 2 पंडोक फ़ाइलों को हटाकर, "पंडोक" और "पंडोक-सिटप्रो" को चमकदार-सर्वर फ़ोल्डर से हटा दिया। मैंने तब rstudio- सर्वर फ़ोल्डर से इन फ़ाइलों में से प्रत्येक के लिए एक लिंक बनाया। इसने एक जादू की तरह काम किया। यह मेरे लिए एक मुद्दा था जब मैं एक लिनक्स मशीन पर एक चमकदार-सर्वर चलाने से रेकॉर्डडाउन दस्तावेजों में लीफलेट एम्बेड करने की कोशिश कर रहा था। मुझे यह अजीब लगा कि जब मैंने इसे उसी लाइनक्स मशीन पर rstudio में चलाया तो यह ठीक काम किया, लेकिन तब नहीं जब मैंने इसे चमकदार-सर्वर का उपयोग करके चलाया। तो पंडोक का चमकदार-सर्वर स्थापित पुराना / पुराना है। चियर्स


RStudio का उपयोग नहीं करने वालों के लिए, आपको बस अपने सिस्टम पर pandoc स्थापित करने की आवश्यकता हो सकती है। मेरे लिए यह था

sudo pacman -S pandoc

और यह काम किया (आर्क लिनक्स)।


एक अन्य विकल्प ताकि यह आपके सभी आर स्क्रिप्ट के लिए काम करता है, इस चर को विश्व स्तर पर परिभाषित करना है।

Debian / Ubuntu पर, अपनी .bashrc फ़ाइल में निम्न पंक्ति जोड़ें:

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

MacOS पर, अपनी .bash_profile फ़ाइल में निम्न जोड़ें:

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

Windows पर ( Git Bash का उपयोग करके), अपनी .bashrc फ़ाइल में निम्न जोड़ें:

export RSTUDIO_PANDOC="/c/Program Files/RStudio/bin/pandoc/"

इस मुद्दे को हल करने का सबसे आसान तरीका आरएमकेडाउन कॉल करने से पहले crontab कमांड के अंदर Sys.setenv (..) कमांड पास करना है :: रेंडर। आपको अर्धविराम वाले दो आदेशों को अलग करना होगा:

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

(याद रखें कि rstudio- सर्वर पथ गैर-सर्वर संस्करण से भिन्न होता है)