Russian Qt Forum

Qt => Печать => Тема начата: Гурман от Июнь 04, 2012, 12:00



Название: QPrinter::PdfFormat русские буквы в Windows?
Отправлено: Гурман от Июнь 04, 2012, 12:00
Надо генерировать PDF документ, содержащий текст в исходной кодировке CP-1251 (возможны и другие кодировки). QPrinter не приходилось пользоваться, тем более, встроенным генератором PDF. Не будет проблем?


Название: Re: QPrinter::PdfFormat русские буквы в Windows?
Отправлено: Гурман от Июнь 04, 2012, 14:17
Ну вот уже столкнулся с непонятным поведением, не работает задание характеристик шрифта.

Код:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);

QPrinter printer;
printer.setOutputFormat( QPrinter::PdfFormat );
printer.setPageSize( QPrinter::A4 );
printer.setOrientation( QPrinter::Landscape );
printer.setOutputFileName( "test.pdf" );
printer.setPageMargins( 20, 20, 15, 10, QPrinter::Millimeter );
QPainter painter;
QFont font;
font.setStyleHint( QFont::TypeWriter ); // игнорируется, какой шрифт не задай, печатает только гельветикой
// font.setFamily( "Courier" ); // тоже по барабану
// ради эксперимента написал:
font.setUnderline( true ); // и это проигнорировалось...
painter.setFont( font );
if( ! painter.begin( &printer ) )
return 1;
QTextCodec::setCodecForTr( QTextCodec::codecForName( "Windows-1251" ) );
painter.drawText( 0,  0, QObject::tr( "Проверка русских and latinic!" ) );
painter.drawText( 0, 20, QObject::tr( "Но шрифт не моноширинный" ) );

if( ! printer.newPage() )
return 1;

return 0;
}

Правда, обнаружил, что делал всё это в Qt4.5.2, но вроде бы это всё ещё в 4.2 появилось, должно работать.


Название: Re: QPrinter::PdfFormat русские буквы в Windows?
Отправлено: Гурман от Июнь 04, 2012, 15:22
Вот блин, забыл совсем. И небось же где-то далеко мелким шрифтом написано, что painter должен быть активен перед установкой шрифта... Почему-бы не позволить эту установку до его активности - совершенно не понятно.