Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Configure AsciiDoctor Maven plugin to generate a single PDF file

Is there a way to configure AsciiDoctor Maven plugin to generate one PDF file out of many .adoc files?

Currently, it simply translates the structure of asciidoc files into the same structure, but using PDFs. I would like to have a single file and when I click on the link it moves me to the target location in the same PDF. Is this even possible using Maven plugin?

My current pom.xml:

...
<plugin>
    <groupId>org.asciidoctor</groupId>
    <artifactId>asciidoctor-maven-plugin</artifactId>
    <version>2.2.2</version>
    <dependencies>
        <dependency>
            <groupId>org.asciidoctor</groupId>
            <artifactId>asciidoctorj-pdf</artifactId>
            <version>2.1.4</version>
        </dependency>
    </dependencies>
    <configuration>
        <sourceDirectory>documentation</sourceDirectory>
        <outputDirectory>target/pdf-doc</outputDirectory>
        <backend>pdf</backend>
        <preserveDirectories>true</preserveDirectories>
    </configuration>
    <executions>
        <execution>
            <id>generate-pdf-doc</id>
            <phase>generate-resources</phase>
            <goals>
                <goal>process-asciidoc</goal>
            </goals>
            <configuration>
                <backend>pdf</backend>
                <attributes>
                    <source-highlighter>rouge</source-highlighter>
                    <icons>font</icons>
                    <pagenums/>
                    <toc/>
                    <idprefix/>
                    <idseparator>-</idseparator>
                </attributes>
            </configuration>
        </execution>
    </executions>
</plugin>
...
like image 851
Sout parl Avatar asked Dec 06 '25 07:12

Sout parl


1 Answers

You need to aggregate individual articles into single one like:

:toc: macro
:toclevels: 3
:toc-title: Contents
:doctype: book
:chapter-label:

toc::[]

:doctype: book

include::article1.adoc[]

include::article2.adoc[]

...

and setup maven plugin to compile that single adoc:

<configuration>
   <sourceDocumentName>single.adoc</sourceDocumentName>
</configuration>

It seems the Q is more about asciidoc rather than maven...

I believe to support document links we need to create anchors with unique names, something like:

building-tool.adoc:

[#building_tool]
= Building tool

== Status
Accepted

cloud.adoc:

[#cloud]
= Cloud

== Status
Accepted

adr-log.adoc:

| 08/07/2022
| xref:adr/building-tool.adoc#building_tool[Building tool]
| Accepted

| 08/07/2022
| xref:adr/cloud.adoc#cloud[Cloud]
| Accepted
like image 170
Andrey B. Panfilov Avatar answered Dec 08 '25 19:12

Andrey B. Panfilov