Преобразование PDF в многостраничный TIFF через pdfbox/icafe4j не удается в SAP PI

Мы столкнулись с проблемой в нашей среде SAP PI (7.40). Мы получаем счета (xml, csv, pdf) из разных интерфейсов, и в процессе мы должны отправить tiff-файл (конвертированный из pdf через pdfbox/icafe4j) поставщику OCR. PDF может быть:

  1. входящий pdf
  2. сгенерированный нами PDF-файл (через pdfbox, из ввода xml или csv).

Преобразование реализовано во внешних классах Java. Он отлично работает для большинства файлов PDF. Есть только несколько pdf-файлов, в которых мы получаем исключение в нашей среде SAP PI, работающей в Linux(!!). И такое же преобразование выполняется хорошо без ошибок в локальной среде Windows(!!).

Часть исключения из среды Linux:

<?xml version="1.0" encoding="ISO-8859-1"?>
<ErrorHandling>
<ExceptionType>class java.lang.IndexOutOfBoundsException</ExceptionType
<ExceptionLocalizedMsg>Index: 0, Size: 0</ExceptionLocalizedMsg>
....

Выдержка из реализации Java:

// pDoc is the PDDocument object, returns byte[]
bTiff = tiffFromPdf.createMultipageTIFF(pDoc);
sTiffBase64 = DatatypeConverter.printBase64Binary(bTiff);
this.fireTrace(1, "Content of sTiffBase64 -> [" + sTiffBase64 + "]");

// Trace 'normally' contains:
<Trace type="T" level="1">Content of sTiffBase64 -> [base64-encoded tiff data] </Trace>

// In createMultipageTIFF the exception occurs in this line
TIFFTweaker.writeMultipageTIFF(rout, param, images);

После того, как мы обнаружили следующее относительно обновления класса TIFFTweaker, мы внедрили обновление, и после этого исключение не выбрасывается, а, как указано в ссылке, оно проглатывается.

https://github.com/dragon66/icafe/issues/63

// Trace of byte[] then is emtpy:
<Trace type="T" level="1">Content of sTiffBase64 -> [] </Trace>

Это не очень полезно, так как у нас должен быть файл tiff для OCR.

Мы также изучили внутренности потока байтов PDF и обнаружили, что есть некоторые специальные части, обрабатывающие шрифты/кодировку: шрифт TrueType и "/Encoding /Identity-H"... все файлы PDF которые не работают в нашей системе Linux, содержат этот "Identity-H".

Есть ли у кого-нибудь подобный опыт/ошибка при выполнении этого преобразования в Linux?

Любая идея, что мы можем сделать в дополнение к нашим попыткам? Может быть, какие-то библиотеки отсутствуют под Linux или что-то еще!?

Пожалуйста, взгляните также на это преобразование (может быть полезно для понимания):

https://www.mail-archive.com/[email protected]/msg09569.html

Я начинаю свою первоначальную запись для этого вопроса без дополнительного кода или поврежденного файла PDF, но при необходимости предоставляю его.

Трассировки стека:

RuntimeException during appliction Java mapping com/covestro/eai/cov/x01/apb/CheckAndPrepareEmailPDF
Thrown:
java.lang.RuntimeException: com.bbs.eai.bay0.x01.interfaces.MappingError: <?xml version="1.0" encoding="ISO-8859-1"?>
<ErrorHandling>
<ExceptionType>class java.lang.IndexOutOfBoundsException</ExceptionType>
<CauseInfo>CheckAndPrepareEmailPDF: Check EmailPDF problem</CauseInfo>
<ExceptionCause>null</ExceptionCause>
<ExceptionMsg>Index: 0, Size: 0</ExceptionMsg>
<ExceptionLocalizedMsg>Index: 0, Size: 0</ExceptionLocalizedMsg>
<ExceptionStackTrace>
<Trace> at java.util.ArrayList.RangeCheck Line 547</Trace>
<Trace> at java.util.ArrayList.get Line 322</Trace>
<Trace> at com.icafe4j.image.tiff.TIFFTweaker.writeMultipageTIFF Line 3154</Trace>
<Trace> at com.covestro.eai.cov.x01.apb.pdf.CreateMultiTIFFFromPDF.createMultipageTIFF Line 113</Trace>
<Trace> at com.covestro.eai.cov.x01.apb.CheckAndPrepareEmailPDF.transformStreamMapping Line 234</Trace>
<Trace> at com.bbs.eai.bay0.x01.templates.JavaMappingTemplateV2.transform Line 731</Trace>
<Trace> at com.sap.aii.ib.server.mapping.execution.JavaMapping.executeStep Line 112</Trace>
<Trace> at com.sap.aii.ib.server.mapping.execution.Mapping.execute Line 60</Trace>
<Trace> at com.sap.aii.ib.server.mapping.execution.SequenceMapping.executeStep Line 40</Trace>
<Trace> at com.sap.aii.ib.server.mapping.execution.Mapping.execute Line 60</Trace>
<Trace> at com.sap.aii.ib.server.mapping.execution.MappingHandler.map Line 87</Trace>
<Trace> at com.sap.aii.ib.server.mapping.execution.MappingHandler.map Line 71</Trace>
<Trace> at com.sap.aii.ibrun.sbeans.mapping.MappingRequestHandler.handleMappingRequest Line 123</Trace>
<Trace> at com.sap.aii.ibrun.sbeans.mapping.MappingRequestHandler.handleRequest Line 73</Trace>
<Trace> at com.sap.aii.ibrun.sbeans.mapping.MappingServiceImpl.processFunction Line 79</Trace>
<Trace> at sun.reflect.GeneratedMethodAccessor406.invoke Line -1</Trace>
<Trace> at sun.reflect.DelegatingMethodAccessorImpl.invoke Line 25</Trace>
<Trace> at java.lang.reflect.Method.invoke Line 597</Trace>
<Trace> at com.sap.engine.services.ejb3.runtime.impl.RequestInvocationContext.proceedFinal Line 47</Trace>
<Trace> at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed Line 166</Trace>
<Trace> at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatesTransition.invoke Line 19</Trace>
<Trace> at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed Line 179</Trace>
<Trace> at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Resource.invoke Line 50</Trace>
<Trace> at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed Line 179</Trace>
<Trace> at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.doWorkWithAttribute Line 37</Trace>
<Trace> at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.invoke Line 21</Trace>
<Trace> at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed Line 179</Trace>
<Trace> at com.sap.engine.services.ejb3.runtime.impl.Interceptors_MethodRetry.invoke Line 46</Trace>
<Trace> at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed Line 179</Trace>
<Trace> at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed Line 191</Trace>
<Trace> at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatelessInstanceGetter.invoke Line 23</Trace>
<Trace> at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed Line 179</Trace>
<Trace> at com.sap.engine.services.ejb3.runtime.impl.Interceptors_SecurityCheck.invoke Line 25</Trace>
<Trace> at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed Line 179</Trace>
<Trace> at com.sap.engine.services.ejb3.runtime.impl.Interceptors_ExceptionTracer.invoke Line 17</Trace>
<Trace> at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed Line 179</Trace>
<Trace> at com.sap.engine.services.ejb3.runtime.impl.DefaultInvocationChainsManager.startChain Line 138</Trace>
<Trace> at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke Line 172</Trace>
<Trace> at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke Line 99</Trace>
<Trace> at com.sun.proxy.$Proxy645.processFunction Line -1</Trace>
<Trace> at sun.reflect.NativeMethodAccessorImpl.invoke0 Line -2</Trace>
<Trace> at sun.reflect.NativeMethodAccessorImpl.invoke Line 39</Trace>
<Trace> at sun.reflect.DelegatingMethodAccessorImpl.invoke Line 25</Trace>
<Trace> at java.lang.reflect.Method.invoke Line 597</Trace>
<Trace> at com.sap.engine.services.rfcengine.RFCDefaultRequestHandler.handleRequest Line 183</Trace>
<Trace> at com.sap.engine.services.rfcengine.RFCJCOServer$J2EEApplicationRunnable.run Line 267</Trace>
<Trace> at com.sap.engine.core.thread.impl3.ActionObject.run Line 37</Trace>
<Trace> at java.security.AccessController.doPrivileged Line -2</Trace>
<Trace> at com.sap.engine.core.thread.impl3.SingleThread.execute Line 185</Trace>
<Trace> at com.sap.engine.core.thread.impl3.SingleThread.run Line 302</Trace>
</ExceptionStackTrace>
</ErrorHandling>

at com.bbs.eai.bay0.x01.templates.JavaMappingTemplateV2.transform(JavaMappingTemplateV2.java:740)
at com.sap.aii.ib.server.mapping.execution.JavaMapping.executeStep(JavaMapping.java:112)
at com.sap.aii.ib.server.mapping.execution.Mapping.execute(Mapping.java:60)
at com.sap.aii.ib.server.mapping.execution.SequenceMapping.executeStep(SequenceMapping.java:40)
at com.sap.aii.ib.server.mapping.execution.Mapping.execute(Mapping.java:60)
at com.sap.aii.ib.server.mapping.execution.MappingHandler.map(MappingHandler.java:87)
at com.sap.aii.ib.server.mapping.execution.MappingHandler.map(MappingHandler.java:71)
at com.sap.aii.ibrun.sbeans.mapping.MappingRequestHandler.handleMappingRequest(MappingRequestHandler.java:123)
at com.sap.aii.ibrun.sbeans.mapping.MappingRequestHandler.handleRequest(MappingRequestHandler.java:73)
at com.sap.aii.ibrun.sbeans.mapping.MappingServiceImpl.processFunction(MappingServiceImpl.java:79)
at sun.reflect.GeneratedMethodAccessor406.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sap.engine.services.ejb3.runtime.impl.RequestInvocationContext.proceedFinal(RequestInvocationContext.java:47)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:166)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatesTransition.invoke(Interceptors_StatesTransition.java:19)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Resource.invoke(Interceptors_Resource.java:50)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.doWorkWithAttribute(Interceptors_Transaction.java:37)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.invoke(Interceptors_Transaction.java:21)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_MethodRetry.invoke(Interceptors_MethodRetry.java:46)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:191)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatelessInstanceGetter.invoke(Interceptors_StatelessInstanceGetter.java:23)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_SecurityCheck.invoke(Interceptors_SecurityCheck.java:25)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_ExceptionTracer.invoke(Interceptors_ExceptionTracer.java:17)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.DefaultInvocationChainsManager.startChain(DefaultInvocationChainsManager.java:138)
at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:172)
at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:99)
at com.sun.proxy.$Proxy645.processFunction(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sap.engine.services.rfcengine.RFCDefaultRequestHandler.handleRequest(RFCDefaultRequestHandler.java:183)
at com.sap.engine.services.rfcengine.RFCJCOServer$J2EEApplicationRunnable.run(RFCJCOServer.java:267)
at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
at java.security.AccessController.doPrivileged(Native Method)
at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:185)
at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:302)
Caused by: com.bbs.eai.bay0.x01.interfaces.MappingError: <?xml version="1.0" encoding="ISO-8859-1"?>
<ErrorHandling>
<ExceptionType>class java.lang.IndexOutOfBoundsException</ExceptionType>
<CauseInfo>CheckAndPrepareEmailPDF: Check EmailPDF problem</CauseInfo>
<ExceptionCause>null</ExceptionCause>
<ExceptionMsg>Index: 0, Size: 0</ExceptionMsg>
<ExceptionLocalizedMsg>Index: 0, Size: 0</ExceptionLocalizedMsg>
<ExceptionStackTrace>
<Trace> at java.util.ArrayList.RangeCheck Line 547</Trace>
<Trace> at java.util.ArrayList.get Line 322</Trace>
<Trace> at com.icafe4j.image.tiff.TIFFTweaker.writeMultipageTIFF Line 3154</Trace>
<Trace> at com.covestro.eai.cov.x01.apb.pdf.CreateMultiTIFFFromPDF.createMultipageTIFF Line 113</Trace>
<Trace> at com.covestro.eai.cov.x01.apb.CheckAndPrepareEmailPDF.transformStreamMapping Line 234</Trace>
<Trace> at com.bbs.eai.bay0.x01.templates.JavaMappingTemplateV2.transform Line 731</Trace>
<Trace> at com.sap.aii.ib.server.mapping.execution.JavaMapping.executeStep Line 112</Trace>
<Trace> at com.sap.aii.ib.server.mapping.execution.Mapping.execute Line 60</Trace>
<Trace> at com.sap.aii.ib.server.mapping.execution.SequenceMapping.executeStep Line 40</Trace>
<Trace> at com.sap.aii.ib.server.mapping.execution.Mapping.execute Line 60</Trace>
<Trace> at com.sap.aii.ib.server.mapping.execution.MappingHandler.map Line 87</Trace>
<Trace> at com.sap.aii.ib.server.mapping.execution.MappingHandler.map Line 71</Trace>
<Trace> at com.sap.aii.ibrun.sbeans.mapping.MappingRequestHandler.handleMappingRequest Line 123</Trace>
<Trace> at com.sap.aii.ibrun.sbeans.mapping.MappingRequestHandler.handleRequest Line 73</Trace>
<Trace> at com.sap.aii.ibrun.sbeans.mapping.MappingServiceImpl.processFunction Line 79</Trace>
<Trace> at sun.reflect.GeneratedMethodAccessor406.invoke Line -1</Trace>
<Trace> at sun.reflect.DelegatingMethodAccessorImpl.invoke Line 25</Trace>
<Trace> at java.lang.reflect.Method.invoke Line 597</Trace>
<Trace> at com.sap.engine.services.ejb3.runtime.impl.RequestInvocationContext.proceedFinal Line 47</Trace>
<Trace> at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed Line 166</Trace>
<Trace> at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatesTransition.invoke Line 19</Trace>
<Trace> at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed Line 179</Trace>
<Trace> at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Resource.invoke Line 50</Trace>
<Trace> at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed Line 179</Trace>
<Trace> at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.doWorkWithAttribute Line 37</Trace>
<Trace> at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.invoke Line 21</Trace>
<Trace> at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed Line 179</Trace>
<Trace> at com.sap.engine.services.ejb3.runtime.impl.Interceptors_MethodRetry.invoke Line 46</Trace>
<Trace> at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed Line 179</Trace>
<Trace> at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed Line 191</Trace>
<Trace> at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatelessInstanceGetter.invoke Line 23</Trace>
<Trace> at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed Line 179</Trace>
<Trace> at com.sap.engine.services.ejb3.runtime.impl.Interceptors_SecurityCheck.invoke Line 25</Trace>
<Trace> at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed Line 179</Trace>
<Trace> at com.sap.engine.services.ejb3.runtime.impl.Interceptors_ExceptionTracer.invoke Line 17</Trace>
<Trace> at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed Line 179</Trace>
<Trace> at com.sap.engine.services.ejb3.runtime.impl.DefaultInvocationChainsManager.startChain Line 138</Trace>
<Trace> at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke Line 172</Trace>
<Trace> at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke Line 99</Trace>
<Trace> at com.sun.proxy.$Proxy645.processFunction Line -1</Trace>
<Trace> at sun.reflect.NativeMethodAccessorImpl.invoke0 Line -2</Trace>
<Trace> at sun.reflect.NativeMethodAccessorImpl.invoke Line 39</Trace>
<Trace> at sun.reflect.DelegatingMethodAccessorImpl.invoke Line 25</Trace>
<Trace> at java.lang.reflect.Method.invoke Line 597</Trace>
<Trace> at com.sap.engine.services.rfcengine.RFCDefaultRequestHandler.handleRequest Line 183</Trace>
<Trace> at com.sap.engine.services.rfcengine.RFCJCOServer$J2EEApplicationRunnable.run Line 267</Trace>
<Trace> at com.sap.engine.core.thread.impl3.ActionObject.run Line 37</Trace>
<Trace> at java.security.AccessController.doPrivileged Line -2</Trace>
<Trace> at com.sap.engine.core.thread.impl3.SingleThread.execute Line 185</Trace>
<Trace> at com.sap.engine.core.thread.impl3.SingleThread.run Line 302</Trace>
</ExceptionStackTrace>
</ErrorHandling>

at com.bbs.eai.bay0.x01.templates.JavaMappingTemplateV2.makeAndLogMappingError(JavaMappingTemplateV2.java:717)
at com.covestro.eai.cov.x01.apb.CheckAndPrepareEmailPDF.transformStreamMapping(CheckAndPrepareEmailPDF.java:351)
at com.bbs.eai.bay0.x01.templates.JavaMappingTemplateV2.transform(JavaMappingTemplateV2.java:731)
... 44 more
Caused by: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.RangeCheck(ArrayList.java:547)
at java.util.ArrayList.get(ArrayList.java:322)
at com.icafe4j.image.tiff.TIFFTweaker.writeMultipageTIFF(TIFFTweaker.java:3154)
at com.covestro.eai.cov.x01.apb.pdf.CreateMultiTIFFFromPDF.createMultipageTIFF(CreateMultiTIFFFromPDF.java:113)
at com.covestro.eai.cov.x01.apb.CheckAndPrepareEmailPDF.transformStreamMapping(CheckAndPrepareEmailPDF.java:234)
... 45 more

person TomP    schedule 06.12.2017    source источник
comment
Хе-хе, я помню это. Вы должны предоставить полную трассировку стека (она есть в ваших журналах) или, по крайней мере, максимально полную, не раскрывая корпоративных данных. Проблема IIRC в том, что icafe не может записать страницу (по неизвестной причине) и проглатывает ее. Это не проблема PDFBox. Я все же рекомендую свой совет из ссылки - используйте другой продукт, чем icafe. Сделайте многостраничное преобразование tiff с помощью этого кода stackoverflow.com/a/31974376/535646 или чего-то другого (например, люди там отличные)   -  person Tilman Hausherr    schedule 06.12.2017
comment
Спасибо за отзыв. Сначала я хочу сказать, что упомянул pdfbox только для того, чтобы дать полное представление о нашей среде и о том, что мы используем. Второй момент заключается в том, что мы уже пробовали преобразование, о котором вы упомянули по ссылке, но с ImageIO оно также работает нормально только под Windows, у нас не получилось без ошибок под Linux. Пытаясь получить трассировку стека, мы параллельно проверим альтернативные продукты.   -  person TomP    schedule 06.12.2017
comment
Я посмотрел на текущую версию TIFFTweaker, номер 3154 из вашей трассировки стека не совпадает, так что, возможно, они изменили что-то еще с тех пор. Таким образом, у вас есть два варианта: попытаться исправить TIFFTweaker самостоятельно, чтобы найти настоящую причину возникновения IndexOutOfBoundsException; или исследуйте ошибку linux only, которая возникла у вас при использовании другого кода. Можете ли вы запустить инструмент на сервере Linux вне SAP с кучей PDF-файлов? Так было бы проще сбить ошибку.   -  person Tilman Hausherr    schedule 06.12.2017
comment
Мы использовали две версии TIFFTweaker: более старую версию от 04 марта 2017 г., которая приводит к исключению IndexOutOfBoundsException, и более новую версию от 09 сентября 2017 г., которая не вызывает исключения, но также не создает TIFF :-( ... для дальнейшего исследования мы сейчас попробуем (ваше предложение) получить доступ к Linux-серверу вне SAP PI.   -  person TomP    schedule 07.12.2017
comment
@dragon66, но icafe получает массив буферизованных изображений. В java-коде буферизованные изображения никогда не бывают нулевыми. Итак, icafe получает этот массив. Однако...   -  person Tilman Hausherr    schedule 12.12.2017
comment
@TomP Я посмотрел исходный код. Он имеет ImageParam[] param = new ImageParam[1];. Таким образом, этот массив всегда равен 1, но icafe ожидает, что это будет то же самое, что и количество буферизованных изображений??? Кстати, я только что проснулся, так что, возможно, все, что я сейчас пишу, бесполезно :-)   -  person Tilman Hausherr    schedule 12.12.2017
comment
@dragon66 1) ой, действительно, мое замечание сегодня утром было бесполезным. 2) Я имею в виду код, который он отправил в список рассылки pdfbox. Он делает new BufferedImage, а затем заполняет его, приобретая графическое устройство. Так что это никогда не ноль.   -  person Tilman Hausherr    schedule 12.12.2017
comment
@dragon66dragon66Я не разработчик, а TomP.   -  person Tilman Hausherr    schedule 12.12.2017
comment
@dragon66 мое замечание из выпуска 63 остается в силе ... вы проглатываете исключение, потому что это лучше, чем ничего, вместо того, чтобы позволить пользователю узнать, что происходит, путем повторного вызова. Теперь у TomP иногда бывает the newer version from "09Sep2017" which throws no Exception but also does not create a tiff, и он даже не знает почему, пока не посмотрит в свои логи. (Том, ​​пожалуйста, проверьте, есть ли в вашем журнале трассировка стека с версией от 09 сентября 2017 г.)   -  person Tilman Hausherr    schedule 12.12.2017
comment
@all Извините за поздний ответ сегодня ... завтра у нас будет своего рода совещание по эскалации по этой теме, и, возможно, тогда у нас будет доступ к кому-то, кто может помочь нам на стороне Linux (файлы журналов, трассировки и т. Д.). В настоящее время у нас есть доступ только к «общедоступной» части среды выполнения SAP PI... Я буду держать вас в курсе.   -  person TomP    schedule 12.12.2017
comment
@dragon66 Я пытался использовать MemoryCacheRandomAccessOutputStream вместо FileCacheRandomAccessOutputStream (нашел эту подсказку в своем почтовом ящике), но безуспешно.   -  person TomP    schedule 18.12.2017
comment
@all Поскольку до Goliv осталось не так много времени, мы выбрали другое решение. 1-й шаг: преобразование PDF в TIFF будет выполняться программным компонентом (C# под Windows), который необходимо фактически заменить. 2-й шаг: мы вызовем веб-сервис (SOAP), который выполнит преобразование. Я хотел бы иметь решение для существующей реализации, но анализ на уровне O/S занял бы слишком много времени. Кроме того, в 2018 году мы перенесем установку PI в облачное решение, и мы еще не знаем, на какой ОС будет работать виртуальная установка. Так что закрою тему и всем спасибо.   -  person TomP    schedule 18.12.2017