1
我有一些奇怪的事情正在使用PdfClown 0.1.2進行文本編寫。字體訪問PdfClown空指針
PrimitiveComposer composer = new PrimitiveComposer(page);
BlockComposer blockComposer = new BlockComposer(composer);
addHeader(document, composer, blockComposer);
addOfferData(document, offer, blockComposer, composer);
composer.flush();
private void addHeader(Document document, PrimitiveComposer composer, BlockComposer blockComposer) {
Rectangle2D frame = new Rectangle2D.Double(36, 0, 842, 36);
blockComposer.begin(frame, XAlignmentEnum.Left, YAlignmentEnum.Middle);
composer.setFont(getSimpleFont(document), 12);
blockComposer.showText(getHeader());
blockComposer.end();
}
private void addOfferData(Document document, Offer offer, BlockComposer blockComposer, PrimitiveComposer composer) {
blockComposer.begin(new Rectangle2D.Double(456, 156, 340, 250), XAlignmentEnum.Left, YAlignmentEnum.Top);
composer.setFont(getSimpleFont(document), 12);
blockComposer.showText("Text");
blockComposer.showBreak();
blockComposer.end();
}
private StandardType1Font getSimpleFont(Document document) {
return new StandardType1Font(document, StandardType1Font.FamilyEnum.Times, false, false);
}
在JUnit測試中一切正常,但在生產模式下,它在第二個方法showText上失敗。
java.lang.NullPointerException
at org.pdfclown.documents.contents.fonts.Font.encode(Font.java:423)
at org.pdfclown.documents.contents.composition.PrimitiveComposer.showText(PrimitiveComposer.java:1058)
at org.pdfclown.documents.contents.composition.PrimitiveComposer.showText(PrimitiveComposer.java:960)
at org.pdfclown.documents.contents.composition.BlockComposer.showText(BlockComposer.java:553)
at org.pdfclown.documents.contents.composition.BlockComposer.showText(BlockComposer.java:463)
at com.example.service.PdfGenerationService.addOfferData(PdfGenerationService.java:121)
是否需要以某種方式處理字體,或者可能會導致此問題?在第一種方法中,文本正在呈現什麼是最奇怪的。
是的,問題是特殊字符。我使用的是外部字體,而不是SimpleFont。 – sandris
您可能想要通知pdfclown作者......在這種情況下出現'NullPointerException'是不合適的,至少在我看來是這樣。 – mkl
@mkl根據您的明智建議,PDF Clown 0.1.2.1的最新提交包含一個可自定義的回退機制,用於正確處理缺失的字符(以下是公告:https://twitter.com/PDFClown/status/587798095615885312)。 –