LaTeX

mr wong   google bookmarks   del.icio.us   yigg   digg   folkd
LaTeX LaTeX This demo allows the user to convert LaTeX (pronounced "Lah-tek" or "Lej-tek") documents into a PNG-image. LaTeX goes back to Donald E. Knuth's TeX (pronounced "Tek"). LaTeX is very well suited for scientific and technical documents. LaTeX translates the input source text into the DVI-format (DeVice-Independent) - which is converted into the EPS-format Encapsulated PostScript) by means of the tool dvips (DVI-to-PostScript). Then, Ghostscript is used to convert the corresponding EPS-file into the PNG-format (Portable Network Graphics) which is fit for the world wide web. As alternative PDF and various other graphic formats are possible. Installed software: TexLive 2008 (scheme-full) and Ghostscript 8.63 This demo is also available as an Adobe Flash-Applet.

Hint: Please use \usepackage[utf8]{inputenc} instead of encodings like \usepackage[latin1]{inputenc}, or disable explicitly the UTF-8 checkbox! New: File upload with optional PNG/JPG to EPS conversion!

Alternativ kann diese Demo direkt über eine vereinfachte REST-Schnittstelle, die nur ein HTTP PUT
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 zu 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!
latex
Optionale XML-Attribute:
ochem mit dem Wert true involviert das OCHEM-Paket. Default-Wert: false.
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:
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.
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

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.
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();
        }
    }
}

Handling

  • The Start LaTeX button converts the source text in the input field into a graphical representation.
  • The DPI(Dots Per Inch) input field indicates the resolution that is used to calculate the graphic representation (valid range: 60-600 DPI).
  • This checkbox UTF-8 sets the encoding of the LaTeX source file. UTF-8 vs. Latin-1
  • The Reset button clears the entire input field
  • Templates or examples can be copied into the input field via the Load button and the pull-down-menu.
  • The selection list Format enables the specification of the output format. In addition to the various image formats a PDF document can be produced with pdfwrite.