Check out our XSL-FO resource center to learn all about the XSL-FO specification, how to create stylesheets, and download XSL-FO samples.
We have several partners that offer training and consultancy for XSL-FO, see here.
Antenna House and our partners offer XSL-FO introduction books and reference guides, see below:
Yes! Mastering Antenna House XSL Formatter Extensions is our first edition guide that is filled with many examples of advanced document formatting that can be achieved using our XSL-FO extensions. Download it for free!
Yes. We have an introduction guide for CSS styling for print. You can download it for free as a PDF or HTML+CSS zip file.
You can also purchase a printed copy of the book here.
CSS formatting is suitable for relatively simple structures and simple layouts (eg HTML typesetting, form typesetting, etc.).
XSL-FO formatting is recommended for structured documents with complicated layouts such as user manuals or technical documentation.
Check out our webinar that talks about both formatting methods and see examples of different print publications that were produced with Formatter using XSL-FO and CSS stylesheets. We also have a comparison guide for XSL-FO and CSS that you can download to see what the differences are between each formatting technology.
Contact us if you're still not sure and we'll help you out!
CSS is a language for specifying HTML styles, while XSL stylesheet is a language for converting XML formatted documents into XSL-FO, XHTML, and a variety of other documents.
Formatter formats XSL-FO documents and (X) HTML documents ((X) HTML + CSS). Therefore, if an XML document and an XSL stylesheet are inputted to Formatter, it will utilize an external XSLT processor to convert them to XSL-FO or HTML before formatting.
Please refer to the manual for details about Formatter's typesetting flow.
MathML is an abbreviation for Mathematical Markup Language, which is a markup language for expressing mathematical descriptions such as mathematical expressions in XML format. The formula "x + 2" is expressed as follows.
<math> <mi> x </ mi> <mo> + </ mo> <mn> 2 </ mn> </ math>
<mi> is a distinguished name such as a variable, <mo> is an operator such as +,-, and <mn> is a numerical value.
There are two ways to format MathML:
Both formatting methods must meet the conditions for determining whether it is MathML. Judgment conditions for writing directly differ depending on FO, HTML, and XHTML. The judgment condition of the MathML file is that the MathML namespace (xmlns = "http://www.w3.org/1998/Math/MathML") is specified in the math element. You can output MathML to PDF if it is formatted correctly.
We do not guarantee the result of formatting the AreaTree, but we have released it on GitHub as a resource for those who are currently using or are considering using the area tree.
The operation and creation method of the input files varies from customer to customer. Formatter introduces case studies (originally in Japanese, but can be translated in the browser).
Contact us with details about your project and we'll help you out!
Yes, you can format DITA files to PDF using Formatter. You can find out more information about our DITA solution here.
There is a case of Nakanishi Printing as a result of JATS of Formatter. There is a track record of using Formatter for formatting JATS, but it is not open to the public.
→ Japanese full-text XML (JATS) formatting using Formatter (Nakanishi Printing Co., Ltd.)
We are a member of the "Academic Information XML Promotion Council XSPA" and have opened an XSLT style sheet to popularize JATS. It is published as a source.
Formatter is used in production for a wide range of applications in industries worldwide including auto, aerospace and defense, healthcare, government, manufacturing, telecom, financial, publishing and transportation.
Check out some of our use cases and extensive examples for what you can do with Formatter.
COM registration is required when launching Formatter using the COM interface. It is not necessary when using with other interfaces.
Adding PATH is to add the Formatter installation PATH to the system environment variable PATH. Whether it is necessary or not depends on the operation of the Formatter version you are using, so check it if necessary depending on the operation mode. Just adding it to the environment variable PATH does not affect other applications, so normally you can install it with the check box checked.
When you install Formatter on Windows 7, the "Program Compatibility Assistant" dialog window may appear, but the installation of Formatter has been completed successfully. Click on "This program installed successfully" or the "Cancel" button to close the dialog.
Formatter supports Windows, Linux, and MAC. Specific OS details can be found here.
Yes it does. The Microsoft Visual C ++ 2015 runtime library is required for Formatter V7 Windows version to work. Therefore, if you do not have Microsoft Visual C ++ 2015 when you install the product, you will install the redistributable package, but if it is already installed in the runtime environment, use it.
As for the question "Microsoft Visual C ++ 2015-2019 Redistributable", it seems that Microsoft has integrated the redistributable package 2015 2017 2019 from 2019 into one package.
→ Download the latest supported Visual C ++
If you have installed the packages in the "Visual Studio 2015, 2017 and 2019" category here, it will look like Microsoft Visual C ++ 2015-2019 Redistributable instead of Microsoft Visual C ++ 2015. Formatter V7.0 Windows version also works with this package.
The 32-bit version of Formatter can be installed in a 64-bit OS environment, so if you want to compile your application as 32-bit, you have the option of using the 32-bit version of Formatter as well. If you are using the Formatter 64-bit version, please check the operation with the evaluation version in advance .
When operating the Formatter 32-bit version in a 64-bit OS environment, there are the following precautions when using each interface.
The number of licenses of non-virtualized environment is based on the number of CPU/processors. When using with multiple CPUs, licenses for the number of CPUs are required. Both single-core CPUs and dual-core CPUs count the number of CPUs as one. More details can be found on our Licensing page.
When running Formatter in a virtual environment (such as VMware or Hyper-V), there are no functional restrictions as long as the virtual environment guarantees the same operation as in the real environment.
Yes. Formatter publishes a Docker image for Linux 64-bit version in the command line interface on Docker Hub ( Docker image of Formatter V7.0 ). If you are already using the corresponding version of Linux 64-bit, you can run the Docker image with that license file. If you would like to evaluate it, please contact us.
For more information on Docker images and how to run them, see the Docker image page.
There is no problem if the OS on the cloud service is guaranteed to work with Formatter. For example, we have been operating the cloud-based digital publication production Web service CAS-UB , which uses Formatter internally, since 2011.
Yes, Formatter is designed to be a multithreaded application.
The Java interface of Formatter is built using Java SE 6 for the Macintosh version and J2SE5.0 for the rest.
Yes, Formatter will continue to work even after the maintenance period expires. However, if you try to upgrade to a later version or maintenance release (MR) after the maintenance expires, it will operate as an evaluation version. If this happens, reinstall the version released before the end of the maintenance period.
You can find the full list of technical notes in formatting differences between versions here.
You can upgrade to a later version for free if you have an active maintenance contract. If you do not have an active maintenance contract, here are your options.
For the Windows version of Formatter, select [Help]-[About Formatter Vx.x] from the GUI menu bar to display the license and version information in the dialog window. In other cases, version information is displayed by executing it with the -v parameter specified in the command line interface. The version notation is
"Formatter Vx.x R1 ..." for the first edition,
"Formatter Vx.x MR1 ..." for the revised first edition, and
"Formatter Vx.x MR2 ..." for the first edition. The second revised edition
is shown.
For example, in the case of Formatter V7.0 revised 1st edition, it will display as: Formatter V7.0 MR1 for Windows (x64) : 7.0.2.44154 (2020-04-06T11:51+09)
The ECCN (Export Controlled Item Classification Number ) of AH Formatter is "EAR99".
The embedded PDF version must be less than or equal to the output PDF version.
For the permitted combinations with PDF / X etc. , refer to the table in "PDF Output"-"Embedding PDF" in the manual .
This result depends on your PDF viewer because the line feed code is not inserted in the data. If you are using Adobe Acrobat or Adobe Reader and you output it as " tagged PDF " from AH Formatter, the text block can be copied and pasted as continuous text.
Yes. In addition to PDF / X, you can also output PDF / A, PDF / UA, and tagged PDF. For more details, see "PDF output" in the manual .
Due to the PDF / X specifications, if the URL of the ICC profile is specified for the output intent, the default value of the OutputConditionIdentifier will be "Custom". Before the 6th revision of Formatter V6.6, the output condition identifier inferred from the specified ICC profile was output, but originally the output condition identifier must be specified by the user, and Formatter V6.6 It has been corrected in the 7th revised edition. Specify the output condition identifier after #OutputConditionIdentifier = in the src property of fo: color-profile as shown in the following example.
<fo: declarations>
<fo: color-profile
src = "url ('file: /// C: / WINDOWS / system32 / spool / drivers / color / JapanColor2001Coated.icc # OutputConditionIdentifier = JC200103')"
color-profile-name = "# CMYK"
/>
</ fo: declarations>
Specify PscriptPassThrough = "false" in the option settings file.
→ PscriptPassThrough (manual)
CMYK and gray images are outputted as they are, but all RGB images are converted to CMYK images and output. This is because PDF / X-1a does not support RGB. It also does not support transparent images etc. For more details on the features of PDF / X, refer to "PDF Output"-"PDF / X" in the manual.
PDF does not have the concept of resolution.
→ What is PDF resolution? (1) , (2)
You can create text fields, button fields, selection fields, and digital signature fields by using Formatter's original extension. For more information, see "XSL / CSS Extensions"-"Form Fields" in the manual.
Yes. We offer various security settings such as password settings and restrictions for printing and editing. If you need to set a password for opening the document, the user-password in the option setting file is applicable.
Yes. You can limit the printing of PDFs by specifying "none" for printing-allowed in the option setting file. If you want to restrict printing, you need to specify the owner password with owner-password. In the graphical user interface (GUI), it can be set in the "PDF Option Setting" dialog- "Security" tab.
Yes. Set font embedding when producing a PDF. By default, AH Formatter embeds all embeddable fonts except the 14 basic European fonts. Note that fonts that are not allowed to be embedded cannot be embedded in PDF. For details, see "PDF output"-"Font embedding" in the manual.
In most cases, only the characters used in the document will be embedded (subset embedding). But the "embed-subset-font-percentage" option configuration file allows you to use subset fonts when necessary. It is also possible to embed all fonts, including unused characters, with full set embedding.
Specify "0" for "embed-subset-font-percentage" in the option settings file. However, please note that the file size will increase as more fonts are embedded in the full set.
TrueType and OpenType fonts have string data called "name table". Information such as the font family name and font copyright is defined here. For TimesNewRoman, the "Font Family name" is "Times New Roman", but "TimesNewRomanPSMT" is defined as the "Postscript name". In Adobe Acrobat, select "File"-"Properties"-"Font" to display the Postscript font name. Therefore, the same font may display different names like this.
Yes. You need to set:
font-family = "Arial,'MS Mincho'
The font specified in font-family has priority at the beginning. If MS Mincho is listed first, Arial is not used because MS Mincho can also display European languages. If Arial comes first, the European language is Arial, and Japanese cannot be displayed by Arial, so MS Mincho is used.
In Formatter V6.4 MR2 , the processing when the option setting font-selection-mode = "6" (default value) was reviewed. Before the specification change, "when font-selection-strategy =" character-by-character ", the first font with glyphs is adopted.", But after the specification change, "the first font with glyphs is adopted." If there is a glyph, the font will be adopted even if it is not font-selection-strategy = "character-by-character". Therefore, if multiple fonts are listed in font-family, a different font may be selected. If you specify font-selection-mode = "5" in the option setting file, the same font as before will be applied.
Specify the location where the font is installed in the font construction file (font-config.xml).
In Windows 10, fonts with general user privileges are installed in C: \ Users \ [user name] \ AppData \ Local \ Microsoft \ Windows \ Fonts.
AH Formatter V7.0 refers to that folder by default, but if you are editing a font construction file or are using a version earlier than Formatter V7.0, it will not be referenced, so go to the font construction file. Add the corresponding folder as follows so that it can be referenced.
<font-folder path = "C: \ Users \ [username] \ AppData \ Local \ Microsoft \ Windows \ Fonts" />
In Formatter V7.0, you can refer to it by adding:
<font-folder path = "@@ USERWINFONTS @@" />
Yes. More details on the fonts supported by Formatter can be found in the online manual.
Adobe fonts are supported in Formatter V7.0. They can be used on Windows or Macintosh. For more information on using Adobe Fonts, see "Fonts"-"Adobe Fonts" in the manual.
Yes. You can change the font size of a particular font with font-size-adjust in the font configuration file. It is also possible to change the base line of a specific font using baseline-adjust.
This question was for a document that had a mixture of English and Japanese. By specifying font-family = "European font, Japanese font", the European font is applied to English and the Japanese font is applied to Japanese. However, since the characters in European fonts look smaller than Japanese fonts, there was a request to increase the font size only in European languages.
When it comes to "adjusting the baseline of a specific font ", it seems better to specify it in the " font configuration file " rather than changing it with baseline-related attributes in the FO .
For example, if you specify baseline-adjust = "0.1", it will be adjusted to the position where this value is added to the baseline specified in the FO. The specification can also be a% value, such as "10%".
Example:
<font-folder path = "font folder">
<font-entry file = "font file name" baseline-adjust = "-0.05" />
</ font-folder>
With the implementation of axf: font-feature-settings in Formatter V6.5, axf: alt-glyph has been deprecated. If you specified axf: alt-glyph = "1" in the previous version, the alt feature of the GSUB table of the font will be used, so specify as follows.
<fo: inline axf: font-feature-settings = "'aalt' 1"> Kuzu </ fo: inline>
Specify "fontfamily" instead of "font-family". Please note that the attribute name related to the MathML font specification in the option setting file does not include a "-" (hyphen) like this "fontfamily".
→ "Option setting file"-"MathML setting" (manual)
See "Technical Resources"-"URI" in the manual.
"#" is a fragment delimiter. In file C:/dir/foo#bar.png, the resource actually accessed is file C:/dir/foo. If you want to access the resource foo # bar.png, use url ('foo% 23bar.png').
The above is excerpted from "Technical Materials"-"URI" (manual) .
The SVG "width =" 497.724 "height =" 335.787 "" has no units. In this case, the unit is px. Since it is displayed in pt (1/72 inch) in AreaTree, it will be the same value if the units are combined (example: 497.724 / 96 * 72 = 373.293pt).
When Formatter has an image displayed in EPS, it outputs the image. If the EPS image displayed has a low resolution, so the result will be as reported. If the display image does not exist, replace it with a replacement image.
It is possible to specify Adobe Distiller or Ghostscript as an external processor in the option setting file and convert EPS to PDF for output. For details, see "Option setting file"-"PDF output settings" in the manual.
If you specify the page size, margin, etc. in px units, Formatter allows you to specify the conversion rate in px units in the option settings. The initial value is 96dpi, and it is usually calculated based on this value.
→ pxpi attribute of option setting file
If the size is not specified in the background image or embedded image, follow the specification of axf: background-image-resolution or axf: image-resolution. This extended attribute behaves differently by default in XSL and CSS.
Yes. Various barcodes can be generated by using the Barcode Generator Option which is an option for Formatter.
Yes. For XSL-FO, specify the size with content-height or content-width in the fo: external-graphic element. For HTML, specify height and width in the img element. For CSS, specify height or width in the img element. However, please note that if you change the aspect ratio or make the image too small, it may not be readable.
Here is an example of introducing the QR code for Barcode Generator Option for Formatter: Used as a housing information magazine, property leaflet, contract creation tool (Koryo Sumihan Co., Ltd.)
You can find an XSL-FO sample for Barcode Generator here.
Formatter V7.0 implements Breaking Paragraphs into Lines (BPIL) as an algorithm for line division processing in European typesetting. The conditions to which BPIL are applied include:
-The block in which axf: line-break = "bpil" is specified
-The algorithm is not specified in axf: line-break and the language is specified in bpil in the option configuration file. It is a block.
In axf: line-break, you can specify "line" that does not apply BPIL or "bpil" that divides lines by BPIL, but if neither is specified, it follows the specification of bpil in the option setting file. The default value of bpil in the option settings file is "Latn Grek Cyrl", so if a language (English, Greek, Russian, etc.) that is typical of Latin, Greek, and Cyrillic is specified, BPIL will be used.
However, BPIL does not apply to blocks that contain floats or require BIDI processing so Formatter V7.0 will display a warning message in these cases. For cases where BPIL does not apply, refer to Line Breaking in the manual.
If you specify axf: line-break = "line" or specify bpil = "" in the option setting file to typeset, BPIL is not applied and no warning message is displayed.
You can prepare an exception dictionary and register words that are not what you want with standard hyphenation processing. For details, see Hyphenation-Exception Dictionary in the manual.
From Formatter V7.0, you can register split-prohibited or unbreakable words in the option setting file. For details, see Option setting file - Formatting settings in the manual.
Yes. Formatter provides extensions that can express tab structures. See the XSL/CSS Extensions-Tabs in the manual and an XSL-FO sample for Tabs (<axf: tab>, axf: tab- *) in our XSL-FO Samples Collection.
A complete list of supported languages can be found in the manual under About Formatter - Supported Scripts and Languages.
There are no particular restrictions, but for documents that consume a lot of memory, the memory capacity of the machine is required accordingly.
It is not possible to hide the error message output by specifying the error level, but it is possible to hide the display of a specific error code. Formatter provides no-disp-warnings in the option setting file. You can hide the error message by specifying the error code you want to suppress (the error code and message are displayed together). For more details, see "no-disp-warnings" in the manual.
As the message says, "Out of memory" is probably due to insufficient memory. For example, it may occur when the required memory cannot be secured due to typesetting of a large-scale document. This depends on the contents of the document, machine specifications, etc., so we cannot answer how much memory is needed. In addition, the characteristics of documents that may run out of memory are also described in "Technical Documents"-"Typesetting of Large-Scale Documents" in the manual. The "2-pass typesetting" described here is an optional setting to solve it.
The error message displayed when overflow = "error-if-overflow" is specified has the following format, for example:
14850 (3A02): Area overflow: fo: block (inline 31.969pt) Page 1 (1).
14850 (3A02): Area overflow: fo: block-container (block 23.811pt) Page 1 (1).
There are two types of overflow judgment. "(inline XXXpt)" means inline direction = line traveling direction (overflow to the right (width) in general horizontal writing), "(block XXXpt)" means block direction = paragraph. The direction of travel (overflow to the downward direction (height) in the case of general horizontal writing). The numbers are the overflow dimensions for each area.
Unfortunately, this is a feature unique to Acrobat (not a feature provided in the PDF specification) and cannot be achieved with products other than Acrobat.
No, JavaScript is not supported.
XSL-FO users can use change-bar-position
on fo:change-bar-begin
.
This can also be achieved with the axf: revision-bar-position / CSS -ah-revision-bar-position property of the original extension.
Specify start-indent = "from-parent (start-indent) + 2em".
For reference, "5.9.10.1 inherit" in Extensible Stylesheet Language (XSL) Version 1.1 cites ""inherit " is not allowed as an expression mixed with operations. The same functionality is provided by the from-parent() function, which can be mixed with operations."
The # x0A code is treated as a normal character code. It is then converted to U + 0020 (space) by the linefeed-treatment property (initial value treat-as-space). If you want to perform line feed processing with # x0A linefeed-treatment="preserve"
, specify fo: block. Please note that linefeed-treatment is an inherited property.
The CSS stylesheet had the following specifications:
html {
font-size: 9pt;
line-height: 15pt;
-ah-line-stacking-strategy: font-height;
}
With this -ah-line-stacking-strategy: font-height, the line height is fixed, so even if you have a large image, the line height will not increase. Therefore, a large image that extends beyond the line height will overlap the text.
<img alt = "..." src = "../20070117.PNG" width = "507" height = "296" />
-Ah-line-stacking-strategy: font-height; cannot be used for blocks that contain inline images.
In Internet Explorer and Firefox, if "Print background color and image" is turned off in "Page Setup", the background color and background image will not appear in the print preview display.
Make sure you haven't specified a width for the paragraph or table. For example, if width = "1000px" is specified, the default width of Formatter is 96dpi (dot per inch), so the width is about 10.4 inches (26.46cm), which extends beyond the width of A4.
There is a way to specify the page break position such as page-break-before / page-break-after. For example, "page-break-before: right;" forces a page break so that the next page is on the right. If the previous chapter ends with an odd (right) page, a blank page will be inserted between the chapters so that the next chapter will be an odd (right) page.
If you have @ top-left and neither @ top-center nor @ top-right, its width will fill the width of the page area unless you specify width. Therefore, right justification is closer to the right side of the page. If you also specify @ top-center and @ top-right, they will be shared with their width. If you specify width in the margin box, the contents will span across the specified width.
Please specify "-ah-column-fill: auto;".
CSS3 specification: CSS3 Multi-column layout: column-fill
You can repeat it by using thead element in the table header. For example, in the case of the following table
<table>
<tbody>
<tr>
<th class = "TableWidth1"> Address </ th>
<th class = "TableWidth2"> Name </ th>
</ tr>
<tr>
<td>
<p> Aiueo </ p>
</ td>
:
Do the following:
<table>
<thead>
<tr>
<th class = "TableWidth1"> Address </ th>
<th class = "TableWidth2"> Name </ th>
</ tr>
</ header>
<tbody>
<tr>
<td>
<p> Aiueo </ p>
</ td>
:
Formatter line break position candidates are determined by processing "Line Breaking Properties" from the UAX # 14: Unicode Line Breaking Algorithm. In this line splitting rule, consecutive numbers cannot be split (line feed) in the middle. In CSS, the default value of the word-wrap property is "normal", so text overflows from space when line breaks are not possible. Specify "break-word" in the word-wrap property.
CSS has a property called box-sizing. It specifies whether to include the border width and padding value when width and height are specified for the block element. The default value is "box-sizing: content-box;", which means that the value specified by width is the width of the content and does not include the border width or padding value. If you specify "box-sizing: border-box;", the width will include the border width and padding value.
When converting HTML to PDF with Formatter, the link looks like this:
In CSS, you can define the treatment of the tab character (U + 0009) with a property called tab-size. The initial value is 8. If you specify a numerical value, it will be a multiple of half-width space (U + 0020). It is also possible to specify the length with a unit. If you specify tab-size in HTML other than the pre element, you must also specify "white-space: pre-wrap;".
Formatter implements advanced float placement features with float extensions. This makes it possible to arrange columns across columns. For details, see the "Float extension" in the manual and the "Multi-column float examples (<fo:float>, axf:float-reference, axf:float-x, axf:float-y)" on our XSL-FO Samples page.
Lines are split word by word. The ICU (International Components for Unicode) library determines the line break position. For words that still have line breaks, you can set the line break prohibition by registering the word in the exception dictionary of Formatter. For details, see "Hyphenation"-"Exception Dictionary" in the manual.
The description of the src property value follows <uri-specification> (*). If the property value string contains spaces or &, it must be percent-encoded (URL-encoded). If you specify an inquiry, please write src = "# OutputConditionIdentifier = Black% 20% 26% 20White".
For details on <uri-specification>, see "Technical data"-"URI" in the manual .
The part of this error message after "In security settings ..." is the message output from the XSLT processor, not the Formatter. If you are using the Windows version, MSXML will be selected unless specified by the option settings. This error message is outputted during the XSLT conversion in MSXML6. Security-related changes have been made in MSXML6, and it seems that this is due to the effects (for MSXML6, refer to MSXML Security Overview).
If you encounter this error, you may be able to resolve it by changing the MSXML properties. Formatter allows you to specify MSXML properties in the options configuration file. If you want to allow the script code to run, <msxml name = "AllowXsltScript" value = "true" />
will help.
For more details, see "Option setting file"-"XSLT setting" in the manual.
Awards
Contact
Privacy Policy | © 2025 Antenna House, Inc.