groovy - NiFi ExecuteScript (Groovy):使用 Pdfbox 从 PDF 中提取文本/图像:错误加载模块
问题描述
NiFi 1.11.4
你好呀,
我找到了一个有趣的解决方案,用于使用 ExecuteScript (Groovy) 从 pdf 文件中提取文本和图像:
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()
任何想法,缺少什么?
感谢弗兰克
解决方案
已PDFTextStripper
重构为新包。在 pdfbox 1.8.x 中它确实在org.apache.pdfbox.util
但从 2.0.0 开始它在org.apache.pdfbox.text
.
因此,您需要调整您的import
语句以与 pdfbox 2.x 一起使用。
推荐阅读
- javascript - Webpack:TypeScript 编译中缺少。...在 AngularCompilerPlugin.getCompiledFile
- flutter - 如何模拟点击按钮 Flutter WebView
- php - 使用php将文件从表单上传到s3存储桶
- java - RecyclerView 项目行中的 ProgressBar 未更新
- python - 如何在 python 中创建年同比图
- scala - 使用 MixedVec 在凿子中使用动态参数创建 IO 包
- php - 比较两个和三个数组中包含的相同值的数组中的任何位置
- mysql - mySQL:三列上的唯一约束以及特定值
- c# - 如何从产量返回中返回音频剪辑?
- email - 电子邮件未送达收件人