【问题标题】:Converting PDF stream bytes from API request to base64 (Javascript *No libraries!*)将 PDF 流字节从 API 请求转换为 base64(Javascript *无库!*)
【发布时间】:2023-03-12 19:27:01
【问题描述】:

我从 AJAX 调用(我将数据发布到)接收 PDF 流数据,我必须将其转换为我可以用来最终在 iFrame 标签内显示 PDF 的东西。我无权访问 API 进行进一步更改,因此无法进行后端修改。我必须在客户端仅使用 Javascript 而不使用 JS 库来解决这个问题。

我已经研究了几个小时并找到了多种解决方案,但最后都没有工作,包括 btoa() 方法,将其转换为 BLOB 并使用 URL.createObjectURL(blob)...

我什至不知道这些数据是什么。这是一个字节数组吗,因为它看起来不像一个。我不知道还能做什么。

后端有“ContentType”到“application/pdf”和 Content = newByteArrayContent(MemoryStream.ToArray()) 用于 HttpResponseMessage 对象 设置为 API 响应。 任何帮助将不胜感激!

提前谢谢大家!

请注意,下面的代码不完整。这只是一个sn-p。

%PDF-1.4
%����
6 0 obj
<<
/ProcSet [/PDF /ImageC /Text]
/Font
<<
/F10 7 0 R
/F20 9 0 R
/F30 11 0 R
/F40 15 0 R
>>
/XObject<<
/Im1 13 0 R
>>
>>
endobj
13 0 obj
<<
/Type /XObject
/Subtype /Image
/Width 1000
/Height 600
/ColorSpace /DeviceRGB
/Decode [0 1 0 1 0 1]
/BitsPerComponent 8
/SMask 14 0 R
/Length 27501
/Filter [/DCTDecode]
>>
stream
+���צ�j�χ��sV9f���3����  �&�_���d�:Ԕz��F�0㮏UQ��������������Z���
�:3G�C��4��C�}��e����@B��';q��ݨԫ7k�g���J��3�R\,b��(����`�    oU��oBi��%ԚdӍ�2�M�TP����I�S�H���ӎ0!̱�0�Eh�
��;)����|�2{8��/�hɠ�8��_O�9O���:��5���ߞM��܀�5a<����Ū9�WdE��M���1�n���ᖎE`<R��7Ӽԇ3��[�<M�Ё���#zad� |�/NȻ8�AJ�S{ߠQ��[�w���h4���a3�^{�7�i���y���x�E�{�v 8h��,�#�������løh98�,R�����t֤}�tt��5�굱F���t�i��n����;�l��d����M��>D�m���*�uJN`{�����}�T�N�'5�ę�]�d[�ۘ��N����H�|n�|�lm�m��b윃w9
�����ai�o���s
...
...
...
%%EOF

【问题讨论】:

  • 显示您如何提出请求。看来您确实将响应作为文本使用,这会破坏您的数据。您需要将其作为二进制文件使用(最好直接作为 Blob)。

标签: javascript pdf encoding base64 arraybuffer


【解决方案1】:

参考这个, 一旦在回调函数中解决了 Promise,请执行此操作,将 [json] 更改为回调函数返回的数据。

JavaScript blob filename without link

【讨论】:

  • 如果您认为linke Q/A 是该问题的完整答案,您也可以将此问题标记为重复。但请不要写出只指向其他答案的答案。
  • 我试过了,但加载的 PDF 显示“需要密码”。这是否意味着我收到的数据正在被正确处理?还是不知道上图中API响应的数据类型。另外,我们什么时候使用'application/pdf'和'octet/stream'?
猜你喜欢
  • 2020-12-24
  • 2020-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-13
  • 1970-01-01
  • 2017-01-29
  • 2011-01-28
相关资源
最近更新 更多