JMS TextMessage itext PDF-подпись заголовка не найдена
У меня есть слушатель, который получает JMS TextMessage, в котором есть PDF-контент.
Я делаю getBytes ("Cp037"), так как он исходит от мэйнфрейма
когда я запускаю строку "PdfReader reader = new PdfReader (bais)";
происходит сбой, если подпись заголовка PDF не найдена.
Это должен быть действительный PDF, так как другое приложение может получить PDF.
В чем может быть проблема? Спасибо
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
TextMessage txtMessage = (TextMessage)message;
ByteArrayInputStream bais = new ByteArrayInputStream(txtMessage.getText().getBytes("Cp037"));
PdfReader reader = new PdfReader(bais);
2 ответа
У меня была та же ошибка, и я просто изменил свой PdfReader с чтения InputStreams для чтения строк. Итак, он отлично работает с:
public static void doMerge(List<String> list, OutputStream outputStream)
throws DocumentException, IOException {
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document, outputStream);
document.open();
PdfContentByte cb = writer.getDirectContent();
for (String in : list) {
PdfReader reader = new PdfReader(in);
for (int i = 1; i <= reader.getNumberOfPages(); i++) {
document.newPage();
// import the page from source pdf
PdfImportedPage page = writer.getImportedPage(reader, i);
// add the page to the destination pdf
cb.addTemplate(page, 0, 0);
}
}
outputStream.flush();
document.close();
outputStream.close();
}
* Первоначально я взял этот код с http://www.mindfiresolutions.com/Java-Merging-multiple-PDFs-into-a-single-PDF-using-iText-671.php
Почему это TextMessage вместо BytesMessage?
Как писал Марк, PDF-файл содержит двоичные данные. Таким образом, похоже, что сторона отправителя JMS-связи тоже должна быть изменена.