我正在访问一个WS(SOAP),该文件以MTOM格式返回文件(根据我的研究)。
在此WS中,带有带有uuid的href包含的标签,如下所示:
<xop:Include href="cid:urn:uuid:b3258727-ebcc-4c3d-a55d-0ff15087e16c"/>
此外,我得到了一系列附带的文件。 根据我的研究,这些内容为MTOM格式,返回以下内容:
b'%PDF-1.4 \ n%\ xc0 \ xc8 \ xcc \ xd2 \ r \ n1 0 obj \ n << \ n / Title(Rave 报告)\ n /作者(mariaf)\ n / Creator(pdfFactory Pro www.pdffactory.com)\ n / Producer(pdfFactory Pro 6.17 \(Windows 7 Ultimate x86葡萄牙语\))\ n / CreationDate (D:20190425080343-03 \ '00 \')\ n >> \ nendobj \ n5 0 obj \ n << \ n / Filter / FlateDecode \ n / Length 4370 \ n >>流\ r \ nH \ x89 \ xedW [O \ x1c \ xc9 \ x92〜\ xe7W \ xe4 \ xc3 \ x1e \ xc9 + \ xd1E \ xe5 \ xad。\ xbc \ xe1n \ xf0a \ x16 \ x83 \ x87 \ x06t4 \ xe2 \ xa5 \ xa1 \ xdb ^ F \ x18 \ x98n3 ^ \ xed \ xaf \ xdf \ xac \ xcaKEfdeUc \ xe3 \ xf1h \ x8f \ xac \ x19Q \ x9d \ x11 \ x91q \ xf9 \ xe2 \ x8b \ xc8?H \ x9eQF \ xbe \ x12Y \ xd2 \ x8c \ x11 \ xc1 \ x8a \ xacd \ xe4 \ xf3 \ x0e \ x93 \ x95 \ xfd \ xb8o?x!b0 \ xfa \ xa8Uf \ x83 \ xd7clc xa0 \ x05 \ x0e \ xa7 \ x9bF \ x87 \ ny \ x14 \ x10 \ xed \ x00 \ x9c \ xd3 \ xe9 \ xd1 \ x18 \ x89 \ x9f \ xd8 \ xe6 \ x0f \ x80 \ x1b9 \ xf5 \ x88 \ xff \ x88 \ x00Ity \ xa4 \ x05 \ x04 \ x7f \ x8f \ xeal \ x06 \ xf3 \ x8cP \ x03 \ xf6 \ x1b \ xf9 \ x7f \ xfb \ x95 \ xf6 \ xec \ nendstream \ nendobj \ n13 0 obj \ n << \ n / Type / Page \ n / Parent 3 0 R \ n / MediaBox [0 0 595 842] \ n /资源\ n << \ n / ProcSet [/ PDF / Text / ImageC] \ n / Font \ n << \ n / F1 8 0 R \ n / F2 9 0 R \ n >> \ n / XObject \ n << \ n / im1 6 0 R \ n / im2 7 0 R \ n >> \ n >> \ n /内容14 0 R \ n / Annots 15 0 R \ n >>
...
n \ r \ n0000017965 00000 n \ r \ n0000018059 00000 n \ r \ n0000018153 00000 n \ r \ n0000018206 00000 n \ r \ ntrailer \ n << \ n / Size 26 \ n / Info 1 0 R \ n / Root 2 0 R \ n / ID [<9F1C3FB602D86B000A9EDDBC6672E7D7> <9F1C3FB602D86B000A9EDDBC6672E7D7>] \ n >> \ nstartxref \ n18306 \ n %% EOF'
我把内容的一小部分是为了不打扰问题的可读性,也是为了安全。
我的问题是,我可以将这种类型的返回值转换为base64以生成PDF文件吗? 在某些示例中,我已经看到了对该内容的一些手动操作,以仅包含将引用base64的部分。
今天,我研究的python ZEEP库使用了WS,但我不支持这种格式。我研究了SUDs库,但我似乎也没有支持。
更新
我设法解决了这个问题。
可以使用binascii python库将内容转换为ASCII,然后使用base64库将其转换为String,然后可以将其作为blob内容进行处理。下面的代码:
base64.b64decode(binascii.b2a_base64(content))