gpt4 book ai didi

javascript - 转换响应 JavaScript 中 base64 返回的 PDF

转载 作者:行者123 更新时间:2023-12-05 07:32:54 29 4
gpt4 key购买 nike

我正在尝试使用 PDF.js 在 iframe 中显示 PDF(这不是特定于 PDF.js 的问题。我只是提供上下文)。通过调用 REST Web 服务检索 PDF。我需要将 PDF 作为 base64 编码字符串传递给 PDF.js。

我已经尝试了几种转换(参见下面的示例),但是它们都没有产生可以显示的工作 base64 字符串。我假设我的问题与正在流式传输的文件有关,但我不知道如何以正确的方式处理这个问题。下面的响应摘要表明响应包含多个流。

为了确认其余代码工作正常,我尝试将 var pdfData 设置为 pdf 的 base64 字符串,使用 https://www.browserling.com/tools/file-to-base64 生成它工作正常。它正确显示我的 pdf。它是这样开始的:JVBERi0xLjMKJcTl8uXrp/Og0MTGCjQgMCBvYmoKPDwgL0xlbmd0aCA1IDAgUiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAF9jj0LwjAQhn..

任何人都可以就如何从我的 REST 网络服务获得的响应中获取有效的 base64 编码字符串提供一些建议吗?

将其摘要写入控制台以供响应(剪切一些数据以显示流):

%PDF-1.3
%���������
4 0 obj
<< /Length 5 0 R /Filter /FlateDecode >>
stream
x}�= �0�w��w2�&i��Uqq+ܦN�C���9����(ϣ%���ƘZ�pu���-�������-��$i��D|>L����BzJG?�����Fs���[M��ij?���<�+�e�հ���ڇ �Z%�����
z)/�
endstream
endobj
5 0 obj
[removed content]
<< /Length 11 0 R /N 3 /Alternate /DeviceRGB /Filter /FlateDecode >>
stream
x��wTS��Ͻ7��" %�z �;HQ�I�P��&vDF)VdT�G�"cE ��b� �P��QDE�݌k �5�ޚ��Y�����g�}׺
[removed content]
<< /Size 24 /Root 12 0 R /Info 1 0 R /ID [ <73b9fa8794abac5a7f7e740da4a1ae7a>
<73b9fa8794abac5a7f7e740da4a1ae7a> ] >>
startxref
13328
%%EOF

代码总结:

<script>
var pdfData = '';

jQuery(document).ready(function($) {

$.ajax('myurl',
{
beforeSend: function(xhr) {
// Set the OAuth header from the session ID
xhr.setRequestHeader('Authorization', 'Bearer removed');
},
success: function(response) {
console.log("response: " + response);

var pdfData = window.btoa(unescape(encodeURIComponent(response)));
//Result (first line only): JVBERi0xLjMKJe+/ve+/ve+/ve+/ve+/ve+/

//var pdfData = btoa(unescape(response));
//Result: results in Failed to execute 'btoa' on 'Window':
// The string to be encoded contains characters outside of the Latin1 range.

//var pdfData = window.btoa(unescape(encodeURIComponent(response)));
//Result (first line only): JVBERi0xLjMKJe+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/vQo0ID


//var pdfData = Base64.btoa(response);
//Result: Failed to execute 'btoa' on 'Window':
// The string to be encoded contains characters outside of the Latin1 range.

//var pdfData = Base64.encode(response);
//Result (first line only): JVBERi0xLjMKJe+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/vQo0ID



},
error: function(jqXHR, textStatus, errorThrown) {
alert(jqXHR.status + ': ' + errorThrown);
}
}
);
});

//more code to pass pdfData to pdf viewer
</script>

最佳答案

我有同样的问题并找到了这个解决方案

您需要为您的客户端设置配置并指定解码器。对于我的问题,它是 ISO_8859_1

new RequestSpecBuilder().setConfig(config().decoderConfig(new DecoderConfig().defaultContentCharset(StandardCharsets.ISO_8859_1))

关于javascript - 转换响应 JavaScript 中 base64 返回的 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50949399/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com