Use Pygments in Java — Pygments

- Home
- Languages
- FAQ
- Get it
- Docs

# Use Pygments in Java

Thanks to Jython it is possible to use Pygments in Java.

This page is a simple tutorial to get an idea of how this works. You can then look at the Jython documentation for more advanced uses.

Since version 1.5, Pygments is deployed on Maven Central as a JAR, as is Jython which makes it a lot easier to create a Java project.

Here is an example of a Maven `pom.xml` file for a project running Pygments:

    <?xml version="1.0" encoding="UTF-8"?>

    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                                 http://maven.apache.org/maven-v4_0_0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>example</groupId>
      <artifactId>example</artifactId>
      <version>1.0-SNAPSHOT</version>
      <dependencies>
        <dependency>
          <groupId>org.python</groupId>
          <artifactId>jython-standalone</artifactId>
          <version>2.5.3</version>
        </dependency>
        <dependency>
          <groupId>org.pygments</groupId>
          <artifactId>pygments</artifactId>
          <version>1.5</version>
          <scope>runtime</scope>
        </dependency>
      </dependencies>
    </project>

The following Java example:

    PythonInterpreter interpreter = new PythonInterpreter();

    // Set a variable with the content you want to work with
    interpreter.set("code", code);

    // Simple use Pygments as you would in Python
    interpreter.exec("from pygments import highlight\n"
        + "from pygments.lexers import PythonLexer\n"
        + "from pygments.formatters import HtmlFormatter\n"
        + "\nresult = highlight(code, PythonLexer(), HtmlFormatter())");

    // Get the result that has been set in a variable
    System.out.println(interpreter.get("result", String.class));

will print something like:

    <div class="highlight">
    <pre><span class="k">print</span> <span class="s">&quot;Hello World&quot;</span></pre>
    </div>