- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在使用 PdfClown 0.1.2 进行文本编写时遇到了一些奇怪的情况。
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)
字体是否需要以不同的方式处理,或者什么可能导致此问题?在第一个方法中,文本被渲染,这是最奇怪的。
最佳答案
NullPointerException
发生在 Font.encode(Font.java:423)
处。这个方法是:
public final byte[] encode(
String text
)
{
ByteArrayOutputStream encodedStream = new ByteArrayOutputStream();
try
{
for(int index = 0, length = text.length(); index < length; index++)
{
int textCode = text.charAt(index);
byte[] charCode = codes.getKey(textCode).data;
encodedStream.write(charCode);
usedCodes.add(textCode);
}
encodedStream.close();
}
catch(IOException e)
{throw new RuntimeException(e);}
return encodedStream.toByteArray();
}
(Font.java revision 85, lines 413..433)
第 423 行是
byte[] charCode = codes.getKey(textCode).data;
因此,codes
为 null
或 codes.getKey(textCode)
为 null。
前者(codes
为 null
)对于 StandardType1Font
来说是相当难以置信的。
后者(codes.getKey(textCode)
为 null
)意味着要绘制的文本包含当前编码中不存在的字符。
假设在生产中您不调用
blockComposer.showText("Text");
但如果使用一些不同的生产文本,您应该检查该文本中的特殊字符(可能不存在于标准 PDF 编码中)。
如果这个假设是错误的,并且您确实在生产中只显示“文本”
,则需要对生产环境<->开发环境的差异进行更多分析。
关于java - PdfClown 字体访问上的空指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21998183/
使用 PdfClown 打印 pdf 时,打印超出页面,而 PdfClown 没有创建新页面,如何解决此问题? 代码如下,它将文本打印到 pdf 页面上,当打印开始超出页面底部时,应自动添加另一个 p
我正在使用 PDFClown 来分析 PDF 文档。在许多文档中,PDFClown 中的某些字符似乎具有不同的高度,即使它们显然具有相同的高度。有解决办法吗? 这是代码: while(_lev
我是第一次尝试使用 PDFClown。正如自述文件中所写,我尝试通过以下步骤导入 PDFClown 项目在我的 Java 工作区 Eclipse IDE 中1) 文件 => 导入... => 将现有项
我在使用 PdfClown 0.1.2 进行文本编写时遇到了一些奇怪的情况。 PrimitiveComposer composer = new PrimitiveComposer(page);
我正在尝试在某个 x,y 位置贴一张便签。为此,我使用 .net 中的 pdfclown 注释类。以下是可用的内容。 using files = org.pdfclown.files;
我最近将代码从 PDFClown v0.1.2 切换到 v0.1.2.1。我认为我现在已经遇到了一些差异(更改了 TextMarkup() 的构造函数并从 CallOutNote 切换到 Static
几周前我开始使用 PDFClown。我的目的是多字突出显示,主要是在报纸上。从 org.pdfclown.samples.cli.TextHighlightSample 示例开始,我成功提取了多单词位
引用Build text callout with PDF Clown - 是否可以更改标注注释中文本的字体颜色? 我还没有找到合适的方法,有人可以给我提示吗? 最佳答案 没有明确的 PDF Clow
我正在使用 PDFClown-0.2.0 进行拼合 this pdf 文件。这是我的代码: import org.pdfclown.documents.Document; import org.pdf
我正在与 PDFClown 合作来分析和使用 PDFDocuments。我的目标是突出显示表格中的所有数字。对于属于在一起的所有数字(例如:表格一列中的所有数字),我将创建一个带有四边形列表的 Tex
我真的很喜欢 c# 中的 pdfclown,但我想从 byte[] 数组或文件流中打开 pdf。我还没有找到 pdfclown 的任何例子。谁能帮忙? 一个例子是这样的: 使用 (org.pdfclo
我正在尝试运行 Stefano Chizzolini(很棒的人:PDFClown 的创建者)编写的 Java 代码,以使用 PDF Clown 库解析 PDF。我收到此错误,但我不知道该如何解决。 E
我是一名优秀的程序员,十分优秀!