itextpdf读取PDF文件流报Rebuild failed: trailer not found.;
·
最近在使用itextpdf做发票打印功能,但在读取文件流时报错,以下是关键代码
ClassPathResource classPathResource = new ClassPathResource("/template/RU_HK_INVOICE_TEMPLATE.pdf");
InputStream inputStream = classPathResource.getInputStream();
reader = new PdfReader(inputStream);// 读取pdf模板
每次运行都在new PdfReader(inputStream) 时报以下错误:
com.itextpdf.text.exceptions.InvalidPdfException: Rebuild failed: trailer not found.; Original message: xref subsection not found at file pointer
maven在打包项目的时候会通过pom.xml配置文件对项目进行统一编码,但是部分文件不需要进行重新编码,例如: PDF模版文件;重新编码后可能导致PDF模版结构被破坏,导致编译后生成的文件不可用,如下图

因此,需要过滤掉不需要编码的文件:过滤后缀为.pdf或者.p8的所有文件,不对其进行统一编码。需在pom.xml文件中配置nonFilteredFileExtension标签
<!-- 过滤后缀不需要转码的文件后缀名 pdf -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.1</version>
<configuration>
<encoding>UTF-8</encoding>
<useDefaultDelimiters>false</useDefaultDelimiters>
<nonFilteredFileExtensions>
<nonFilteredFileExtension>pdf</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
更多推荐
所有评论(0)