我正在使用iText®5.2.1©2000-2012 1T3XT BVBA和Integration Designer 8.0来创建以字节数组导出的PDF文件。
我正在创建一个包含大量文本的文档,并希望在开头添加徽标。
添加图像的部分代码如下:
BASE64Decoder decoder = new BASE64Decoder();
byte[] decodedBytes = decoder.decodeBuffer(Stringovi.SLIKA1);
Image image1 = Image.getInstance(decodedBytes);
image1.setAbsolutePosition(30f, 770f);
image1.scalePercent(60f);
document.add(image1);
由于系统要求,输入图像采用字节数组格式。 文档的其余部分由具有各种内容的不同表组成,并且全部是文本。 当我以前面提到的方式添加图像时程序结束,我得到一个字节输出,我通过Base64解码器运行。生成的PDF无法打开,显示的错误为:
"Error [PDF Structure 40]:Invalid reference table (xref)"
我无法看出我的错误在哪里如果有人能够如此友善并指出我正确的方向我会非常感激。
答案 0 :(得分:1)
您作为"损坏的PDF文件提供的文件"不是一个完整的PDF文件。它不以%%EOF
结尾,它没有交叉引用表,......它是一个不完整的PDF文档。
这意味着您的代码中没有以下行:
document.close();
如果你确实有这条线,那么就没有了。例如:抛出异常导致代码跳转到catch
子句,跳过close()
操作。
说明Invalid reference table (xref)
的错误消息与该诊断一致。这不是由iText引起的问题。这是一个由编码错误引起的问题:没有关闭文档和/或没有正确处理异常。