Создать PDF-файл из API

У меня есть API, который возвращает данные файла PDF, и я хочу знать, как сохранить эти данные в файл.

Это фрагмент того, как выглядят данные:

%PDF-1.4
%äüöß
2 0 obj
<</Length 3 0 R/Filter/FlateDecode>>
stream
x�=��
1E����v���0�~��� 

Я попытался закодировать и декодировать его в base64, но затем PDF-файл оказался пустым и попытался преобразовать данные в байты для записи в файл, но все равно не получилось.

Я безуспешно пытался:

data = format(response.text,'b') with open('test.pdf', 'wb') as f: f.write(data)

а еще это:

data = base64.b64encode(response.text) with open('test.pdf', 'wb') as f: f.write(data)

Можете ли вы поделиться кодом, который вы использовали для «преобразования данных в байты для записи в файл»?

berinaniesh 29.02.2024 11:13

data = format(response.text,'b') с open('test.pdf', 'wb') как f: f.write(data)

KrokeWaan 29.02.2024 11:26

А также попробовал это: data = base64.b64encode(response.text) с open('test.pdf', 'wb') как f: f.write(data)

KrokeWaan 29.02.2024 11:28

Рад, что это решено. В будущем, пожалуйста, отредактируйте свой вопрос, чтобы предоставить дополнительную информацию. Каждый вопрос должен стоять отдельно, комментарии могут быть удалены в будущем, а форматирование кода в вопросах работает гораздо лучше, чем в комментариях.

Friedrich 29.02.2024 11:45
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
4
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Из ваших комментариев вы сказали, что используете response.text для сохранения PDF в файл. При этом поток ответа предварительно преобразуется в текстовый ответ, и поэтому то, что вы там видите, — это не совсем правильный результат для загрузки бинарного файла.

Если вместо этого вы измените это на следующее, ваш PDF-файл должен быть сохранен с правильным двоичным содержимым:

with open('test.pdf', 'wb') as f: 
    f.write(response.content) 

Большое спасибо, это сработало. Не могу поверить, что я этого не пробовал

KrokeWaan 29.02.2024 11:35

Другие вопросы по теме