简体   繁体   English

在GlyphMapping中PDFClown NullPointerException

[英]PDFClown NullPointerException in GlyphMapping

I recently switched my code from PDFClown v0.1.2 to v0.1.2.1. 我最近将我的代码从PDFClown v0.1.2切换到v0.1.2.1。 There were some differences which I think I have already met now (changed constructors of TextMarkup() and switching from CallOutNote to StaticNote) but unfortunately I've run in some troubles which I haven't figured out yet how to fix it. 我认为我现在已经遇到了一些差异(改变了TextMarkup()的构造函数并从CallOutNote切换到StaticNote)但不幸的是我遇到了一些麻烦,我还没弄清楚如何修复它。

Here is the stacktrace: 这是堆栈跟踪:

Exception in thread "Thread-0" java.lang.ExceptionInInitializerError
at org.pdfclown.documents.contents.fonts.Encoding.put(Encoding.java:88)
at org.pdfclown.documents.contents.fonts.StandardEncoding.<init>(StandardEncoding.java:41)
at org.pdfclown.documents.contents.fonts.Encoding.<clinit>(Encoding.java:54)
at org.pdfclown.documents.contents.fonts.SimpleFont.getBaseEncoding(SimpleFont.java:82)
at org.pdfclown.documents.contents.fonts.SimpleFont.loadEncoding(SimpleFont.java:142)
at org.pdfclown.documents.contents.fonts.SimpleFont.onLoad(SimpleFont.java:170)
at org.pdfclown.documents.contents.fonts.Font.load(Font.java:878)
at org.pdfclown.documents.contents.fonts.Font.<init>(Font.java:368)
at org.pdfclown.documents.contents.fonts.SimpleFont.<init>(SimpleFont.java:65)
at org.pdfclown.documents.contents.fonts.TrueTypeFont.<init>(TrueTypeFont.java:47)
at org.pdfclown.documents.contents.fonts.Font.wrap(Font.java:262)
at org.pdfclown.documents.contents.FontResources.wrap(FontResources.java:72)
at org.pdfclown.documents.contents.FontResources.wrap(FontResources.java:1)
at org.pdfclown.documents.contents.ResourceItems.get(ResourceItems.java:119)
at org.pdfclown.documents.contents.objects.SetFont.getResource(SetFont.java:119)
at org.pdfclown.documents.contents.objects.SetFont.getFont(SetFont.java:83)
at org.pdfclown.documents.contents.objects.SetFont.scan(SetFont.java:97)
at org.pdfclown.documents.contents.ContentScanner.moveNext(ContentScanner.java:1360)
at org.pdfclown.documents.contents.ContentScanner$TextWrapper.extract(ContentScanner.java:819)
at org.pdfclown.documents.contents.ContentScanner$TextWrapper.<init>(ContentScanner.java:771)
at org.pdfclown.documents.contents.ContentScanner$TextWrapper.<init>(ContentScanner.java:764)
at org.pdfclown.documents.contents.ContentScanner$GraphicsObjectWrapper.get(ContentScanner.java:684)
at org.pdfclown.documents.contents.ContentScanner$GraphicsObjectWrapper.access$0(ContentScanner.java:676)
at org.pdfclown.documents.contents.ContentScanner.getCurrentWrapper(ContentScanner.java:1184)
at org.pdfclown.tools.TextExtractor.extract(TextExtractor.java:636)
at org.pdfclown.tools.TextExtractor.extract(TextExtractor.java:653)
at org.pdfclown.tools.TextExtractor.extract(TextExtractor.java:653)
at org.pdfclown.tools.TextExtractor.extract(TextExtractor.java:299)
at theproject.logic.WorkerThread.extractTextOfHighlight(WorkerThread.java:758)
at theproject.logic.WorkerThread.run(WorkerThread.java:107)
Caused by: java.lang.NullPointerException
at java.io.Reader.<init>(Reader.java:78)
at java.io.InputStreamReader.<init>(InputStreamReader.java:72)
at org.pdfclown.documents.contents.fonts.GlyphMapping.load(GlyphMapping.java:69)
at org.pdfclown.documents.contents.fonts.GlyphMapping.<clinit>(GlyphMapping.java:47)
... 30 more

The method "extractTextOfHighlight()" extracts the text within a document which is highlighted: 方法“extractTextOfHighlight()”提取突出显示的文档中的文本:

protected List<ITextString> extractTextOfHighlight(Rectangle2D rect2d, Page page) {
    TextExtractor extractor = new TextExtractor();

    List<Rectangle2D> areas = new ArrayList<Rectangle2D>();
    areas.add(rect2d);
    extractor.setAreas(areas);
    extractor.setAreaTolerance(2.0);

    Map<Rectangle2D, List<ITextString>> map = extractor.extract(page);
    // Util.printExtractedTextMapToConsole(map);
    for(Rectangle2D keyRect : map.keySet()) {
        return validateExtractedStrings(map.get(keyRect));
    }

    return null;
}

There is a post on StackExchange which was the only one describing a similar error: StackExchange上有一篇帖子,它是唯一描述类似错误的帖子:

https://stackoverflow.com/a/23804322 https://stackoverflow.com/a/23804322

I already applied the recommended fix in PDFClown but ran into the same error. 我已经在PDFClown中应用了推荐的修复,但遇到了同样的错误。 My question is, if there is anything I can do to fix this error. 我的问题是,如果有什么我可以做的来解决这个错误。 I'm really out of ideas. 我真的没有想法。

Here is the pdf I used for my testing: https://www.dropbox.com/s/pt32s7gbrvr21a8/testfile.pdf?dl=0 这是我用于测试的pdf: https//www.dropbox.com/s/pt32s7gbrvr21a8/testfile.pdf?dl = 0

Please verify you have built your PDF Clown jar correctly. 请确认您已正确构建PDF Clown jar。

Your exception initially occurs as a NullPointerException 您的异常最初是作为NullPointerException发生的

at java.io.Reader.<init>(Reader.java:78)
at java.io.InputStreamReader.<init>(InputStreamReader.java:72)
at org.pdfclown.documents.contents.fonts.GlyphMapping.load(GlyphMapping.java:69)
at org.pdfclown.documents.contents.fonts.GlyphMapping.<clinit>(GlyphMapping.java:47)

ie in GlyphMapping.load during 即在GlyphMapping.load期间

  glyphListStream = new BufferedReader(
    new InputStreamReader(
      GlyphMapping.class.getResourceAsStream("/fonts/AGL20.scsv")
      )
    );

the resource "/fonts/AGL20.scsv" could not be found (which causes getResourceAsStream to return null which the InputStreamReader constructor forwards to its parent class Reader constructor which compares its parameter with null and in case of equality throws an explicit NullPointerException ). 无法找到资源"/fonts/AGL20.scsv" (这会导致getResourceAsStream返回nullInputStreamReader构造函数将其转发到其父类Reader构造函数,该构造函数将其参数与null进行比较,并且在相等的情况下抛出显式NullPointerException )。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM