JAVA PDF预览

458 阅读1分钟

关于PDF在浏览器预览展示文件名不一致问题解决

修改前文件名展示:

image.png

一、引入pom文件依赖

<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox</artifactId>
    <version>2.0.24</version>
</dependency>

二、具体实现方法

try {
    OutputStream out = response.getOutputStream();
    Resource resource = new DefaultResourceLoader().getResource("classpath:doc/" + FileTypeEnum.ChangeCompanyTypeFile.getFileName());
    InputStream inputStream = resource.getInputStream();
    byte[] bytes = toByteArray(inputStream);
    //加载pdf
    PDDocument document = PDDocument.load(bytes);
    //获得文档属性对象
    PDDocumentInformation info = document.getDocumentInformation();
    //修改标题属性  这个标题会被展示
    info.setTitle(FileTypeEnum.ChangeCompanyTypeFile.getFileName());
    document.setDocumentInformation(info);
    //修改完直接输出到响应体中
    document.save(out);
    document.close();
    out.close();
} catch (Exception e) {
    log.error("查看失败", e);
}
public static byte[] toByteArray(InputStream input) throws IOException {
    ByteArrayOutputStream output = new ByteArrayOutputStream();
    byte[] buffer = new byte[4096];
    int n = 0;
    while (-1 != (n = input.read(buffer))) {
        output.write(buffer, 0, n);
    }
    return output.toByteArray();
}

修改后文件名展示:

image.png

预览文件地址:

image.png

注:火狐浏览器可能有点问题