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模版结构被破坏,导致编译后生成的文件不可用,如下图
itextpdf读取PDF文件流报Rebuild failed: trailer not found.;_第1张图片
因此,需要过滤掉不需要编码的文件:过滤后缀为.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>

你可能感兴趣的:(java进阶,maven,java,intellij-idea)