XMLWorker で非常に単純な CSS を使用して、HTML を PDF にレンダリングします。CSSは次のとおりです。
body { font-family: "Times New Roman;" }
p.testoJustify {
text-align:justify;
text-justify:inter-word;
}
問題は「.testoJustify」セレクタにあります。このセレクターを使用すると、結果の PDF にはテキストが両端揃えされませんが、セレクターがないため、p {... } のみで正常に動作します!
Java コードは次のとおりです。
FontFactory.registerDirectories();
XMLWorkerFontProvider fontProvider = new XMLWorkerFontProvider();
CssAppliers cssAppliers = new CssAppliersImpl(fontProvider);
HtmlPipelineContext htmlContext = new HtmlPipelineContext(cssAppliers);
htmlContext.setTagFactory(Tags.getHtmlTagProcessorFactory());
CSSResolver cssResolver =XMLWorkerHelper.getInstance().getDefaultCssResolver(true);
cssResolver.addCss(Context.pdfCss, true);
Pipeline<?> pipeline = new CssResolverPipeline(cssResolver,
new HtmlPipeline(htmlContext,
new PdfWriterPipeline(pdfDocument, pdfWriter)));
これは、CSS が修正されて HTML ページに適用されていることを示す JSFiddle へのリンクですが、XMLWorker には適用されていません。