Перейти к содержанию
    

Кириллица в pdf при ручном создании файла

Не нашел раздела подходящего для данной темы, так что размещу её здесь. Реализую генерацию pdf файлов на МК. И столкнулся с проблемой создания текстов с кириллицей. Описание как это сделать не нагуглил и реверс-инжиниринг даже очень простых файлов результата не дал. Может кто знает как это работает или даже сам такое реализовывал? Для примера как нужно изменить вот такой простейший файл содержащий стандартный "Hello word!" на "Привет мир!":

%PDF-1.4
1 0 obj <</Type /Catalog /Pages 2 0 R>>
endobj
2 0 obj <</Type /Pages /Kids [3 0 R] /Count 1>>
endobj
3 0 obj<</Type /Page /Parent 2 0 R /Resources 4 0 R /MediaBox [0 0 500 800] /Contents 6 0 R>>
endobj
4 0 obj<</Font <</F1 5 0 R>>>>
endobj
5 0 obj<</Type /Font /Subtype /Type1 /BaseFont /Helvetica>>
endobj
6 0 obj
<</Length 44>>
stream
BT /F1 24 Tf 175 720 Td (Hello World!)Tj ET
endstream
endobj
xref
0 7
0000000000 65535 f
0000000009 00000 n
0000000056 00000 n
0000000111 00000 n
0000000212 00000 n
0000000250 00000 n
0000000317 00000 n
trailer <</Size 7/Root 1 0 R>>
startxref
406
%%EOF

 

Изменено пользователем Ruslan-maniak

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

А зачем делать pdf на МК? Много лишних ресурсрв, которые занять нечем? Можно пояснить, какая великая нужда вынудила заняться таким на МК?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 27.07.2022 в 18:07, Ruslan-maniak сказал:

не нагуглил

https://www.google.ru/search?q=pdf+utf-8+characters+example

 

А также, в шрифте Helvetica никогда не было русских букв.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Те pdf с русскими буквами, что я видел, использовали Unicode кодировку с таблицей перекодировки внутри (для используемого набора Unicode символов <байт> -> <Unicode>)

Тэг /ToUnicode в описателе шрифта

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А не проще на МК генерить латеховский файл, а уж на ПК его компилировать?

Или еще лучше: пусть МК генерирует файл с отчетом, а ПК его обрабатывает, генерирует латеховский исходник и компилирует его.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 7/28/2022 at 12:02 AM, Eddy_Em said:

Или еще лучше: пусть МК генерирует файл с отчетом, а ПК его обрабатывает, генерирует латеховский исходник и компилирует его.

Eddy_Em это было бы логичней, но боюсь, что следующим вопросом будет "а как мне теперь это напечатать на принтере?".

В любом случае, работа с текстом потребует много памяти, которой у МК не много. ИМХО, генерацию pdf лучше выполнять в сервере приложения на ПК.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 7/28/2022 at 5:54 AM, tonyk_av said:

"а как мне теперь это напечатать на принтере?"

Тогда все значительно проще: сгенерировать постскрипт-файл! А его уже и печатать... Можно простой командой [inline]cat file.ps > /dev/lp0[/inline] (если принтер нормальный, конечно). Ну или стандартным [inline]lp file.ps[/inline].

Но таки лучше не напрягать МК такими суровыми задачами. Например, можно сделать связку: Orange Pi Zero (около 2000 рублей сейчас стоит) или просто Orange Pi (около 2500) + микроконтроллер. Одноплатник пусть с МК общается, а через веб-морду или standalone приложение пользователь будет общаться с одноплатником. Настроить печать на одноплатнике - вуаля! Нажал пользователь в веб-морде кнопочку "печать отчета", и принтер радостно зажужжал!

P.S. А вообще, я заметил, что вендузятники - люди крайне алогичные. Они любят искать проблемы на ровном месте и решать их совершенно дикими способами! Что-то у меня есть подозрение, что ТС ни о техе/латехе не слыхал, ни даже о постскриптах!

Изменено пользователем Eddy_Em

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 7/28/2022 at 1:22 PM, Eddy_Em said:

Тогда все значительно проще: сгенерировать постскрипт-файл! А его уже и печатать... Можно простой командой [inline]cat file.ps > /dev/lp0[/inline] (если принтер нормальный, конечно). Ну или стандартным [inline]lp file.ps[/inline].

Но таки лучше не напрягать МК такими суровыми задачами. Например, можно сделать связку: Orange Pi Zero (около 2000 рублей сейчас стоит) или просто Orange Pi (около 2500) + микроконтроллер. Одноплатник пусть с МК общается, а через веб-морду или standalone приложение пользователь будет общаться с одноплатником. Настроить печать на одноплатнике - вуаля! Нажал пользователь в веб-морде кнопочку "печать отчета", и принтер радостно зажужжал!

P.S. А вообще, я заметил, что вендузятники - люди крайне алогичные. Они любят искать проблемы на ровном месте и решать их совершенно дикими способами! Что-то у меня есть подозрение, что ТС ни о техе/латехе не слыхал, ни даже о постскриптах!

 

Я не спрашивал ЧТО делать. Я спросил КАК делать то, ЧТО мне нужно. Как линуксоид вы наверно не слышали про такое понятие как юзабилити. Нет ни каких серверов, нет приложений для постобработки файла на ПК. Какое еще orange Pi? Я не поделку диванную разрабатываю, чтобы в нее напихать кучу железа. Может мне просто цельный пк в каждый прибор засунуть. Вы про себестоимость слышали что-нибудь? Какой-то обывательский взгляд у вас на разработку. Тысячи пользователей должны иметь возможность просто вставить флэшку в тысячи приборов, нажать на кнопочку и получить pdf файл с нужной информацией на нее. Может мой ответ покажется грубым, но ваши пространные рассуждения не привязанные к реальности и теме топика просто обескураживают. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Именно для генерации можно попробовать что-то из этого скомпилить:
https://github.com/AndreRenaud/PDFGen
https://github.com/libharu/libharu

Ну а в целом, отказаться от .pdf в пользу голого html тоже неплохая идея. Это тоже универсальный формат. Даже если нет браузера - можно любым текстовым редактором открыть.

ЗЫ. И, как сказали выше, обязательно проверять, есть ли килирица в шрифтах, которые планируете использовать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

27 minutes ago, nice_vladi said:

Именно для генерации можно попробовать что-то из этого скомпилить:
https://github.com/AndreRenaud/PDFGen
https://github.com/libharu/libharu

Ну а в целом, отказаться от .pdf в пользу голого html тоже неплохая идея. Это тоже универсальный формат. Даже если нет браузера - можно любым текстовым редактором открыть.

ЗЫ. И, как сказали выше, обязательно проверять, есть ли килирица в шрифтах, которые планируете использовать.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, Ruslan-maniak said:

Html - можно конечно заюзать, но это костыль от безысходности был бы

а в него засунуть jspdf который уже будет генерить pdf при открытии :)

чтобы уж костыль так костыль

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...