Antenna House Formatter version |
Docker tags |
‘ latest ’ |
Major version |
Major + Point |
Major + Point + Maintenance |
Build |
V7.4 R1 |
latest |
7 |
7.4 |
7.4.0 |
7.4.1.63121 |
V7.4 MR1 |
7.4.1 |
7.4.x.xxxxx |
Labels
Use “docker inspect
” to obtain the version information for the Antenna House Formatter V7.4 in the Docker image:
$ docker inspect --format='' antennahouse/ahfcmd74:7
AHFCmd : Antenna House Formatter V7.4 R1 Linux : 7.4.1.63121 (2023-12-20T11:05+09)
Pull the Docker image
Log in to Docker before pulling the Docker image.
It is necessary only to pull the image using one of its tags. If the image is pulled as ‘antennahouse/ahfcmd74'
, then it possible for Docker to automatically pull a newer version, when that becomes available, to obtain new bug fixes and other improvements. However, because the image could change without notice, this is less stable than pulling the image tagged with its maintenance and build numbers.
Sample “docker pull
” command and output:
$ docker pull antennahouse/ahfcmd74:7
7: Pulling from docker.io/antennahouse/ahfcmd74
Digest: sha256:4f808a78aa14c9a3db622075ebc8243fc73f0aa2f7034fcc45c0bcaac46c893b
Status: Downloaded newer image for antennahouse/ahfcmd74:7
The image IDs are shown as examples only. The IDs will be different for every release of the Docker image.
License
The Docker image requires an ‘AHFormatter.lic
’ license file to be able to run. The Docker container can mount just the license file, or it can mount an ‘etc
’ directory that can also include, for example, a custom ‘font-config.xml
’ that may refer to custom font files. The custom fonts can be included in or under the mounted ‘etc
’ directory or they could be in a separate directory that is mounted in a different location.
The examples below show only how to mount a license file. Other aspects of the Docker command line are covered in other sections.
Mount ‘AHFormatter.lic
’
Mount just an ‘AHFormatter.lic
’ file in the current directory read-only (with ‘:ro
’) as ‘/AHFormatter/etc/AHFormatter.lic
’ in the Docker container:
-
Bash:
docker run -v `pwd`/AHFormatter.lic:/AHFormatter/etc/AHFormatter.lic:ro ...
-
Command Prompt:
docker run -v %cd%\AHFormatter.lic:/AHFormatter/etc/AHFormatter.lic:ro ...
-
Power Shell:
docker run -v $PWD/AHFormatter.lic:/AHFormatter/etc/AHFormatter.lic:ro ...

Mount ‘etc
’ directory
Mount an entire ‘etc
’ subdirectory of the current directory, possibly with a custom ‘font-config.xml
’ and custom fonts that are in a subdirectory of the ‘etc
’ directory:
-
Bash:
docker run -v `pwd`/etc:/AHFormatter/etc:ro ...
-
Command Prompt:
docker run -v %cd%\etc:/AHFormatter/etc:ro ...
-
Power Shell:
docker run -v $PWD/etc:/AHFormatter/etc:ro ...

Other files in the ‘etc
’ directory are omitted from the graphic only for clarity. The mounted ‘etc
’ replaces the entire ‘etc
’ directory in the Docker container. The mounted ‘etc
’ must contain all of the files and subdirectories that the ‘AHFCmd
’ in the Docker container will use, including, for example, the ‘hyphenation
’ subdirectory that contains hyphenation dictionaries.
Additional font directories can be mounted at other locations in the Docker container by using additional ‘-v
’ parameters on the Docker command line. The ‘font-config.xml
’ in the mounted ‘etc
’ must refer to font files in their locations in the Docker container, not in their locations on the host computer.
Antenna House Formatter command-line parameters
All of the Antenna House Formatter V7.4 command line parameters may be used. The parameters after the image name on the Docker command line – after ‘antennahouse/ahfcmd74:7
’ in the following examples – are used as command-line parameters for Antenna House Formatter V7.4.
Command-line parameter arguments that refer to files must refer to locations on the file system of the Docker container, not to locations on the host computer. Access to external resources through network access – for example, to an image or a font file retrieved using HTTP – is dependent on the Docker container being configured with network access.
Examples
These examples omit providing an Antenna House Formatter license file to the Docker container. See the preceding section for how to provide the license file.
Input with no local dependencies
When the input is a single file with no dependencies on any other local file – that is, the input does not refer to any external images, stylesheets, or other files on the file system – then the input can be piped into the container and the output piped to a file on the host computer.
-
Bash:
docker run -i --rm antennahouse/ahfcmd74:7 -d @STDIN -o @STDOUT \
< hello-world.fo > hello-world.pdf
-
Command Prompt:
docker run -i --rm antennahouse/ahfcmd74:7 -d @STDIN -o @STDOUT ^
< hello-world.fo > hello-world.pdf
-
Power Shell:
Redirecting the PDF output from Docker to a file on the host file system does not work in Power Shell. The redirected PDF data is corrupted because Power Shell filters the data to normalize both the encoding and ends of lines.
Access to other resources through network access – for example, to an image or a font file retrieved using HTTP – depends on the network access that is configured for the Docker container.
Input with local dependencies
When the input has dependencies on external files on the host file system – for example, the input is an XSL-FO file that uses <fo:external-graphic> – then one or more directories can be mounted on the Docker container.
Read-only directory to STDOUT
When the input and all of its local dependencies are under one directory and all file references are relative references, then the directory containing all of the files can be mounted on the container using the ‘-v
’ option. The reference to the input file on the “‘docker run
’” command line is to its location on the file system of the Docker container, not to its location on the host computer.
The directory containing the input files can be mounted read-only by adding ‘:ro
’ to the ‘-v
’ option value.
When the output is a single file, it can be piped to STDOUT.
-
Bash:
docker run -i --rm -v `pwd`/in:/in:ro antennahouse/ahfcmd74:7 \
-d /in/hello-world.fo -o @STDOUT > hello-world.pdf
-
Command Prompt:
docker run -i --rm -v %cd%\in:/in:ro antennahouse/ahfcmd74:7 ^
-d /in/hello-world.fo -o @STDOUT > hello-world.pdf
Output to host computer directory
When it is not convenient to direct the Docker output to a file – for example, when the output is multiple PDF volumes or multiple SVG files – the output can be written to a directory on the host computer that is mounted on the Docker container.
-
Bash:
docker run --rm -v `pwd`/in:/in:ro -v /tmp:/out antennahouse/ahfcmd74:7 \
-d /in/hello-world.fo -o /out/hello-world.pdf
-
Command Prompt:
docker run --rm -v %cd%\in:/in:ro -v %cd%\out:/out antennahouse/ahfcmd74:7 ^
-d /in/hello-world.fo -o /out/hello-world.pdf
-
Power Shell:
docker run --rm -v $PWD/in:/in:ro -v $PWD/out:/out antennahouse/ahfcmd74:7 `
-d /in/hello-world.fo -o /out/hello-world.pdf
Note that, for security reasons, the Antenna House Formatter V7.4 in the Docker container executes as an ‘ahf
’ user with UID 9999
and GID 9999
. If the permissions on the host computer do not allow a user with UID 9999
and GID 9999
to write to the output directory, the Antenna House Formatter V7.4 in the Docker container will fail to write any output.
Security
Docker requires elevated privileges to run. Ensure that you take adequate precautions to minimize the risks inherent in running a program with elevated privileges.
To reduce potential security issues from running as ‘root
’, the antennahouse/ahfcmd74 image runs Antenna House Formatter V7.4 as a user with UID 9999
. On Linux, it is necessary to ensure that a user with UID 9999
can write to any mounted output volume.