Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/25: Рейтинг темы: голосов - 25, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 04.02.2019
Сообщений: 7

Как сохранить объект Blob в кодировке ANSI?

04.02.2019, 10:14. Показов 4829. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, суть проблемы в следующем: есть PHP -скрипт, генерирующий PDF-документ при помощи библиотеки FPDF по POST-запросу через AJAX. Содержимое документа, то есть то, что должно выводиться в pdf-файл, во front-end возвращается в виде строки. Код post-запроса выглядит так:
JavaScript
1
2
3
4
5
6
7
8
9
10
$.post('get_doc.php', {'data' : data}, function (result) {
var bpdf = new Blob([result], {type: 'application/pdf;charset=cp367'});
burl = URL.createObjectURL(bpdf);
 
ba = document.createElement('a');
ba.href = burl;
ba.download = 'doc.pdf';
document.body.appendChild(ba);
ba.click ();
}, '');
Отпрвка запроса происходит при клике по кнопке, в ответ приходит строка, на странице появляется окно для открытия/сохранения файла. После открытия, либо сохранения и последующего открытия документа он имеет необходимое количество страниц, но все они пустые. При сохранении такого документа на диск и его последующем открытии как текстового файла в Notepad++, обнаружил, что он сохранён в кодировке UTF-8, в то время как другие pdf-файлы (скачанные из сети или сгенерированные той же билиотекой, но в других проектах и сохраняемые на диск на строне бек-энда, а не отправляемые во фронт-энд) сохраняются в кодировке ANSI. Мой вопрос в том, как на стороне js сделать так, чтобы объект Blob сохранялся в кодировке ANSI, не преобразовываясь в UTF-8?

(Вариант с сохранением pdf-файла на стороне бек-энда и генерации ссылки на него для открытия не подходит.)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.02.2019, 10:14
Ответы с готовыми решениями:

Как сохранить html-страницу в кодировке ANSI (сохраняет только в UTF-8)?
Добрый день! Нужно сохранить страницу в файл в кодировке ANSI. Если открыть страницу в webbrowser, то сохраняется в ANSI: ...

Как создать файл в кодировке ANSI
Как создать файл в кодировке ANSI ? Не нужно задавать свои вопросы в чужих темах

Как открывать файлы в кодировке ANSI
Открываю так txt файл: using System.IO; StreamReader streamReader = new...

3
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
04.02.2019, 16:03
не передайте ответ как DOMString - он всегда в UTF-8(если точнее UTF-16), преобразуйте в ArrayBuffer
JavaScript
1
{type: 'arraybuffer'}
или Blob
JavaScript
1
{type: 'blob'}
Можно также почистить за собой, createObjectURL() - статический метод, время жизни экземпляра DOMString, созданного им, напрямую будет зависеть от существования документа. Если документ кешируется, то оба просуществуют до очистки кеша. Не надо так

JavaScript
1
setTimeout(() => window.URL.revokeObjectURL(data), 100);
...
0
0 / 0 / 0
Регистрация: 04.02.2019
Сообщений: 7
05.02.2019, 12:07  [ТС]
Благодарю Вас за ответ, обязательно попробую Ваш вариант. В итоге вчера реализовал всё через создание формы и её отправку методом POST в новой вкладке (на стороне сервера в функции вывода документа вместо его вывода в виде строки указал вывод в окно броузера):
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var form = document.createElement('form');
            form.setAttribute('id', 'pdf_gen_form');
            form.setAttribute('method', 'post');
            form.setAttribute('action', self.get_settings().url);
            form.setAttribute('target', '_blank');
                    // создаём поля формы, перебирая массив, данные из которого необходимо отправить на сервер для генерации документа (на сервер данные отправляются в виде массива с именем data)
            for(var key in data) {
                
                var hiddenField = document.createElement('input');
            hiddenField.setAttribute('type', 'hidden');
            hiddenField.setAttribute('name', 'data[' + key + ']');
            hiddenField.setAttribute('value', data[key]);
            form.appendChild(hiddenField);
                
            }
            document.body.appendChild(form);
            form = document.getElementById('pdf_gen_form');
            form.submit();
0
05.02.2019, 12:27

Не по теме:

inob, не за что, удачи )

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.02.2019, 12:27
Помогаю со студенческими работами здесь

Как правильно считать/записать файл в ANSI кодировке?
Есть текстовой файл с ANSI кодировкой, английскими и русскими словами. Хочу в консольном приложении считать каждую 5-ю строку из этого...

Файл в кодировке ANSI
Лазарус работает с UFT8 и файлы, которые сохраняются через TStringList или TextFile так же имеют кодировку UTF8. Необходимо: ...

Чтение файлов в кодировке ANSI
Собственно, файл в родной кодировке не воспринимается, приходиться конвертировать кодировку в UTF-8, что не очень удобно. Можно как-то...

Как сохранить текст в Blob?
Здравствуйте. Нужно создать электронная книга с помощью Делфи 7 (это тема курсовая работа). Как можно сохранить данные в таблицу. Мне...

считать посимвольно txt файл в ANSi кодировке
Всем привет! Понимаю, что наверное вопрос о считывании посимвольно txt файлов уже обсуждался и не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru