当前位置: 首页 > 知识库问答 >
问题:

PDF编码问题

耿玄裳
2023-03-14

我有一个(非常简单的)java Spring Boot/REST服务,它从输入中呈现PDF并使用IntelliJ对其进行测试。

我使用pdfbox作为创建此类pdf的工具。

一个特点是,除了它想要的常规内容外,客户端还可以将附件作为字节[]提供。

当用户尝试该服务时,最终文档只有附件部分的空白页。

  • 使用IntelliJ和HTTP REST客户端进行了尝试,但遇到了相同的问题

当我注意到使用postman时,它工作得很好,我更改了生成的响应文件的IntelliJ默认文件编码(从UTF-8更改为ISO-8859-1),然后连续的文档清晰正确。。。不要忘记,这个问题似乎只影响附件。常规内容总是好的。

  • 我想这是附件内容的编码问题。我对吗?
  • 我可以在不影响用户服务的情况下处理这个问题吗?这意味着避免他们方面的一些开发。

我尝试了很多字节转换都没有成功,例如:

new String(annexe, StandardCharsets.ISO_8859_1).getBytes(StandardCharsets.UTF_8);

但是每次我都有例外:

java.io.IOException: java.util.zip.DataFormatException: invalid stored block lengths

文档以字节[]的形式发回,如下所示:

ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
pdfDocument.save(outputStream);
pdfDocument.close();
return outputStream.toByteArray();

将文档保存到文件中的代码完全相同,只给出了一个文件输出流。

文件中添加了如下附件:

for(byte[] content : annexes) {
    PDDocument annex = PDDocument.load(content);
    for (PDPage page : annex .getPages()) {
        pdfDocument.importPage(page);
    }
}

我也尝试了PDF Merger实用程序,但得到了相同的结果(空白页为附件)

共有1个答案

劳华灿
2023-03-14

多亏了Tilman Hausherr的建议,我试着用Base64编码字节[]。getEncoder()。编码(…) 这就行了!

客户端现在必须处理Base64编码的字符串,但它至少可以工作。

非常感谢。

 类似资料:
  • 最近,我们正在将java构建作业从serverA迁移到serverB,java源代码(包含中文字符)在使用Ant的原始serverA上编译良好( ),但是,当我们将相同的代码签出到新的serverB并运行相同的Ant脚本时,出现了编码错误,如“用于编码GBK的Unmappable character”(Unmappable character for encoding GBK)。(JDK版本相同)

  • 当从其中一个web服务获取数据时,引号(“)将显示为(?)当我使用Rest模板时。我在chrome上的postman中测试了web服务,并给出了正确的字符。我尝试编码UTF-8,但没有成功。 我检查了以下是从Web服务提供商编码: 高速缓存控制→私有连接→关闭内容编码→gzip内容长度→3407内容类型→text/xml; charset=ISO-8859-1日期→周三,2015 13:35:53

  • 问题内容: 我尝试使用java.io.FileReader读取一些文本文件并将其转换为字符串,但是我发现结果编码错误并且根本不可读。 这是我的环境: Windows 2003,操作系统编码:CP1252 Java 5.0 我的文件是UTF-8编码或CP1252编码的,其中一些(UTF-8编码的文件)可能包含中文(非拉丁)字符。 我使用以下代码来完成我的工作: 上面的代码不起作用。我发现FileRe

  • 我在gradle运行junit测试时遇到了一个问题。从stacktrace来看,这似乎是一个编码问题。 我已将编码设置为 谢谢

  • 我正在尝试通过golang使用JSON API,但是在获得响应时遇到了可怕的时间。我正在使用示例 JSON 终结点 http://jsonplaceholder.typicode.com/posts/1,该终结点返回 这是我的代码,来自这个堆栈溢出答案: 这是输出: 我知道endpoint有效。这是编码问题还是其他问题?我在Mac OSX 10.11.15上。 谢谢

  • 我有这样一个csv文件 我在读书