Print text without "QTextDocument"



  • I try to print labels on a Zebra from Qt
    I use ZPL code to send directly to a printer "Generic / Text Only".

    For information, I noticed that:
    . When I print from Notepad (Windows): Printing is good
    . When I print from WordPad (Windows): Printing is the same as with Qt (add spaces)

    I think there must be something wrong with the layout engine (wordwrap? Text "formatted")

    So when I use this way QTextDocument

    @ QTextDocument doc ("ZPL Command");
    Doc.print (& printer);@

    Spaces are added in all text labels
    Will it have a way to print "as notepad"?

    NB: Same problem as: http://qt-project.org/forums/viewthread/36994/


  • Lifetime Qt Champion

    Hi,

    You could try with QPainter directly. Have a look at the "Printing with Qt" chapter of Qt's documentation.

    Hope it helps



  • Hi,

    Thanks for the reply, I found the time to test with QPainter, but nothing print. Is there an error in this code?

    @QWebElement e = frame->findFirstElement("...");
    // ....
    QPainter painter;
    painter.begin(&printer);
    painter.drawText(QPoint(50, 50), e.toPlainText());
    painter.end();@

    Otherwise, I partially solved the problem by setting the font
    With default font, many spaces are added. When I set it to "Courier" 7pt, and with CR before each text, most problems are solved:

    @QWebElement e = frame->findFirstElement("...");
    // ....
    QTextDocument doc;
    QFont newFont(doc.defaultFont());
    newFont.setFamily("Courier New");
    newFont.setPointSize(7);
    doc.setDefaultFont(newFont);
    doc.setPlainText(e.toPlainText());
    doc.print(&printer);@

    But it would certainly be better with QPainter


  • Lifetime Qt Champion

    Are you sure you have a valid printer ?



  • Yes, it's the same for QPainter & QTextDocument


  • Lifetime Qt Champion

    How do you create the printer ?



  • @QPrinter printer(QPrinter::HighResolution);
    printer.setPrinterName(printerName);
    printer.setPageMargins(0,0,0,0,QPrinter::Millimeter);@


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.