Сегодня я расскажу как в pdf-файл записать Unicode строки.
Основная трудность была - понять как перевести из QString в PdfString. Ну и какую задать кодировку шрифту тоже было неочевидно.void writeUnicode() const
{
//Это наша тестовая строка, она извлекается из ресурсов
//Она будет переведена на русский, т.к. у нас включен транслятор
//QTranslator
QString sTitle = QObject::tr("Test String");
//Рисовалка на текущей странице
PdfPainter painter;
painter.SetPage(currentPage_);
//Кодировка
const PdfEncoding * pEncoding;
//2х байтная кодировка
pEncoding = new PdfIdentityEncoding();
//Параметры шрифта
PdfFont * pFont;
pFont = document_->CreateFont("Arial", pEncoding);
pFont->SetFontSize(18.0);
//Здесь конвертируем строку sTitle из QString в PdfString
QByteArray ba = sTitle.toUtf8();
char * dt = ba.data();
PdfString ps(reinterpret_cast<const pdf_utf8*>(dt));
//задаем шрифт
painter.SetFont(pFont);
//рисуем текст на странице
painter.DrawText( 100.0, 100.0,
ps, ps.GetLength());
//заканчиваем работу с рисовалкой
painter.FinishPage();
}
* This source code was highlighted with Source Code Highlighter.
В итоге можем писать в PDF в любых Unicode символах.
Прошу прощения, в прошлом комментарии не учёл, что содержимое char* после нулевого байта не читается. Поэтому в конструктор PdfString надо также передать вторым параметром размер QByteArray, получившегося в результате fromUnicode();
ОтветитьУдалитьСделали по образцу! Все равно русские буквы не отображаются.
ОтветитьУдалить