Webservice Addressing with the Ant Task Library
Minimum Requirements
- Java version: 7
- webPDF version: 7
- ant-task version: 1

If you use Apache Ant, the question quickly comes up whether webPDF webservices can be called directly from an Ant target. That would make it possible to automate fixed webservice sequences and repeat them reliably for many documents.
Yes, It Can
The webPDF ant-task library provides simple tasks that let you start individual webPDF webservice calls or execute several of them in sequence.
The actual calls are executed via the webPDF wsclient library.
ant-task on GitHub and in Maven Central
The ant-task library is publicly available and free to use:
- GitHub project: maintenance, further development, and issues
- Issues: Report an error
- Pull requests: Submit changes
- Maven Central: Package
net.webpdf
Maven dependency:
<dependency>
<groupId>net.webpdf</groupId>
<artifactId>webpdf-ant</artifactId>
<version>1.0.0</version>
</dependency>
Integration via Apache Ivy:
<?xml version="1.0" encoding="UTF-8"?>
<ivy-module version="2.0">
<info organisation="example" module="webpdf-ant-demo" />
<dependencies>
<dependency org="net.webpdf" name="webpdf-ant" rev="1.0.0" />
</dependencies>
</ivy-module>
Example: Calling a webPDF Webservice from an Ant Target
In the following example, files are read from a source folder, converted to PDF with the Converter webservice, and written to a target folder.
<?xml version="1.0" encoding="UTF-8"?>
<project name="webpdf-ant-example" default="executeWebPDFTask"
xmlns:ivy="antlib:org.apache.ivy.ant"
xmlns:webpdf="antlib:net.webpdf.ant">
<target name="executeWebPDFTask">
<mkdir dir="input" />
<mkdir dir="output" />
<ivy:resolve />
<ivy:cachepath pathid="webpdf.classpath" conf="default" />
<taskdef uri="antlib:net.webpdf.ant"
resource="net/webpdf/ant/antlib.xml"
classpathref="webpdf.classpath" />
<webpdf:webpdf serverurl="http://localhost:8080/webPDF"
targetdir="output"
failonerror="true">
<fileset dir="input">
<include name="**/*.png" />
</fileset>
<globmapper from="*.png" to="*.pdf" />
<webpdf:group>
<webpdf:operation>
<webpdf:converter />
</webpdf:operation>
</webpdf:group>
</webpdf:webpdf>
</target>
</project>
The webpdf Task
The webpdf task is the entry point and provides the basic options:
serverurl: address of the webPDF servertempdir(optional): directory for temporary filestargetdir: output path for resultsfailonerror(optional): stop on the first error
If required, credentials can be provided via usercredentials:
<webpdf:usercredentials username="user" password="secret" />
Selecting Source Files
For input, you can use elements such as file or fileset:
<fileset dir="input">
<include name="**/*.png" />
</fileset>
operation and group Tasks
The desired webservice endpoint is defined inside the operation task, including its parameters as described in the documentation.
An operation task must always be placed inside a group task. A group can execute multiple operations in a fixed order.
Chaining Operations and Groups
Multiple operations in one group:
<webpdf:group>
<webpdf:operation>...</webpdf:operation>
<webpdf:operation>...</webpdf:operation>
</webpdf:group>
Multiple groups in sequence:
<webpdf:webpdf>
<webpdf:group>...</webpdf:group>
<webpdf:group>...</webpdf:group>
</webpdf:webpdf>
Using Input and Output Variables
For more complex workflows, intermediate results can be stored in variables and reused later:
OUTPUT: stores the result of a groupINPUT: explicitly sets a different source document for the next group
This makes it possible to build more robust branching and merging workflows, for example with merge.