繁体   English   中英

无法从 Web 服务返回的二进制字符串下载 pdf

[英]failed to dowload pdf from binary string returned from a web-service

我试图在 reactjs 中编码这个 html 表格。 所以我创建了我的服务器,它向外部服务器发出请求,外部服务器的响应被发送到我的客户端。 在我的客户中,我尝试将他的响应转换为 pdf。 我得到空白页

这是我试图在我的反应项目中编码的形式

<HTML>
<HEAD>
  <TITLE>Simulation Web Services</TITLE>
</HEAD>
<BODY>

  <FORM method='POST' target='result' action='https://url....' accept-charset="UTF-8">
    <H3>File format PDF</H3>
    <TEXTAREA rows="20" cols="80" name='request'>
     <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
       <...>
      </...>
   </TEXTAREA><BR />

<INPUT type='submit' value='Envoyer' />
  </FORM>
<BR />

</BODY>

我的服务器我有这个

app.post('/rapportpdf', function (req, res) {

console.log("sirennnn "+ req.siren)


var xmlBodyStr = `<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
   <...>

   </...>`;

var configfile = {
  headers: {
    'Content-Type': 'application/xml',
    'Cache-Control': 'no-cache',
  },
};

axios
  .post(
    'https://Url...',
    xmlBodyStr,
    configfile
  )
  .then(
    (ressultat) => {
     res.send({data: ressultat.data})

 });

});

在我的客户中,我有下面的代码

Axios('/rapportpdf', {method: "POST", body: siren})
      //.then(response => response.json() )
      .then(({data}) => {
        data=data.data
        console.log(data);
        var file = new Blob([data], {type: 'application/pdf'});
        var fileURL = URL.createObjectURL(file);
        const link = document.createElement('a');
        link.href = fileURL;
        link.setAttribute('download', 'test.pdf');
        document.body.appendChild(link);
        link.click();
    })

服务器响应的格式是这样的

%PDF-1.4
%����
2 0 obj
<</ColorSpace/DeviceRGB/Subtype/Image/Height 1309/Filter/DCTDecode/Type/XObject/Width 2208/BitsPerComponent 8/Length 570306>>stream
����ExifII*��DuckyP���http://ns.adobe.com/xap/1.0/<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c148 79.164036, 2019/08/13-01:06:57        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:OriginalDocumentID="xmp.did:46DB15EC20D311EAA393A9AB844C7CA3" xmpMM:DocumentID="xmp.did:48D8C8F0217F11EAB56EA101C9DEA763" xmpMM:InstanceID="xmp.iid:48D8C8EF217F11EAB56EA101C9DEA763" xmp:CreatorTool="Adobe Photoshop CC 2015 (Windows)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:7ccda6f3-af1a-0540-b790-3f492bc75a0a" stRef:documentID="adobe:docid:photoshop:b088b14c-b252-8f43-aabe-45b88691b3dd"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>��Adobed����       



������

!1AQaq"��2��B#��R���br3�W   �C$���Ss��4�%FVc�Dd���T5EU&6⣳t�'ąGe7
!1AQa�Tq��"R������2B�#U�br����3Dd�CE�$Sc4%s�e��?��������~#���ƞ����͋�x_����P���������7ռ޿�Bv���1?����=>4�>
i/��|��w|��1M�ÿ��|_��7Ԡ��ߕJ��z�[��F�/�����},;��~W4/�W�9�'
����a��o�^5�Q�5����t���T�?���g�E��a?��������TĿ���"W嗩��  �20�������Q����oTɛ嗩FSbt���4��)kN�j�D�xT3��~W��a�I��9�]���U���Bq��n�,
'�OU��'^_>$_�J���*�M�)=W{��ק�g����O�NO�������8?�W��0��{�XB�D��
���8<?ǩ�ƿ��~U��K�C' ���/�L?��偰�I�x��~�>,_�R���~X�_���hE�����
�����S��"��I��z|X|*�������-�P��������U(��o�%���_���+��u��
����ȧ���T)...
...
0001171594 00000 n 
trailer
<</Info 171 0 R/ID [<5cb3337bb08e98c404e797418d5d7d84><4c77bcc78b92612693ec3572ecab81d1>]/Root 170 0 R/Size 172>>
startxref
1171782
%%EOF


[https://stackoverflow.com/questions/49134555/wrong-encoding-on-javascript-blob-when-fetching-file-from-server]

PDF 文件在编码方面非常敏感。 您需要确保在检索 PDF 二进制数据的过程中没有更改编码。

默认情况下 axios 使用 JSON 作为响应类型,因此需要指定配置条目:

axios.get(url, {responseType: "arraybuffer"}) ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM