Имя: Пароль:
1C
 
Сохранение pdf в 1с
,
0 val245
 
04.03.24
14:11
Доброго времени суток
Делаю интеграцию со сторонним приложением. Сервис сторонней программы возвращает файл pdf в виде строки в таком виде:
"%PDF-1.7
%����
76 0 obj
<</Fields []>>
endobj
30 0 obj
<</Type /Catalog/Pages 38 0 R/Metadata 39 0 R/Names <<>>>>
endobj
77 0 obj..." ну и т.д.
Теперь как сохранить его в PDF?
Пытаюсь записать его в текстовый документ и сохранить в формате pdf таким образом:
ФайлTXT = Новый ТекстовыйДокумент;
ФайлTXT.УстановитьТекст(СтрокаОтветаСервера);
ФайлTXT.Записать("C:\TEST.txt");

Но текст сохраняется в файле не полностью. Кто может помочь?
1 Волшебник
 
04.03.24
14:14
Получайте как двоичные данные и сохраняйте как TEST.pdf
2 H A D G E H O G s
 
04.03.24
14:16
Конечно он не полностью сохранится, так как там в нем null-terminate, наследие C языков, скажите спасибо Ритчи Деннису. Плакать и страдать будет еще не одно поколение.

Получай в виде ДвоичныеДанные или BASE64, их и сохраняй.

Нет разрядного устройства —
Сука, чистое расстройство!
3 val245
 
04.03.24
14:17
А как его сохранить в двоичные данные, если он возвращает как pdf? При попытке записать этот текст в двоичные данные также выходит ошибка
4 H A D G E H O G s
 
04.03.24
14:23
(3) Попросите сервис транслировать этот файл согласно стандарта MIME:BASE64
5 KJlag
 
04.03.24
14:26
(3) спросить сервис - есть ли у них передача пдф файла в виде двоичных данных или base64, а не в виде странной строки.

а что за строка то? в смысле документация что говорит об их выгрузке? типо туда запихивается тупо текст пдфки (что както слабо верится)?
6 H A D G E H O G s
 
04.03.24
14:29
(5) Думаю -  автор - создатель этого сервиса. Чет чувствуется.
7 arsik
 
гуру
04.03.24
14:32
+(6) "Запахло весной"(с)
8 Garykom
 
гуру
04.03.24
14:32
(0) Перепиши получение с записью ответа сразу в файл
Временный файл, путь которого укажешь параметром
9 val245
 
04.03.24
14:40
(5) Если pdf файлу поменять расширение на txt, то он его как раз в таком виде и открывает
10 val245
 
04.03.24
14:40
(6) если бы....
11 val245
 
04.03.24
14:41
(8) не совсем понял
12 H A D G E H O G s
 
04.03.24
14:42
(9) Если файлу mylittlepony.exe поменять расширение на txt, то он его тоже того, но это не сделает маленькую пони текстовым файлом.
13 val245
 
04.03.24
14:44
(12) Ну как сказали разработчики приложения, это файл pdf. Ну дальше пришлось разбираться самому. Как теперь этот текст преобразовать обратно в pdf?
14 Garykom
 
гуру
04.03.24
14:51
(11)
HTTPСоединение (HTTPConnection)
Получить (Get)
Синтаксис:
Получить(<HTTPЗапрос>, <ИмяВыходногоФайла>)
Параметры:
<HTTPЗапрос> (обязательный)
Тип: HTTPЗапрос.
HTTP-запрос.
<ИмяВыходногоФайла> (необязательный)
Тип: Строка.
Имя файла, в который помещаются данные полученного ресурса. Если не указан или содержит пустую строку, то тело ответа может быть получено из объекта HTTPОтвет.
Возвращаемое значение:
Тип: HTTPОтвет.
Описание:
Получает данные с HTTP-сервера, используя GET-запрос.
Доступность:
Сервер, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
Использование в версии:
Доступен, начиная с версии 8.0.
Не рекомендуется использовать, начиная с версии 8.3.21.
Описание изменено в версии 8.3.21.
     Методическая информация
15 Philix
 
04.03.24
14:55
(13) Мэтр, слово "текст" забудьте для данного случая, оно мешает. Вам нужно выполнить (1). Показывайте, как Вы добываете этот чудный PDF. Ошибка где-то там.

или...
Телепатирую: где-то по тексту есть СтрокаОтветаСервера = ОтветСервера.ПолучитьТелоКакСтроку();

Надо: ДвоичныеДанныеОтвета = ОтветСервера.ПолучитьТелоКакДвоичныеДанные();
ДвоичныеДанныеОтвета.Записать(ИмяФайлаДляСохраненияДокумента);

Ну или ЗаписатьАсинх, если Вы на острие моды на асинхронные операции :)

Еще бы надо курнуть тип ответа, что это именно оно, но это я уже не помню как сделать....
16 Garykom
 
гуру
04.03.24
14:56
(15) Эмм зачем промежуточные танцы с ПолучитьТелоКакДвоичныеДанные() ?
Когда можно сразу HTTPСоединение.Получить(HTTPЗапрос, ИмяВыходногоФайла.pdf)
17 Philix
 
04.03.24
15:01
(16) Согласен... Никогда так не делал. Обычно было нужно с ответом поиграться, заголовки попарсить, в параноидальный лог записать  :)
18 val245
 
04.03.24
15:03
Спасибо, понял
19 val245
 
04.03.24
15:04
Получилось