Das Bild wird über Shiny in das Knitr Dokument hochgeladen

8

Ich verwende eine Kombination aus Shiny und knitr, um PDF-Dokumente zu erstellen.

Zur Zeit möchte ich eine Funktion hinzufügen, die es dem Benutzer ermöglicht, ein Bild hochzuladen, das in das erstellte Dokument eingefügt wird. Ich stecke jedoch wirklich fest, weil ich den Pfad des Eingangsbildes nicht erkennen kann. Könnte mir jemand dabei helfen?

Einfaches Beispiel:

Anwendung:

%Vor%

und das Dokument .Rnw :

%Vor%

Part '\includegraphics[height=3in]{', picture,'} verursacht offensichtlich das Problem, weil ich den Bilderpfad nur temporär kenne.

    
An economist 14.07.2016, 10:31
quelle

2 Antworten

2

Sie haben gesagt, dass Sie mit Shiny Server arbeiten, dann sollte der vollständige Pfad des Bildes in Ordnung sein, selbst wenn es sich in einem temporären Verzeichnis befindet (weil Shiny Server derzeit nur unter Linux funktioniert und LaTeX mit Linux in Ordnung ist) Dateipfade wie /tmp/...../yourfile.png ). Das Problem ist vielleicht, dass datapath (d. H.% Co_de%) nicht die Dateierweiterung hat, also konnte LaTeX sie nicht erkennen. Sie können versuchen, die Dateinamenserweiterung der ursprünglichen Datei abzurufen und das hochgeladene Bild in eine temporäre Datei mit derselben Erweiterung zu kopieren, z. B.

%Vor%     
Yihui Xie 28.07.2016, 03:05
quelle
1

Ich sehe eine Lösung auf zwei Arten:

1) Kopieren Sie die temporäre Datei in einen Ordner Ihrer Wahl und verwenden Sie dieses Bild:

%Vor%

2) Wenn Sie (in diesem Fall die R-Sitzung) nicht auf die Festplatte schreiben dürfen, können Sie das Bild in eine base64-Variable umwandeln und diese in Ihr Knitr-Dokument einfügen (oder es als String in einer Datenbank speichern). Dies nimmt die Knitr / HTML-Route, wenn Sie bereit sind, diesen Umweg zu nehmen. (R Studio, das von einem Server läuft, hat fast immer viele Einschränkungen beim Lesen / Schreiben, die Sie nur als ADMIN handhaben können. Und der Server führt die glänzende Sitzung als RStudio aus, und nicht Sie, wenn Rstudio die Lese- / Schreibberechtigungen benötigt Sie führen die Shiny-App als automatische Rstudio Shiny-Sitzung aus und nicht direkt in RStudio mit RUN)

Stellen Sie sicher, dass der base64-Wert mit dem Parameter 'Beobachten' oder 'Wenn' wieder lesbar ist, indem Sie '& lt; & lt; -' zusammen mit '& lt; -' verwenden. Scoping ist etwas ganz besonderes mit R so sicher sein, es richtig zu testen.

Sie sollten in dieses (base64) tauchen mit Sites wie:

Ссылка

Ссылка

    
irJvV 18.07.2016 12:21
quelle

Tags und Links