将 PDF 发送到后端会破坏编码和字符
Sending PDF to backend breaks encoding and characters
我尝试使用axios发送前端生成的PDF,在后端保存。
我似乎不能把所有的类型都弄清楚..
axios.post(`http://localhost:8080/pdfs`,
data,
{
responseType: 'arraybuffer',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/pdf'
}
})
Java返回:
@POST
@Path("/pdfs")
public void test(final File req,
final @Context SecurityContext securityContext) throws IOException, SQLException {
pdfService.init(req);
}
非常简单的东西。
PDF 在其他方面都很好,但是像 ö 和 ä 这样的字符被破坏了,甚至一些空格被打印为 "Â "
这似乎发生在 pdf 被发送到后端的途中,因为其他按钮只是从前端下载相同的 PDF(没有连接到后端)100% 没问题。
我应该使用 responseType: Blob,还是尝试调整 java 端?
当在控制台中打印时,后端数据到达时看起来像这样(仍然包含所有特殊字符):
%PDF-1.3
%ºß¬à
3 0 obj
<</Type /Page
/Parent 1 0 R
.....
但是如果我在 pdfService 之前停止 运行 调试器并查看 tmp/ 文件,它已经搞砸了..
是的,
您需要对文件进行base64编码,然后发送
然后在收到接收到的文件时再次解码。我发现它唯一有效的方法。
我尝试使用axios发送前端生成的PDF,在后端保存。
我似乎不能把所有的类型都弄清楚..
axios.post(`http://localhost:8080/pdfs`,
data,
{
responseType: 'arraybuffer',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/pdf'
}
})
Java返回:
@POST
@Path("/pdfs")
public void test(final File req,
final @Context SecurityContext securityContext) throws IOException, SQLException {
pdfService.init(req);
}
非常简单的东西。 PDF 在其他方面都很好,但是像 ö 和 ä 这样的字符被破坏了,甚至一些空格被打印为 "Â "
这似乎发生在 pdf 被发送到后端的途中,因为其他按钮只是从前端下载相同的 PDF(没有连接到后端)100% 没问题。
我应该使用 responseType: Blob,还是尝试调整 java 端?
当在控制台中打印时,后端数据到达时看起来像这样(仍然包含所有特殊字符):
%PDF-1.3
%ºß¬à
3 0 obj
<</Type /Page
/Parent 1 0 R
.....
但是如果我在 pdfService 之前停止 运行 调试器并查看 tmp/ 文件,它已经搞砸了..
是的,
您需要对文件进行base64编码,然后发送 然后在收到接收到的文件时再次解码。我发现它唯一有效的方法。