itext pdf/a-3? setOutputIntents 空指针?

itext pdf/a-3? setOutputIntents null Pointer?

我正在尝试将使用 iText(5.5.6、5.5.7)生成的 PDF 的一致性级别设置为 PDFConformance 到 A3-B

val writer = PdfAWriter.getInstance(document, baos, PdfAConformanceLevel.PDF_A_3B)

我用的是:

val icc = ICC_Profile.getInstance(profileData)
writer.setOutputIntents("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", icc)

当前 profileData 是一个数组[Byte] 或一个输入流,其中填充了 sRGB Color Space Profile.icm 的数据。 我还使用 FontFactory.registerDirectory 来注册我所有的字体,我正在设置 createXmpMetadata(),我正在使用 XMLWorker 通过 XHTML 和一个 CSS 文件生成我的 PDF,该文件通过 * {字体系列}

但是我总是得到以下信息:

pdf-worker java.lang.NullPointerException: null
pdf-worker  at com.itextpdf.text.pdf.PdfWriter.addToBody(PdfWriter.java:815) ~[itextpdf-5.5.6.jar:5.5.6]
pdf-worker  at com.itextpdf.text.pdf.PdfWriter.setOutputIntents(PdfWriter.java:1945) ~[itextpdf-5.5.6.jar:5.5.6]
pdf-worker  at com.itextpdf.text.pdf.PdfAWriter.setOutputIntents(PdfAWriter.java:142) ~[itext-pdfa-5.5.6.jar:5.5.6]
pdf-worker  at de.envisia.pdf.worker.PdfService$$anonfun$generate.apply(PdfService.scala:45) ~[classes/:na]
pdf-worker  at de.envisia.pdf.worker.PdfService$$anonfun$generate.apply(PdfService.scala:30) ~[classes/:na]
pdf-worker  at com.twitter.util.Try$.apply(Try.scala:13) ~[util-core_2.11-6.28.0.jar:6.28.0]
pdf-worker  at com.twitter.util.Future$.apply(Future.scala:99) ~[util-core_2.11-6.28.0.jar:6.28.0]
pdf-worker  at de.envisia.pdf.worker.PdfService.generate(PdfService.scala:30) ~[classes/:na]
pdf-worker  at de.envisia.pdf.worker.PdfService.render(PdfService.scala:24) ~[classes/:na]
pdf-worker  at de.envisia.pdf.worker.PdfController$$anonfun.apply(PdfController.scala:39) ~[classes/:na]
pdf-worker  at de.envisia.pdf.worker.PdfController$$anonfun.apply(PdfController.scala:38) ~[classes/:na]

我抑制了堆栈跟踪的其余部分,因为它是 finagle(我的 http 服务器)的堆栈跟踪

错误可能是我使用的是 scala 而不是 Java?

有根据的猜测告诉我您在错误的时间使用 setOutputIntents()

你可能有:

writer.setOutputIntents("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", icc)
document.open()

打错了,应该是:

document.open()
writer.setOutputIntents("Custom", "", "http://www.color.org", "sRGB IEC61966-2.1", icc)

当您 open() 文档时,PdfWriter 中的几个对象正在初始化。如果您在打开文档之前设置输出意图,那些对象仍然是 null.