Unternehmen
Interaktive Demos
Diese Demo bietet die Möglichkeit,
LaTeX
(sprich »Lah-tech« oder »Lej-tech«) Dokumente in eine
PNG-Grafik umwandeln zu lassen. LaTeX geht auf TeX (sprich
»Tech«) von
Donald E. Knuth zurück. Besonders geeignet ist
LaTeX für wissenschaftliche und technische Dokumente.
Der eingegebene Quelltext wird mit Hilfe von LaTeX in das DVI-
Format (DeVice-Independent) übersetzt - dieses wird dann mit Hilfe des Tools
dvips (DVI-to-PostScript) in das
EPS-Format (Encapsulated PostScript) umgewandelt.
Mit Hilfe von Ghostscript wird dann
die entsprechende EPS-Datei in das web-taugliche PNG-Format
(Portable Network Graphik) umgewandelt. Alternativ sind PDF und diverse andere Grafikformate
möglich. Installierte Software: TexLive 2008 (scheme-full) und Ghostscript 8.63.
Diese Demo steht auch als
Adobe Flash-Applet zur Verfügung.
Hinweis: Benutzen Sie bitte \usepackage[utf8]{inputenc} statt z.B. \usepackage[latin1]{inputenc}, oder deaktivieren Sie im Menü explizit den UTF-8 Support! Neu: Datei-Upload mit optionaler JPG/PNG nach EPS-Konvertierung!
Alternativ kann diese Demo direkt über eine vereinfachte REST-Schnittstelle, die
nur ein HTTP PUT
unterstützt, angesprochen werden.
unterstützt, angesprochen werden.
Wichtiger Hinweis: Diese Schnittstelle steht nur für nicht-kommerzielle
Zwecke zur Verfügung.
Bei kommerzieller Nutzung wenden Sie sich bitte an office@sciencesoft.at. Weiters bitten wir
Sie, uns auch bei nicht-kommerzieller Nutzung dieser Schnittstelle über obige E-Mail-Adresse
zu benachrichtigen, damit wir Sie bei Änderung der Schnittstelle gegebenfalls informieren können.
Bei kommerzieller Nutzung wenden Sie sich bitte an office@sciencesoft.at. Weiters bitten wir
Sie, uns auch bei nicht-kommerzieller Nutzung dieser Schnittstelle über obige E-Mail-Adresse
zu benachrichtigen, damit wir Sie bei Änderung der Schnittstelle gegebenfalls informieren können.
XML Request
XML-Request wird im UTF-8 Format erwartet.<?xml version="1.0" encoding="UTF-8"?> <latex ochem="false"> <dev dpi="120">png16m</dev> <src><![CDATA[\documentclass[12pt]{article} \pagestyle{empty} \begin{document} Hallo World! \end{document}]]> </src> <embeddedData>false</embeddedData> </latex>
URL
http://sciencesoft.at/latex
Unterstützt nur HTTP PUT!
Unterstützt nur HTTP PUT!
latex
Optionale XML-Attribute:
utf8 legt fest ob die eingehenden Daten als UTF8 oder als Latin-1 interpretiert werden.
Default-Wert: true.
dev
Dieses Element legt das Ausgabeformat fest und kann folgende Werte annehmen:
Das optinale XML-Attribut dpi legt die Auslösung im Bereich von 60 - 600 dpi fest. Default-Wert: 120 dpi
Im Kontext mit dem Wert pdfwrite ist das XML-Attribut papersize mit folgenden Werten zulässig:
HEX-Format zulässig.
png16m|pngalpha|png256|png16|pngmono|pdfwrite|bmp16|bmp256|bmp16m|jpeg|
jpeggray|pnm|tiffgray|tiff12nc|tiff24nc|tiff32nc|tiffg3|tiffg4|psdrgb|swf
Der Default-Wert für diesen Parameter ist png16m.jpeggray|pnm|tiffgray|tiff12nc|tiff24nc|tiff32nc|tiffg3|tiffg4|psdrgb|swf
Das optinale XML-Attribut dpi legt die Auslösung im Bereich von 60 - 600 dpi fest. Default-Wert: 120 dpi
Im Kontext mit dem Wert pdfwrite ist das XML-Attribut papersize mit folgenden Werten zulässig:
a4|letter|legal|tabloid|a6|a5|a3|a1|a0|b6|b5|b4|b3
Im Kontext mit dem Wert pngalpha ist
das XML-Attribut bgcolor (=Hintergrundfarbe) im
6-stelligen HEX-Format zulässig.
src
Dieses Element beinhaltet den LaTeX Quelltext - maximale Länge 131072 Bytes
embeddedData
Dieses optionale Element legt mit dem Wert true fest,
ob die Grafaikdaten base-64 kodiert
in die XML-Antwort eingebettet werden. Default-Wert: false
in die XML-Antwort eingebettet werden. Default-Wert: false
XML Response
<?xml version="1.0" encoding="UTF-8"?> <RESTlatexResult> <success>?</success> <error>?</error> <embeddedData>?</embeddedData> <url>?</url> <data>?</data> <fileExt>?</fileExt> <size>?</size> <width>?</width> <height>?</height> </RESTlatexResult>
succces
true kein Fehler, oder false im Falle
eines Fehlers
error
Im Falle eines Fehlers beinhaltet dieses Element die Fehlermeldung.
embeddedData
Ist dieser Wert true,
so wurden die Grafaikdaten base-64 kodiert über das Element data
in die XML-Antwort
eingebettet. Ist der Wert hingegen false, so beinhaltet das Element url einen Link auf das Ergebnis.
eingebettet. Ist der Wert hingegen false, so beinhaltet das Element url einen Link auf das Ergebnis.
url oder data
Diese Elemente beinhalten das Ergebnis - siehe Element embeddedData
size
Größe der Grafikdaten in Bytes.
fileExt
Dateierweiterung der generierten Grafik.
width & height
Im Falle einer PNG oder JPG-Grafik beinhalten diese Elemente die Breite und die Höhe der Grafik in Punkten.
Beispiel
Dieses Beispiel erzeugt über die REST-Schnittstelle eine Grafik und speichert diese.
Sie können dieses Beispiel inklusive aller notwenigen Libraries über folgenden
Link herunterladen.
package at.sciencesoft.test; import org.apache.commons.httpclient.*; import org.apache.commons.httpclient.methods.*; import sun.misc.BASE64Decoder; import java.io.*; /* * LaTeXRESTClient.java * LaTeX REST access example * Author: Peter Sauer (peter.sauer@sciencesoft.at) * Date of last modification: 2009-06-13 * HTTPClient: http://hc.apache.org/httpclient-3.x/userguide.html */ public class LaTeXRESTClient { private static String url = "http://sciencesoft.at/latex"; public static void writeByteStream(String fileName, byte[] stream) throws Exception { File file = new File(fileName); FileOutputStream writer = new FileOutputStream(file); writer.write(stream, 0, stream.length); writer.close(); } public static char[] readCharStream(String fileName) throws Exception { File file = new File(fileName); FileReader reader = new FileReader(file); int fileLength = (int) file.length(); char[] stream = new char[fileLength]; reader.read(stream, 0, fileLength); reader.close(); return stream; } public static void main(String[] args) throws Exception { String xml = new String(readCharStream(args[0])); // Prepare HTTP put PutMethod put = new PutMethod(url); // Request content will be retrieved directly // from the input stream put.setRequestHeader("Content-Type", "text/xml; charset=utf-8"); put.setRequestEntity(new StringRequestEntity(xml, null, "utf-8")); // Get HTTP client HttpClient httpclient = new HttpClient(); // Execute request try { int result = httpclient.executeMethod(put); // Display status code System.out.println("Response status code: " + result); if (result == 200) { // fetching quick & dirty the binary data xml = put.getResponseBodyAsString(); if (xml.indexOf("<success>true</success>") >= 0) { int start = xml.indexOf("<data>"); int end = xml.indexOf("</data>"); if (start >= 0 && end >= 0) { start += "<data>".length(); writeByteStream(args[1], new BASE64Decoder().decodeBuffer(xml.substring(start, end))); } else { System.out.println(xml); } } else { System.out.println(xml); } } } catch (Exception e) { e.printStackTrace(); } finally { // Release current connection to the connection pool once you are done put.releaseConnection(); } } }
Bedienung
- Die Schaltfläche LaTeX starten wandelt den Quelltext im Eingabefeld in eine Grafik um.
- Das Eingabefeld DPI (Dots Per Inch) gibt an, mit welcher Auflösung die Grafik berechnet wird (gültiger Bereich: 60-600 DPI).
- Das Kontrollkästchen UTF-8 legt fest, ob der Quelltext als UTF-8 oder Latin-1 gepeichert wird.
- Die Schaltfläche Löschen löscht das komplette Eingabefeld.
- Über die Auswahlliste Vorlagen & Beispiele und die Schaltfläche laden können Vorlagen oder Beispiele in das Eingabefeld kopiert werden.
- Mit Hilfe der Auswahlliste Format kann das Ausgabeformat festgelegt werden. Zusätzlich zu den diversen Grafikformaten kann mit pdfwrite eine PDF-Datei erzeugt werden.