首页 > 解决方案 > NiFi ExecuteScript (Groovy):使用 Pdfbox 从 PDF 中提取文本/图像:错误加载模块

问题描述

NiFi 1.11.4

你好呀,

我找到了一个有趣的解决方案,用于使用 ExecuteScript (Groovy) 从 pdf 文件中提取文本和图像:

github上的NiFi模板

Groovy 脚本以

import org.apache.pdfbox.pdmodel.*
import org.apache.pdfbox.util.*
def flowFile = session.get()
if(!flowFile) return
def s = new PDFTextStripper()

使用PDFBox 1.8.16,脚本运行没有错误,但 PDFTextStripper 始终为空(是的:pdf 文件包含文本,而不是图像)

使用PDFBox 2.0.19,脚本没有运行:

pdfbox 2.0 的模块目录

29.04.2020  12:56         2.715.618 pdfbox-2.0.19.jar
29.04.2020  19:36           257.911 pdfbox-debugger-2.0.19.jar
29.04.2020  19:36            81.206 pdfbox-tools-2.0.19.jar
29.04.2020  19:36           247.912 preflight-2.0.19.jar
29.04.2020  19:36           132.182 xmpbox-2.0.19.jar
29.04.2020  19:36         1.561.265 fontbox-2.0.19.jar

错误

Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: 
startup failed:
Script9.groovy: 18: unable to resolve class PDFTextStripper 
@ line 18, column 9.def 
  s = new PDFTextStripper()

任何想法,缺少什么?

感谢弗兰克

标签: groovyapache-nifipdfbox

解决方案


PDFTextStripper重构为新包。在 pdfbox 1.8.x 中它确实在org.apache.pdfbox.util但从 2.0.0 开始它在org.apache.pdfbox.text.

因此,您需要调整您的import语句以与 pdfbox 2.x 一起使用。


推荐阅读