Giter Site home page Giter Site logo

asciidoctor / asciidoctor-maven-examples Goto Github PK

View Code? Open in Web Editor NEW
195.0 15.0 244.0 1.69 MB

A collection of example projects that demonstrates how to use the Asciidoctor Maven plugin.

Home Page: http://asciidoctor.org/docs/asciidoctor-maven-plugin

License: Other

HTML 0.82% Java 81.84% Groovy 0.64% CoffeeScript 1.74% CSS 14.96%

asciidoctor-maven-examples's Introduction

Asciidoctor Maven Plugin: Examples

This repository contains a collection of sample projects that demonstrate numerous ways to use the Asciidoctor Maven plugin in a Maven project.

Getting the examples

Clone the example repository using git:

$ git clone https://github.com/asciidoctor/asciidoctor-maven-examples

Refer to the README file in each individual project to learn how to run it.

Example catalog

asciidoc-to-html-example (aka “The Quickstart”)

Demonstrates how to convert AsciiDoc to HTML5 using the Asciidoctor Maven plugin.

asciidoc-to-html-multipage-example

Demonstrates how to convert AsciiDoc to multiple HTML pages with the Asciidoctor Maven plugin and Asciidoctor Multipage Extension.

docbook-pipeline-docbkx-example

Demonstrates how to convert AsciiDoc to DocBook and feed it to the DocBook pipeline to generate a PDF using the Asciidoctor and Docbkx Maven plugins.

asciidoctor-diagram-example

Demonstrates how to integrate Asciidoctor Diagram with the Asciidoctor Maven plugin.

asciidoctor-pdf-example

Demonstrates how to convert AsciiDoc to PDF using Asciidoctor PDF with the Asciidoctor Maven plugin.

asciidoctor-epub-example

Demonstrates how to convert AsciiDoc to epub using Asciidoctor EPUB with the Asciidoctor Maven plugin. (contains also an example for .mobi (Kindle) output)

asciidoc-maven-site-converter-example

Demonstrates how to process AsciiDoc in a Maven site using the Asciidoctor Converter Doxia Module.

asciidoc-maven-site-parser-example

Demonstrates how to process AsciiDoc in a Maven site using the Asciidoctor Parser Doxia Module.

asciidoc-multiple-inputs-example

An example project that demonstrates how to convert multiple input AsciiDoc documents to HTML5 and PDF using the Asciidoctor Maven plugin.

java-extension-example

An example project that demonstrates how to create an extension for Asciidoctorj (written in Java) and how to use it in an other documentation Maven module.

asciidoc-to-revealjs-example

Demonstrates how to convert AsciiDoc to reveal.js using Asciidoctor revealjs with the Asciidoctor Maven plugin.

Root pom.xml

The root pom.xml (aggregate build) is provided to allow you to run all the example projects at once using a single invocation of Maven. It also drives the continuous integration (CI) build. The root pom.xml does not contain any shared build configuration so that each of the projects can be used independently. This makes the examples suitable as independent references and as a starting point for your own project.

Usage

Invoke the compile goal (configured as the default goal) on this folder (asciidoctor-maven-example):

$ mvn

On JRuby dependency

Asciidoctor Maven plugin relies on asciidoctor project to do the actual rendering. This is a Ruby implementation integrated thanks to the JRuby project, which is a required dependency to run the plugin. The maven plugin provides a default version of the jruby-complete artifact to ease its configuration. However, it can be overwritten just adding a custom version in the plugin’s dependency section as seen in the following example:

  <plugin>
      <groupId>org.asciidoctor</groupId>
      <artifactId>asciidoctor-maven-plugin</artifactId>
      <version>${asciidoctor.maven.plugin.version}</version>
      <dependencies>
          <dependency>
              <groupId>org.jruby</groupId>
              <artifactId>jruby</artifactId>
              <version>${jruby.version}</version>
          </dependency>
      <dependencies>
  </plugin>

Contributing

We want you! Yes, you.

Anyone can contribute to an Asciidoctor project. If you have a specialty, or just some creativity to share, we need your participation. We have big aspirations for the project and we need an assortment of skill sets in order to reach them. Make no mistake, contributing is not just for developers.

Of course, we’ll always need help with the code as it’s the basis of the project. But code isn’t going to make the project successful alone. We also need documentation, automation, design, marketing, communication, advocacy and more for it to make an impact.

Here are just a few of the ways you can contribute to the project:

  • Reporting bugs (The easiest way to get started!)

  • Sharing ideas on https://asciidoctor.zulipchat.com/ or https://discuss.asciidoctor.org

  • Suggesting new feature or improvements in the issue tracker

  • Speaking about the technology

  • Advocating for the technology

  • Assisting with design and/or UX (stylesheets, themes, logos, etc)

  • Conducting user studies and collecting feedback

  • Automating system administration tasks (releases, changelog, announcements, hosting, etc)

  • Writing, editing or maintaining the documentation

  • Organizing the content (information architecture & content strategy)

  • Using or extending the software in a creative way

  • Testing a prerelease, a pull request or master

  • Reviewing or providing feedback on pull requests

  • Writing code (No patch is too small!)

    • Fixing typos

    • Adding or revising comments or API docs

    • Fixing issues

    • Writing tests

    • Refactoring the code

  • Something we haven’t suggested…​seriously!

The best way to get involved is just to show up and express your interest. We have a very friendly and encouraging culture. Harassment or offensive behavior is simply not tolerated. We are positive, even when being critical. We also strive to lift others up and help them be successful. We want your choice to participate in an Asciidoctor project be the start of an exciting and rewarding journey. So thanks for showing up!

Code conventions

Even when this project does not contain much code, we encourage the following good practices to improve accessibility and ease the use of the examples:

  • Document relevant details of an example in the appropriate README file

    • what makes this example useful

    • relevant components used (backends, extensions, …​)

    • how to execute the example and see the results

    • possible use scenarios

  • Comment relevant Java methods and classes, especially when writing extensions

  • Follow simples code conventions to improve readability on the web

    • Use 4 white spaces instead of tabs

    • Avoid long lines in the Java code (they’re good in AsciiDoc files though)

  • Tests are named after each example name.

To help with style conventions editorconfig is provided. It only checks for tabs (which should be replaced by white spaces) and line breaks. Most populars IDE support it out-of-the-box or via plugins.

Copyright © 2014 The Asciidoctor Project. Free use of this software is granted under the terms of the MIT License.

See the LICENSE.adoc file for details.

asciidoctor-maven-examples's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

asciidoctor-maven-examples's Issues

Missing minimal asciidoctor-diagram maven project

Current maven project with diagrams adds a lot of configuration that I don't think is necessary (e.g. specifying jruby version - user shouldn't care about that).

Please create an example that uses existing graphviz/dot maven packages and not connect to repository other than maven central (some companies have maven mirrors that download only from central).

Use the bundled version of Prawn in asciidoctor-pdf-with-theme-example

With #39 the asciidoctor-pdf-with-theme-example module was introduced.

For the image cover feature, Prawn 2 is requested.
AsciidoctorJ PDF bundles Prawn 1.3.0.

The current solution is to use Prawn 2.0.2 as external ruby gem instead of the bundled version (the gems are fetched by maven with the TorqueBox RubyGems Maven Proxy Repository)

When AsciidoctorJ bundles Prawn 2 (probabelly with version 1.6.0) this work around can be removed. This will be similar to #37

Input form @mojavelinux on the mailing list:
http://discuss.asciidoctor.org/Asciidoctor-YAML-style-file-for-PDF-and-maven-tp3849p3858.html

asciidoctor: WARN: could not embed image: PNG uses unsupported interlace method

Hello,

I'm experiencing a problem with the asciidoctorj-pdf Maven plugin that can be easily reproduced using the example project asciidoctor-pdf-example. This project uses an JPG image. Simply changing the following line (in this file) to use a PNG (that should be placed in this folder) instead of JPG:

image::sunset.jpg[scaledwidth=75%]

For example like this (sing this picture):

image::download2-256.png[scaledwidth=75%]

After that, we try to build the PDF using Maven as usual:

mvn

We can see a warning in the Maven log, and then the picture is not displayed in the PDF.

[INFO] Scanning for projects...
[INFO]
[INFO] -----------< org.asciidoctor.maven:asciidoctor-pdf-example >------------
[INFO] Building Asciidoctor PDF Maven example 1.0.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- asciidoctor-maven-plugin:2.2.1:process-asciidoc (generate-pdf-doc) @ asciidoctor-pdf-example ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Using 'UTF-8' encoding to copy filtered properties files.
[INFO] Copying 4 resources
[INFO] asciidoctor: WARN: could not embed image: C:/Users/boni/dev/asciidoctor-maven-examples/asciidoctor-pdf-example/src/docs/asciidoc/images/download2-256.png; PNG uses unsupported interlace method; install prawn-gmagick gem to add support
[INFO] Converted C:\Users\boni\dev\asciidoctor-maven-examples\asciidoctor-pdf-example\src\docs\asciidoc\example-manual.adoc
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ asciidoctor-pdf-example ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\Users\boni\dev\asciidoctor-maven-examples\asciidoctor-pdf-example\src\main\resources
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

It seems related to this, but I don't know if this problem can be solved when using the Maven plugin.

asciidoc-multiple-inputs-example image missing in the pdf output.

When I try to run the example asciidoc-multiple-inputs-example with maven on windows, there is no images in the output pdf document example-manual.pdf.

There is a asciidoctor: WARNING: line in the console log. asciidoctor seems to look for the picture at the imagesdir + absolute path + imagesdir location

In the PDF document, in the Attributes section the value of imagesdir is set to: "images"

Here the maven log:

C:\{{path_to_git_repo}}\asciidoc-multiple-inputs-example>mvn install
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building AsciiDoc Multiple Input Documents Maven Example 1.0.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- asciidoctor-maven-plugin:1.5.2:process-asciidoc (asciidoc-usermanual-to-pdf) @ asciidoc-multiple-inputs-example ---
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
asciidoctor: WARNING: could not embed image; images/C:/{{path_to_git_repo}}/asciidoc-multiple-inputs-example/src/docs/asciidoc/user-manual/images/sunset.jpg not found
[INFO] Rendered C:\{{path_to_git_repo}}\asciidoc-multiple-inputs-example\src\docs\asciidoc\user-manual\example-manual.adoc
[INFO]
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ asciidoc-multiple-inputs-example ---
[debug] execute contextualize
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\{{path_to_git_repo}}\asciidoc-multiple-inputs-example\src\main\resources
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ asciidoc-multiple-inputs-example ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:2.5:testResources (default-testResources) @ asciidoc-multiple-inputs-example ---
[debug] execute contextualize
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\{{path_to_git_repo}}\asciidoc-multiple-inputs-example\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ asciidoc-multiple-inputs-example ---
[INFO] No sources to compile
[INFO]
[INFO] --- maven-surefire-plugin:2.10:test (default-test) @ asciidoc-multiple-inputs-example ---
[INFO] No tests to run.
[INFO] Surefire report directory: C:\{{path_to_git_repo}}\asciidoc-multiple-inputs-example\target\surefire-reports

An unordered list is not rendered correctly with a custom theme.

Hi,
in my fork I added an unordered list. In the pdf output with a custom theme, the list is not rendered correctly. The character '¬' is shown, instead of the bullet points in the default theme example. An update of the dependencies did not help.

I ran the build in a cygwin bash shell and linux. On both systems the following line tries to give a hint:
"The following text could not be fully converted to the Windows-1252 character set:"

With the following older versions the problem does not occur:
<asciidoctorj.pdf.version>1.5.0-alpha.11</asciidoctorj.pdf.version>
<rubygems.prawn.version>2.1.0</rubygems.prawn.version>

Does someone know how to get it right?

epub not converting - no such file to load -- kindlegen

With last versions 1.6.0 & 2.0x, and even with kindlegen in the path, the example fails with the message.

[ERROR] Failed to execute goal org.asciidoctor:asciidoctor-maven-plugin:1.6.0:process-asciidoc (generate-spine-kf8) on project asciidoctor-epub-example: Execution generate-spine-kf8 of goal org.asciidoctor:asciidoctor-maven-plugin:1.6.0:process-asciidoc failed: org.jruby.exceptions.LoadError: (LoadError) no such file to load -- kindlegen -> [Help 1]

env:
Java version: 11.0.1, vendor: Oracle Corporation, runtime: C:\home\bin\jdk-11.0.1
Default locale: es_ES, platform encoding: Cp1252
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"

Create a 'parent' pom to handle properties and tests

I've been thinking about creating a 'parent' pom.xml at the root to handle common properties like the plugin version.
I see that doing so the examples aren't 100% independent since they require the parent to build, but I see the next benefits also:

  • Easier to update common properties like asciidoctor-maven-plugin.
  • Easier to add a build system (travis/appveyor).

WDYT?

Maven asciidoctor-confluence integration?

Is there support for asciidoctor-confluence? I would honestly love successful builds to automatically update our central documentation, but I can't figure out how to do this on my own

Make the module names and Maven project names consistent

Current, the following module names are used:

<modules>
        <module>asciidoc-multiple-inputs-example</module>
        <module>asciidoc-site-example</module>
        <module>asciidoc-to-html-example</module>
        <module>asciidoc-to-pdf-example</module>
        <module>asciidoctor-diagram-example</module>
        <module>docbook-pipeline-docbkx-example</module>
        <module>docbook-pipeline-jdocbook-example</module>
    </modules>

So most of them start with asciidoc, except asciidoctor-diagram-example. I would propose to rename that one to asciidoc-diagram-example

The asciidoc-to-pdf-example module uses asciidoctor-pdf-example as artifact id. I would propose to change the artifact id to asciidoc-to-pdf-example

If you are ok with these changes, I can create a pull request for them.

Automate examples validation

In the past we discussed this and considered that tests should not be part of the examples.
However, time spent in validations on every version bump is tiresome, error prone as any manual task and limited to a single OS. Also now we can use github actions to keep validations outside of the examples code itself.

My proposal is to implement checks using bash scripts residing in .github directory. That would safe time and eventually allow for automatic updates on releases.

can't specify the stylesheet to use with sourceHighlighter

Hello !

I'm using the sourceHighlighter tag to hightlight my source code :

<sourceHighlighter>prettify</sourceHighlighter>

... in the configuration tag.

When i use prettify for example it alway include an import to the default stylesheet :

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prettify/r298/prettify.min.css">

Is there a way to set another stylesheet ?

Question: Generated html maintaining folder structure

Hello,

I'm trying to generate multiple html using asciidocs which are inside folders and subfolders but when the html files are generated, they end in generated-docs (without subfolders).
I have read the issue asciidoctor/asciidoctor#1394 that solves this but using ruby asciidoctor and an "-R" flag. Is there a way to achieve the same with this asciidoctor-maven-plugin?

Example fails to execute on Windows

Some examples (at least pdf and diagram examples) don't work out of the box on Windows.

I get the following error :

[ERROR] Failed to execute goal org.asciidoctor:asciidoctor-maven-plugin:1.5.0:pr
ocess-asciidoc (generate-html-doc) on project asciidoctor-pdf-example: Execution
 generate-html-doc of goal org.asciidoctor:asciidoctor-maven-plugin:1.5.0:proces
s-asciidoc failed: (LoadError) no such file to load -- asciidoctor-pdf -> [Help
1]

This is related to #122.

You have to replace ${project.build.directory}/gems-provided by target/gems-provided' as a workaround. Of course you have to cd to your pom's directory before executing the build.

The include:: in the source code section does not work. I see

link:c:/<myprojectpath>/...

PDF header missing when migrating to asciidoctorj-pdf.1.5.0-alpha.18

I found some issue running the asciidoctor-pdf-with-theme-example with the latest version of ascidoctorj-pdf.1.5.0-alpha.18 as such:

<properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <asciidoctor.maven.plugin.version>2.0.0-RC.1</asciidoctor.maven.plugin.version>
        <asciidoctorj.pdf.version>1.5.0-alpha.18</asciidoctorj.pdf.version>
        <asciidoctorj.version>2.0.0</asciidoctorj.version>
        <jruby.version>9.2.7.0</jruby.version>
</properties>

Now the running content headers are dissapearing, the footers are still present as you can see in the attached image 😕 :

asciidoctorj-pdf-missing-headers

Contrary the alpha.17 does not seem to support the extends statement to the default theme

extends: default

Cannot get my asciidoc to consistently read in Maven properties

Hi, not sure what I'm doing wrong but I cannot get my asciidoc to consistently read in Maven properties define in my pom.xml file.

Here's a snipped of the pom file:

`
<opentelemetry.version>1.9.1</opentelemetry.version>
<maven.build.timestamp.format>MM-dd-yyyy</maven.build.timestamp.format>

<parent>
	<groupId>org.mule.extensions</groupId>
	<artifactId>mule-modules-parent</artifactId>
	<version>1.1.3</version>
</parent>

<build>
	<plugins>
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-source-plugin</artifactId>
			<executions>
				<execution>
					<id>attach-sources</id>
					<goals>
						<goal>jar</goal>
					</goals>
				</execution>
			</executions>
		</plugin>
		<plugin>
			<groupId>org.asciidoctor</groupId>
			<artifactId>asciidoctor-maven-plugin</artifactId>
			<version>2.2.2</version>
			<executions>
				<execution>
					<id>asciidoc-to-html</id>
					<phase>generate-resources</phase>
					<goals>
						<goal>process-asciidoc</goal>
					</goals>
					<configuration>
						<!-- <outputDirectory>target/generated-docs/${project.version}</outputDirectory> -->
						<attributes>
							<revnumber>${project.version}</revnumber>
							<revdate>${maven.build.timestamp}</revdate>
							<source-highlighter>coderay</source-highlighter>
						</attributes>
					</configuration>
				</execution>
			</executions>
		</plugin>
	</plugins>
</build>`

And here is a bit of the asciidoc:
= Mule 4 OpenTelemetry (OTel) Agent Extension // Document header Rick Bansal <[email protected]> :revnumber: {revnumber} :revdate: {revdate} :revremark: Initial Draft :doctype: book :icons: font :toc: left :keywords: Mule, MuleSoft, Observability, OpenTelemetry, OTel, Tracing, Instrumentation, Distributed

Image of the html output:
Screen Shot 2022-02-28 at 10 34 06 AM

Please advise. Thanks

Provide example for math/formula usage

It should be possible to use the math extensions.
In HTML and PDF formulas don't get rendered and the plugin just shows a warning:
asciidoctor: WARNING: conversion missing in backend pdf for stem
There need to be a similar example as it does exist for the asciidocj-diagram extension.

Putting :stem: into the document header or <stem/> into the <attribute>-section of the plugin configuration does not help.

A non working sample could be provided.

Unable to run the asciidoc-to-revealjs-example

I apologize if this is the wrong place. I'm pretty sure I am missing something obvious.

I cloned the repo (master branch) and tried to run theasciidoc-to-revealjs-example and I get the following build failure.

Environment: Mac OS X 10.12.6, Oracle Java 1.8.0_144 x64, Maven 3.5.0. No changes were made after cloning.

Command: mvn -e

Error output:

[ERROR] Failed to execute goal org.asciidoctor:asciidoctor-maven-plugin:1.5.5:process-asciidoc (generate-slides) on project asciidoc-to-revealjs-example: Execution generate-slides of goal org.asciidoctor:asciidoctor-maven-plugin:1.5.5:process-asciidoc failed: org.jruby.exceptions.RaiseException: (RuntimeError) Could not find a converter to handle transform: document -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.asciidoctor:asciidoctor-maven-plugin:1.5.5:process-asciidoc (generate-slides) on project asciidoc-to-revealjs-example: Execution generate-slides of goal org.asciidoctor:asciidoctor-maven-plugin:1.5.5:process-asciidoc failed: org.jruby.exceptions.RaiseException: (RuntimeError) Could not find a converter to handle transform: document
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:154)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:146)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
	at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
	at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:309)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:194)
	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:107)
	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:993)
	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:345)
	at org.apache.maven.cli.MavenCli.main(MavenCli.java:191)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
	at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
	at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution generate-slides of goal org.asciidoctor:asciidoctor-maven-plugin:1.5.5:process-asciidoc failed: org.jruby.exceptions.RaiseException: (RuntimeError) Could not find a converter to handle transform: document
	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:145)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
	... 20 more
Caused by: org.asciidoctor.internal.AsciidoctorCoreException: org.jruby.exceptions.RaiseException: (RuntimeError) Could not find a converter to handle transform: document
	at org.asciidoctor.internal.JRubyAsciidoctor.renderFile(JRubyAsciidoctor.java:347)
	at org.asciidoctor.maven.AsciidoctorMojo.renderFile(AsciidoctorMojo.java:398)
	at org.asciidoctor.maven.AsciidoctorMojo.execute(AsciidoctorMojo.java:217)
	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
	... 21 more
Caused by: org.jruby.exceptions.RaiseException: (RuntimeError) Could not find a converter to handle transform: document
	at RUBY.find_converter(/Users/example/.m2/repository/org/asciidoctor/asciidoctorj/1.5.6/asciidoctorj-1.5.6.jar!/gems/asciidoctor-1.5.6.1/lib/asciidoctor/converter/composite.rb:52)
	at RUBY.converter_for(/Users/example/.m2/repository/org/asciidoctor/asciidoctorj/1.5.6/asciidoctorj-1.5.6.jar!/gems/asciidoctor-1.5.6.1/lib/asciidoctor/converter/composite.rb:41)
	at RUBY.convert(/Users/example/.m2/repository/org/asciidoctor/asciidoctorj/1.5.6/asciidoctorj-1.5.6.jar!/gems/asciidoctor-1.5.6.1/lib/asciidoctor/converter/composite.rb:31)
	at RUBY.convert(/Users/example/.m2/repository/org/asciidoctor/asciidoctorj/1.5.6/asciidoctorj-1.5.6.jar!/gems/asciidoctor-1.5.6.1/lib/asciidoctor/document.rb:1060)
	at RUBY.convert(/Users/example/.m2/repository/org/asciidoctor/asciidoctorj/1.5.6/asciidoctorj-1.5.6.jar!/gems/asciidoctor-1.5.6.1/lib/asciidoctor.rb:1502)
	at RUBY.convert_file(/Users/example/.m2/repository/org/asciidoctor/asciidoctorj/1.5.6/asciidoctorj-1.5.6.jar!/gems/asciidoctor-1.5.6.1/lib/asciidoctor.rb:1575)
	at org.jruby.RubyIO.open(org/jruby/RubyIO.java:1201)
	at RUBY.convert_file(/Users/example/.m2/repository/org/asciidoctor/asciidoctorj/1.5.6/asciidoctorj-1.5.6.jar!/gems/asciidoctor-1.5.6.1/lib/asciidoctor.rb:1575)
	at RUBY.convertFile(<script>:75)
	at org.jruby.gen.InterfaceImpl867085328.convertFile(org/jruby/gen/InterfaceImpl867085328.gen:13)

Is there something additional I have to do? Something I am missing? I'm continuing to search and debug but I figured I would ask as well. If I find something out I will post here (or submit a PR with a fix). Thanks in advance for your help.

Maven site "theme" does not look like PDF theme

Hi,
i want to use asciidoc for both my maven-site and a generated PDF. I followed both your 'asciidoc-maven-site-example' and 'asciidoctor-pdf-example' with no alterations.

The generated PDF looks really great, but the maven-site does not look like the PDF at all, e.g.

  • the source-code is not formatted as source-code, only verbatim and without background
  • table borders are invisible, cells do not have any background

Is this by intention? Can i customize this by myself - preferrable without editing the css, but e.g. by attributes in the pom.xml?

I added pictures for better understanding. this is the poor-looking maven-site:
maven-site

and this is the great-looking PDF:
pdf

Cannot execute ebup example

I get this error when executing the ebug example:
[ERROR] Failed to execute goal org.asciidoctor:asciidoctor-maven-plugin:2.0.0:process-asciidoc (generate-spine-kf8) on project asciidoctor-epub-example: Execution generate-spine-kf8 of goal org.asciidoctor:asciidoctor-maven-plugin:2.0.0:process-asciidoc failed: org.jruby.exceptions.IOError: (IOError) Cannot run program "kindlegen.exe" (in directory "M:\projects\asciidoctor_maven_extension\asciidoctor-maven-examples\asciidoctor-epub-example\src\docs\asciidoc"): CreateProcess error=2, Das System kann die angegebene Datei nicht finden -> [Help 1]

I searched for the kindlegen.exe file and found this Amazon page:
https://www.amazon.com/gp/feature.html?ie=UTF8&docId=1000765211

So the kindle previewer should be used instead?

graphvizdot attribute has no effect; only PATH seems to work for setting dot.exe

I am not sure the graphvizdot attribute has any effect. Getting the following exception when graphvizdot is set.

<attributes>
<graphvizdot>C:\dev\tools\graphviz-2.38\bin\dot.exe</graphvizdot>
</attributes>

[INFO] --- asciidoctor-maven-plugin:1.5.3:process-asciidoc (output-html) @ xxxx ---

asciidoctor-diagram: ERROR: Failed to generate image: PlantUML image generation failed: Bad Request java.io.IOException: Could not find GraphViz 'dot' tool
at org.asciidoctor.diagram.PlantUML.getGraphviz(PlantUML.java:24)
at org.asciidoctor.diagram.PlantUML.generate(PlantUML.java:35)
at org.asciidoctor.diagram.CommandProcessor.processRequest(CommandProcessor.java:36)
at org.asciidoctor.diagram.CommandProcessor.processRequest(CommandProcessor.java:11)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.jruby.javasupport.JavaMethod.invokeDirectWithExceptionHandling(JavaMethod.java:456)
at org.jruby.javasupport.JavaMethod.invokeDirect(JavaMethod.java:317)
at org.jruby.java.invokers.InstanceMethodInvoker.call(InstanceMethodInvoker.java:45)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:326)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)
at org.jruby.ast.CallOneArgNode.interpret(CallOneArgNode.java:57)
at org.jruby.ast.LocalAsgnNode.interpret(LocalAsgnNode.java:123)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:182)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:326)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)
at org.jruby.ast.CallOneArgNode.interpret(CallOneArgNode.java:57)
at org.jruby.ast.LocalAsgnNode.interpret(LocalAsgnNode.java:123)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:112)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:126)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:296)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:72)
at org.jruby.ast.FCallManyArgsNode.interpret(FCallManyArgsNode.java:60)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.evaluator.ASTInterpreter.INTERPRET_BLOCK(ASTInterpreter.java:112)
at org.jruby.runtime.Interpreted19Block.evalBlockBody(Interpreted19Block.java:206)
at org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:194)
at org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:177)
at org.jruby.runtime.Block.yieldArray(Block.java:158)
at org.jruby.RubyBasicObject.yieldUnder(RubyBasicObject.java:1629)
at org.jruby.RubyBasicObject.instance_exec19(RubyBasicObject.java:1603)
at org.jruby.RubyBasicObject$INVOKER$i$0$3$instance_exec19.call(RubyBasicObject$INVOKER$i$0$3$instance_exec19.gen)
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:226)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:376)
at org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:247)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:251)
at org.jruby.ast.FCallThreeArgBlockPassNode.interpret(FCallThreeArgBlockPassNode.java:36)
at org.jruby.ast.LocalAsgnNode.interpret(LocalAsgnNode.java:123)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.ast.IfNode.interpret(IfNode.java:116)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:112)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:126)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:296)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:72)
at org.jruby.ast.FCallManyArgsNode.interpret(FCallManyArgsNode.java:60)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.CaseNode.interpret(CaseNode.java:138)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.RescueNode.executeBody(RescueNode.java:221)
at org.jruby.ast.RescueNode.interpret(RescueNode.java:116)
at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:290)
at org.jruby.RubyMethod.call(RubyMethod.java:128)
at org.jruby.RubyMethod$INVOKER$i$call.call(RubyMethod$INVOKER$i$call.gen)
at org.jruby.internal.runtime.methods.JavaMethod$JavaMethodZeroOrOneOrTwoOrThreeOrNBlock.call(JavaMethod.java:333)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:366)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:238)
at org.jruby.ast.CallThreeArgNode.interpret(CallThreeArgNode.java:61)
at org.jruby.ast.LocalAsgnNode.interpret(LocalAsgnNode.java:123)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.IfNode.interpret(IfNode.java:110)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.ast.IfNode.interpret(IfNode.java:116)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:112)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:126)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:296)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:72)
at org.jruby.ast.FCallManyArgsNode.interpret(FCallManyArgsNode.java:60)
at org.jruby.ast.LocalAsgnNode.interpret(LocalAsgnNode.java:123)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.ast.IfNode.interpret(IfNode.java:116)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.CaseNode.interpret(CaseNode.java:138)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.ast.IfNode.interpret(IfNode.java:116)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.ast.WhileNode.interpret(WhileNode.java:131)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:112)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:126)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:70)
at org.jruby.ast.FCallManyArgsNode.interpret(FCallManyArgsNode.java:60)
at org.jruby.ast.LocalAsgnNode.interpret(LocalAsgnNode.java:123)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.IfNode.interpret(IfNode.java:110)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.ast.IfNode.interpret(IfNode.java:118)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.ast.WhileNode.interpret(WhileNode.java:131)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:268)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:236)
at org.jruby.ast.FCallThreeArgNode.interpret(FCallThreeArgNode.java:40)
at org.jruby.ast.MultipleAsgn19Node.interpret(MultipleAsgn19Node.java:104)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.ast.IfNode.interpret(IfNode.java:116)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.ast.IfNode.interpret(IfNode.java:116)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.ast.WhileNode.interpret(WhileNode.java:131)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:268)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:366)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:238)
at org.jruby.ast.FCallThreeArgNode.interpret(FCallThreeArgNode.java:40)
at org.jruby.ast.MultipleAsgn19Node.interpret(MultipleAsgn19Node.java:104)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.ast.WhileNode.interpret(WhileNode.java:131)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.IfNode.interpret(IfNode.java:118)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:268)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:366)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:238)
at org.jruby.ast.CallThreeArgNode.interpret(CallThreeArgNode.java:61)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.ast.IfNode.interpret(IfNode.java:118)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:139)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:306)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:136)
at org.jruby.ast.CallNoArgNode.interpret(CallNoArgNode.java:60)
at org.jruby.ast.LocalAsgnNode.interpret(LocalAsgnNode.java:123)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.IfNode.interpret(IfNode.java:118)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.ast.RescueNode.executeBody(RescueNode.java:221)
at org.jruby.ast.RescueNode.interpret(RescueNode.java:116)
at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:225)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:346)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:204)
at org.jruby.ast.CallTwoArgNode.interpret(CallTwoArgNode.java:59)
at org.jruby.ast.LocalAsgnNode.interpret(LocalAsgnNode.java:123)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:225)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:346)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:204)
at org.jruby.ast.CallTwoArgNode.interpret(CallTwoArgNode.java:59)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:225)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:346)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:204)
at org.jruby.ast.CallTwoArgNode.interpret(CallTwoArgNode.java:59)
at org.jruby.ast.ReturnNode.interpret(ReturnNode.java:92)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:74)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:112)
at org.jruby.gen.InterfaceImpl246963348.convertFile(org/jruby/gen/InterfaceImpl246963348.gen:13)
at org.asciidoctor.internal.JRubyAsciidoctor.renderFile(JRubyAsciidoctor.java:340)
at org.asciidoctor.maven.AsciidoctorMojo.renderFile(AsciidoctorMojo.java:289)
at org.asciidoctor.maven.AsciidoctorMojo.execute(AsciidoctorMojo.java:180)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)

When looking into the class org.asciidoctor.diagram.PlantUML this seems to be confirmed. It only looks into System.getenv("PATHEXT") and System.getenv("PATH") it seems.

Anyway, it works fine if I set the dot.exe folder on the PATH and it does not work with the attribute set inside the pom.xml.

Question: How do you render the generated pdf on browser?

Hi,

This is a question and not an issue. I came across an application that I am expected to take over, at my work place. I am analyzing the code and came across the usage of asciidoc. This application is hosted in a machine that I cannot access and is running fine. I would want to understand how can I access the PDFs generated from asciidoc from my browser, and if I should be looking for the path being configured in the code/configuration somewhere?

The folder structure is:
--Master
--doc
--data
--gradle
--src
--docs
--images
--inc
--resources
--xyz.adoc
--abc.adoc
--build.gradle
--gradle.properties
--pom.xml

Thanks,
Tejansh

Big redesign of tests

Simplify the integration tests structure and design, removing the maven-invoker-plugin and rewriting its tests.
This will add some new features:

  • Copy sources in project to a folder inside target.
  • Copy common resources in theme to previous folder.
  • prepare-build phase...

This will help to solve collateral problems with asciidoctor, as the images folder problem in diagrams.

Add epub example

Just realized there's none.
It should be very similar to the current pdf example, and it won't add much in terms of integration features.
But at least people looking for it, will be be able to find one example ready to use.

Add checkstyle checking

(Related to #21) Include some checkstyle maven plugin rules.

As a proposal, I think we should add these formating rules at least:

  • PackageName
  • FileTabCharacter

Then also, being examples, we could add some rules to encourage documenting the classes:

  • JavadocMethod
  • JavadocType

Any other suggestions?

Add an example that consume a ruby gem as extension

This was first mentioned in #27. It is great to have as example a maven project that consumes a ruby gem as extension (using the TorqueBox RubyGems Maven Proxy Repository):

we will need another sub-project to show how to integrate ruby extensions

For the moment, asciidoctor-pdf-with-theme-example is using it, until #40 is fixed.

This issue keeps everything together:

  • Mailing list: asciidoctor-html5ruby broken?
  • Example with asciidoctor-pdf-cjk in asciidoctorj/#412
  • When the gem library declares version ranges as dependency (this is the case for asciidoctor-bibtex), maven downloads each version in each range. Some of those versions declare broken dependency which produces this maven error "Failed to collect rubygems dependencies!". This is documented in jruby-maven-plugins/#57. The solution is to declare each precise gem version in the <gems> section of the configuration.

error building asciidoctor-maven-examples

Trace
$ mvn
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Asciidoc to reveal.js Maven example 1.0.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- download-maven-plugin:1.2.1:wget (install-asciidoctor-revealjs) @ asciidoc-to-revealjs-example ---
Downloading: https://github.com/asciidoctor/asciidoctor-reveal.js/archive/master.zip
[INFO] /?
[INFO] --- download-maven-plugin:1.2.1:wget (install-revealjs) @ asciidoc-to-revealjs-example ---
Downloading: https://github.com/hakimel/reveal.js/archive/3.5.0.zip
[INFO] /?
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ asciidoc-to-revealjs-example ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\Users\Fred\Downloads\asciidoctor-maven-examples-master\asciidoc-to-revealjs-example\src\main\resources
[INFO]
[INFO] --- asciidoctor-maven-plugin:1.5.6:process-asciidoc (generate-slides) @ asciidoc-to-revealjs-example ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
oct. 12, 2017 10:32:00 PM org.asciidoctor.internal.JRubyAsciidoctor renderFile
GRAVE: (RuntimeError) Could not find a converter to handle transform: document
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 46.392 s
[INFO] Finished at: 2017-10-12T22:32:00+02:00
[INFO] Final Memory: 31M/197M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.asciidoctor:asciidoctor-maven-plugin:1.5.6:process-asciidoc (generate-slides) on project asciidoc-to-revealjs-example: Execution generate-slides of goal org.asciidoctor:asciidoctor-maven-plugin:1.5.6:process-asciidoc failed: org.jruby.exceptions.RaiseException: (RuntimeError) Could not find a converter to handle transform: document -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException

`docbook-pipeline-jdocbook-example` does not build due to missing dependency

Build fails with

[INFO] Scanning for projects...
[ERROR] [ERROR] Some problems were encountered while processing the POMs:
[ERROR] Unresolveable build extension: Plugin org.jboss.maven.plugins:maven-jdocbook-plugin:2.3.8 or one of its dependencies could not be resolved: Failed to collect dependencies at org.jboss.maven.plugins:maven-jdocbook-plugin:jar:2.3.8 -> org.jboss.pressgang:pressgang-xslt-ns:jar:3.0.0 @ 
 @ 
[ERROR] The build could not read 1 project -> [Help 1]
[ERROR]   
[ERROR]   The project org.asciidoctor.maven:docbook-pipeline-jdocbook-example:1.0.0-SNAPSHOT (/home/asalgadr/github/asciidoctor-maven-examples/docbook-pipeline-jdocbook-example/pom.xml) has 1 error
[ERROR]     Unresolveable build extension: Plugin org.jboss.maven.plugins:maven-jdocbook-plugin:2.3.8 or one of its dependencies could not be resolved: Failed to collect dependencies at org.jboss.maven.plugins:maven-jdocbook-plugin:jar:2.3.8 -> org.jboss.pressgang:pressgang-xslt-ns:jar:3.0.0: Failed to read artifact descriptor for org.jboss.pressgang:pressgang-xslt-ns:jar:3.0.0: Could not transfer artifact org.jboss.pressgang:pressgang-xslt-ns:pom:3.0.0 from/to maven-default-http-blocker (http://0.0.0.0/): Blocked mirror for repositories: [jboss-public-repository-group (http://repository.jboss.org/nexus/content/groups/public/, default, releases+snapshots)] -> [Help 2]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/ProjectBuildingException
[ERROR] [Help 2] http://cwiki.apache.org/confluence/display/MAVEN/PluginManagerException

Explain how to run a preprocessor before the build to revealjs

Hi,
I am not a Maven expert...
My Java project uses the asciidoctorj-pdf maven lib to generate pdfs from adocs. Works fine, and I added a pre-processor. My class looks like:

    Asciidoctor asciidoctor = Asciidoctor.Factory.create();
    JavaExtensionRegistry extensionRegistry = asciidoctor.javaExtensionRegistry();
    extensionRegistry.preprocessor(ImagePreprocessor.class);

    Attributes attributes = new Attributes();
    Options options = new Options();

    options.setAttributes(attributes);
    options.setInPlace(true);
    options.setBackend("pdf");

    asciidoctor.convertFile(new File("sample.adoc"), options);

Now, using the plugins from asciidoctor-maven-examples I have created a revealJs presentation from the same sample.adoc. However the build process ignores the pre-processor I had written in my class.

To explain better what I mean, I expected to set "revealJs" instead of "pdf" as the backend in my code and then simply do asciidoctor.convertFile(...)

So how can I integrate the build to revealjs with the rest of my code?

asciidoctor-epub-example not working with Java17

Works fine with Java 11, but with Java17 and no kindlegen fails.

        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <asciidoctor.maven.plugin.version>2.2.2</asciidoctor.maven.plugin.version>
        <asciidoctorj.epub.version>1.5.1</asciidoctorj.epub.version>
        <asciidoctorj.version>2.5.5</asciidoctorj.version>
        <jruby.version>9.3.4.0</jruby.version>

mvn -e

[ERROR] Failed to execute goal org.asciidoctor:asciidoctor-maven-plugin:3.0.0-SNAPSHOT:process-asciidoc (generate-spine-kf8) on project asciidoctor-epub-example: Execution generate-spine-kf8 of goal org.asciidoctor:asciidoctor-maven-plugin:3.0.0-SNAPSHOT:process-asciidoc failed: org.jruby.exceptions.SystemCallError: (EBADF) Bad file descriptor - /bin/sh -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.asciidoctor:asciidoctor-maven-plugin:3.0.0-SNAPSHOT:process-asciidoc (generate-spine-kf8) on project asciidoctor-epub-example: Execution generate-spine-kf8 of goal org.asciidoctor:asciidoctor-maven-plugin:3.0.0-SNAPSHOT:process-asciidoc failed: org.jruby.exceptions.SystemCallError: (EBADF) Bad file descriptor - /bin/sh
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:375)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:351)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:171)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:163)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:294)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:960)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:568)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution generate-spine-kf8 of goal org.asciidoctor:asciidoctor-maven-plugin:3.0.0-SNAPSHOT:process-asciidoc failed: org.jruby.exceptions.SystemCallError: (EBADF) Bad file descriptor - /bin/sh
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:148)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:370)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:351)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:171)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:163)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:294)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:960)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:568)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: org.asciidoctor.jruby.internal.AsciidoctorCoreException: org.jruby.exceptions.SystemCallError: (EBADF) Bad file descriptor - /bin/sh
    at org.asciidoctor.jruby.internal.JRubyAsciidoctor.convertFile (JRubyAsciidoctor.java:402)
    at org.asciidoctor.jruby.internal.JRubyAsciidoctor.convertFile (JRubyAsciidoctor.java:368)
    at org.asciidoctor.maven.AsciidoctorMojo.convertFile (AsciidoctorMojo.java:451)
    at org.asciidoctor.maven.AsciidoctorMojo.processSources (AsciidoctorMojo.java:250)
    at org.asciidoctor.maven.AsciidoctorMojo.processAllSources (AsciidoctorMojo.java:166)
    at org.asciidoctor.maven.AsciidoctorMojo.execute (AsciidoctorMojo.java:156)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:370)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:351)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:171)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:163)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:294)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:960)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:568)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: org.jruby.exceptions.SystemCallError: (EBADF) Bad file descriptor - /bin/sh
    at org.jruby.RubyProcess.spawn (org/jruby/RubyProcess.java:1671)
    at org.jruby.RubyKernel.spawn (org/jruby/RubyKernel.java:1723)
    at RUBY.popen_run (uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/open3.rb:213)
    at RUBY.popen3 (uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/open3.rb:101)
    at RUBY.capture3 (uri:classloader:/META-INF/jruby.home/lib/ruby/stdlib/open3.rb:281)
    at RUBY.distill_epub_to_mobi (uri:classloader:/gems/asciidoctor-epub3-1.5.1/lib/asciidoctor-epub3/converter.rb:1679)
    at RUBY.write (uri:classloader:/gems/asciidoctor-epub3-1.5.1/lib/asciidoctor-epub3/converter.rb:42)
    at RUBY.write (uri:classloader:/gems/asciidoctor-2.0.17/lib/asciidoctor/document.rb:988)
    at RUBY.convert (uri:classloader:/gems/asciidoctor-2.0.17/lib/asciidoctor/convert.rb:124)
    at RUBY.convert_file (uri:classloader:/gems/asciidoctor-2.0.17/lib/asciidoctor/convert.rb:190)
    at org.jruby.RubyIO.open (org/jruby/RubyIO.java:1148)
    at RUBY.convert_file (uri:classloader:/gems/asciidoctor-2.0.17/lib/asciidoctor/convert.rb:190)
[ERROR] 
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException

Example asciidoc-to-html-multipage-example does not work on JDK 11

The example asciidoc-to-html-multipage-example does not work.

[INFO] Scanning for projects...
[INFO]
[INFO] ------< org.asciidoctor.maven:asciidoc-to-html-multipage-example >------
[INFO] Building AsciiDoc to Multiple HTML Pages Maven Example 1.0.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ asciidoc-to-html-multipage-example ---
[INFO]
[INFO] --- gem-maven-plugin:2.0.1:initialize (install-gems) @ asciidoc-to-html-multipage-example ---
[WARNING] ERROR:  While executing gem ... (Errno::EACCES)
    Permission denied - NUL

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  6.262 s
[INFO] Finished at: 2022-07-28T17:34:59+02:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal de.saumya.mojo:gem-maven-plugin:2.0.1:initialize (install-gems) on project asciidoc-to-html-multipage-example: Execution install-gems of goal de.saumya.mojo:gem-maven-plugin:2.0.1:initialize failed: Java returned: 1 -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException

notoserif-regular-subset.ttf not found

How to resolve this problem?

Failed to execute goal org.asciidoctor:asciidoctor-maven-plugin:2.1.0:process-asciidoc (generate-pdf-cjk-zh_CN-doc) on project pnr-push-docs: Execution generate-pdf-cjk-zh_CN-doc of goal org.asciidoctor:asciidoctor-maven-plugin:2.1.0:process-asciidoc failed: org.jruby.exceptions.SystemCallError: (ENOENT) No such file or directory - notoserif-regular-subset.ttf not found in /xxxxxxxxxxxxxxx/yyyyyyyyyyyyyyyyyyy/zzzzzzzzzzzzzzzzzzzzzz

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.