|
Отправка pdf на сайт через HTTP сервис, ДвоичныеДанные и Base64 |
☑ |
0
DosBot
14.05.19
✎
09:59
|
Платформа 8.3.13.1644
Формирую ответ на json-запрос (обмен "с сайтом"): формирую печатную форму запрашиваемого документа и отправляю его содержимое (ДвоичныеДанные закодированные в Base64):
...
ПотокФайла = Новый ПотокВПамяти();
ТабДокумент.Записать(ПотокФайла, ТипФайлаТабличногоДокумента.PDF);
ДвоичныеДанныеПечати = ПотокФайла.ЗакрытьИПолучитьДвоичныеДанные();
Ответ_.PrintForm = Base64Строка(ДвоичныеДанныеПечати);
...
Проблема: прогер php утверждает, что после декодирования на стороне сайта pdf-файл не читается.
Для отладки пробовал делать в 1ске делать обратное преобразование и всё читается: Ответ_.PrintForm -> ДвоичныеДанныеПечати -> Файл pdf:
ДД1 = Base64Значение(ТекДанные_.PrintForm);
ДД1.Записать(КакойТоПутьСохранения+ИмяФайла+".pdf");
Не могу понять где затык.
Пробовал онлайн декодировщики (например ) - тоже, как и "на сайте", НЕ получается получить читаемый pdf (если скопипастить текст из ТекДанные_.PrintForm)
ЧЯДНТ?
|
|
1
DosBot
14.05.19
✎
10:14
|
Пробовал тем же методом передавать картинку 3,8 мб. .. всё получилось без проблем. с PDF фантастика какая то
|
|
2
palsergeich
14.05.19
✎
10:18
|
Нормально PDF таким образом передается на сайт.
Я думаю надо постучать по прогеру PHP
|
|
3
DosBot
14.05.19
✎
10:23
|
на стороне сайта код такой:
...
$decoded = base64_decode($data);
$file = 'invoice.pdf';
file_put_contents($file, $decoded);
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($file).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
readfile($file);
exit;
}
...
может тут где ошибка? >_<
|
|
4
DosBot
14.05.19
✎
10:25
|
Ну или там сайт ответ как=то преобразуется и строка с PrintForm интерпретируется неверно?
|
|
5
DosBot
14.05.19
✎
13:38
|
помог совет в (2) :)
Решилось доработкой погромистом PHP. Его коммент на сей счёт:
"Собственно не менял ничего. Использовал один из методов, которые уже пытался применить. Дело в неправильной последовательности данных файла. При копировании из памяти, видимо, повреждалась его структура...
Окончание файла иное - заканчивается на знак ="
Как то так
|
|
6
Поpyчик-4
14.05.19
✎
14:07
|
Самому освоить php не вариант?
|
|
7
DosBot
14.05.19
✎
17:03
|
(6) пока не было надобности.
Поле 1сных бескрайних просторов ещё не вспахано..
|
|