Конвертировать формат MTOM в Base64 в Python - PullRequest
0 голосов
/ 25 октября 2019

Я обращаюсь к WS (SOAP), который возвращает мне файл в формате MTOM (из того, что я исследовал).

В этом WS есть тег с href include с uuid, например так:

<xop:Include href="cid:urn:uuid:b3258727-ebcc-4c3d-a55d-0ff15087e16c"/>

Кроме того, я получаю массив документов, которые прилагаются. Их содержание, по моим исследованиям, находится в формате MTOM, возвращая мне следующее содержание:

b '% PDF-1.4 \ n% \ xc0 \ xc8 \ xcc \ xd2 \ r \ n1 0obj \ n << \ n / Title (Rave Report) \ n / Автор (mariaf) \ n / Создатель (pdfFactory Pro www.pdffactory.com) \ n / Производитель (pdfFactory Pro 6.17 \ (Windows 7 Ultimate x86 Португальский \)) \ n / CreationDate (D: 20190425080343-03 \ '00 \ ') \ n >> \ nendobj \ n5 0 obj \ n << \ n / Filter / FlateDecode \ n / длина 4370 \ n >> поток \ r \нГн \ x89 \ xedW [O \ X1C \ xc9 \ x92 ~ \ xe7W \ xe4 \ xc3 \ x1e \ xc9 + \ xd1E \ xe5 \ XAD. \ XBC \ xe1n \ xf0a \ х16 \ x83 \ x87 \ x06t4 \ XE2 \ xa5 \xa1 \ XDB ^ F \ x18 \ x98n3 ^ \ фиксировано \ 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? х! b0 \ РФА \ xa8Uf \ x83 \ xd7clc \ xa0 \ x05 \ x0e \ xa7 \ x9bF\ x87 \ пу \ x14 \ x10 \ фиксировано \ 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/ Resources \ n << \ n / ProcSet [/ PDF / Text / ImageC] \ n / Шрифт \ 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 / размер 26 \ n / Info 10 R \ n / Root 2 0 R \ n / ID [<9F1C3FB602D86B000A9EDDBC6672E7D7> <9F1C3FB602D86B000A9EDDBC6672E7D7>] \ n >> \ nstartxref \ n18306 \ n %% EOF '

малая часть *1013* *содержание, чтобы не нарушать удобочитаемость вопроса, а также для безопасности.

Мой вопрос: могу ли я преобразовать этот тип возврата в base64 для создания файла PDF? В некоторых примерах я видел, как некоторые ручные манипуляции с этим содержимым занимали только части, относящиеся к base64.

Сегодня я использую WS с библиотекой python ZEEP, которую я исследовал, не поддерживает этот формат. Я изучаю библиотеку SUDs и мне кажется, что она тоже не имеет поддержки.

ОБНОВЛЕНИЕ

Мне удалось решить проблему.

Содержаниеможет быть преобразован с помощью библиотеки binascii python в ASCII и после преобразования в строку с библиотекой base64, которая может быть обработана как содержимое BLOB-объекта. Код ниже:

base64.b64decode(binascii.b2a_base64(content))
...