我有一个侦听器,它接收一个包含pdf内容的JMS TextMessage。
我正在做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);
答案 0 :(得分: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
答案 1 :(得分:0)
为什么它是TextMessage而不是BytesMessage?
正如Mark所写,PDF包含二进制数据。所以看起来JMS通信的发送方也必须改变。