Einführung in Asciidoctor in Java
1. Einführung
In diesem Artikel geben wir eine kurze Einführung in die Verwendung von Asciidoctor mit Java. Wir zeigen, wie Sie HTML5 oder PDF aus einem AsciiDoc-Dokument generieren.
2. Was ist AsciiDoc?
AsciiDoc ist ein Textdokumentformat. Es kann fürwriting documentation, books, web pages, man pages and many other. verwendet werden
Da AsciiDoc-Dokumente sehr konfigurierbar sind, können sie in viele andere Formate wie HTML, PDF, Manpages, EPUB und andere konvertiert werden.
Da die AsciiDoc-Syntax recht einfach ist, ist sie aufgrund der großen Unterstützung für verschiedene Browser-Plugins, Plugins für Programmiersprachen und andere Tools sehr beliebt geworden.
Um mehr über das Tool zu erfahren, empfehlen wir Ihnen,official documentation zu lesen. Dort finden Sie viele nützliche Ressourcen zum Erlernen der richtigen Syntax und Methoden zum Exportieren Ihres AsciiDoc-Dokuments in andere Formate.
3. Was ist Asciidoctor?
Asciidoctor ist eintext processor for converting AsciiDoc documents in HTML, PDF und anderen Formaten. Es ist in Ruby geschrieben und als RubyGem verpackt.
Wie oben erwähnt, ist AsciiDoc ein sehr beliebtes Format zum Schreiben von Dokumentation, sodass Sie Asciidoctor in vielen GNU Linux-Distributionen wie Ubuntu, Debian, Fedora und Arch problemlos als Standardpaket finden können.
Da wir Asciidoctor in der JVM verwenden möchten, werden wir über AsciidoctorJ sprechen - das ist Asciidoctor mit Java.
4. Abhängigkeiten
5. AsciidoctorJ API
Der Einstiegspunkt für AsciidoctorJ ist die Java-Schnittstelle vonAsciidoctor.
Diese Methoden sind:
-
convert - analysiert das AsciiDoc-Dokument aus einemString oderStream und konvertiert es in den angegebenen Formattyp
-
convertFile - analysiert das AsciiDoc-Dokument von einem bereitgestelltenFile-Objekt und konvertiert es in den angegebenen Formattyp
-
convertFiles - wie zuvor, aber die Methode akzeptiert mehrereFile-Objekte
-
convertDirectory - analysiert alle AsciiDoc-Dokumente im bereitgestellten Ordner und konvertiert sie in den angegebenen Formattyp
5.1. API-Verwendung im Code
Um eineAsciidoctor-Instanz zu erstellen, müssen Sie die Instanz von der bereitgestellten Factory-Methode abrufen:
import static org.asciidoctor.Asciidoctor.Factory.create;
import org.asciidoctor.Asciidoctor;
..
//some code
..
Asciidoctor asciidoctor = create();
Mit der abgerufenen Instanz können wir AsciiDoc-Dokumente sehr einfach konvertieren:
String output = asciidoctor
.convert("Hello _example_!", new HashMap());
Wenn Sie ein Textdokument aus dem Dateisystem konvertieren möchten, verwenden wir die MethodeconvertFile:
String output = asciidoctor
.convertFile(new File("example.adoc"), new HashMap());
Zum Konvertieren mehrerer Dateien akzeptiert die MethodeconvertFilesdas ObjektListals ersten Parameter und gibt Arrays der ObjekteStringzurück. Interessanter ist, wie man mit AsciidoctorJ ein ganzes Verzeichnis konvertiert.
Wie oben erwähnt, sollten wir zum Konvertieren eines ganzen Verzeichnisses die MethodeconvertDirectoryaufrufen. Dabei wird der angegebene Pfad durchsucht und nach allen Dateien mit den AsciiDoc-Erweiterungen (.adoc, .ad, .asciidoc, .asc) gesucht und konvertiert. Um alle Dateien zu scannen, sollte der Methode eine Instanz vonDirectoryWalker bereitgestellt werden.
Derzeit bietet Asciidoctor zwei integrierte Implementierungen der genannten Schnittstelle:
-
AsciiDocDirectoryWalker - konvertiert alle Dateien eines bestimmten Ordners und seiner Unterordner. Ignoriert alle Dateien, die mit "_" beginnen
-
GlobDirectoryWalker - Konvertiert alle Dateien eines bestimmten Ordners nach einem Glob-Ausdruck
String[] result = asciidoctor.convertDirectory(
new AsciiDocDirectoryWalker("src/asciidoc"),
new HashMap());
Außerdem wird diewe can call convert method with provided java.io.Reader and java.io.Writer interfaces.Reader-Schnittstelle als Quelle und dieWriter-Schnittstelle zum Schreiben konvertierter Daten verwendet:
FileReader reader = new FileReader(new File("sample.adoc"));
StringWriter writer = new StringWriter();
asciidoctor.convert(reader, writer, options().asMap());
StringBuffer htmlBuffer = writer.getBuffer();
5.2. PDF-Generierung
To generate a PDF file from an Asciidoc document, we need to specify the type of the generated file in options. Wenn Sie sich die vorherigen Beispiele etwas genauer ansehen, werden Sie feststellen, dass der zweite Parameter einer KonvertierungsmethodeMap ist - was ein Optionsobjekt darstellt.
Wir setzen die Option in_place auf true, damit unsere Datei automatisch generiert und im Dateisystem gespeichert wird:
Map options = options()
.inPlace(true)
.backend("pdf")
.asMap();
String outfile = asciidoctor.convertFile(new File("example.adoc"), options);
6. Maven Plugin
Im vorherigen Abschnitt haben wir gezeigt, wie wir PDF-Dateien direkt mit Ihrer eigenen Implementierung in Java generieren können. In diesem Abschnitt zeigen wir, wie Sie PDF-Dateien während des Maven-Builds generieren. Simiar plugins exist for Gradle and Ant.
Um die PDF-Generierung während des Builds zu aktivieren, müssen Sie diese Abhängigkeit zu Ihrenpom.xml: hinzufügen
org.asciidoctor
asciidoctor-maven-plugin
1.5.5
org.asciidoctor
asciidoctorj-pdf
1.5.0-alpha.15
Die neueste Version der Maven-Plugin-Abhängigkeit isthere.
6.1. Verwendungszweck
Um das Plugin im Build zu verwenden, müssen Sie es inpom.xml: definieren
output-html
generate-resources
process-asciidoc
Da das Plugin in keiner bestimmten Phase ausgeführt wird, müssen Sie die Phase festlegen, in der Sie es starten möchten.
Wie beim Asciidoctorj-Plugin können auch hier verschiedene Optionen für die PDF-Generierung verwendet werden.
Lassen Sie uns einen kurzen Blick auf die grundlegenden Optionen werfen, während Sie andere Optionen indocumentation finden:
-
sourceDirectory - Der Speicherort des Verzeichnisses, in dem Sie Asciidoc-Dokumente haben
-
outputDirectory - Der Speicherort des Verzeichnisses, in dem Sie generierte PDF-Dateien speichern möchten
-
backend - der Typ der Ausgabe von Asciidoctor. Für PDF-Generierungssatz für PDF
Dies ist ein Beispiel, wie grundlegende Optionen im Plugin definiert werden:
src/main/doc
target/docs
pdf
Nach dem Ausführen des Builds befinden sich die PDF-Dateien im angegebenen Ausgabeverzeichnis.
7. Fazit
Obwohl AsciiDoc sehr einfach zu bedienen und zu verstehen ist, ist es ein sehr leistungsfähiges Tool zum Verwalten von Dokumentation und anderen Dokumenten.
In diesem Artikel haben wir eine einfache Möglichkeit gezeigt, HTML- und PDF-Dateien aus AsciiDoc-Dokumenten zu generieren.
Der Code befindet sich aufover on GitHub.