Avoiding #### in Apache FOP When Rendering Chinese Characters
Apache FOP, a popular tool for generating PDF documents, often encounters an issue where Chinese characters are displayed as "####" instead of their intended glyphs. To rectify this problem, three critical steps must be followed:
Step 1: Specify Font-Family in the FO File
Assign the desired font using the font-family property within the FO file. In the example provided, the SimSun font is utilized:
<code class="xml"><fo:block font-family="SimSun">...</fo:block></code>
Step 2: Configure Font Mapping in FOP's Configuration File
In FOP's configuration file (usually fop.xconf), map the font family to the corresponding font file:
<code class="xml"><directory>/Users/furini/Library/Fonts</directory></code>
Or for a specific font mapping:
<code class="xml"><font embed-url="/Users/furini/Library/Fonts/SimSun.ttf"> <font-triplet name="SimSun" style="normal" weight="normal"/> </font></code>
Step 3: Point FOP to the Configuration File
When calling FOP from the command line, use the -c option:
$ fop -c /path/to/fop.xconf input.fo input.pdf
From Java code:
<code class="java">fopFactory.setUserConfig(new File("/path/to/fop.xconf"));</code>
By implementing these steps, FOP will render Chinese characters correctly in the generated PDFs. However, if the font file specified in the configuration cannot be found, an error message will be displayed, and the font configuration should be verified.
The above is the detailed content of How to Avoid \'\' When Rendering Chinese Characters in Apache FOP?. For more information, please follow other related articles on the PHP Chinese website!