The first image printed to PDF is invisible



  • I've been developing an application which user can design a page and print it. My printer function works like this:

    @
    QPrinter printer;
    // some code to configure the printer
    QPainter painter;
    painter.begin(&printer);
    // some code to paint the pages
    painter.end();
    @

    And the function that I use to print the images is @painter.drawPixmap();@.
    When I show the page in QPrintPreviewDialog, everything is okay. Also when I print the pages there is no problem.
    The problem appears when I print the file to PDF. To do this, I change the printer format using @printer.setOutputFormat(QPrinter::PdfFormat);@
    The first image that I printed to PDF file becomes invisible. When I print a copy of the same image to the same PDF file, it becomes visible. So the problem is only for the first copy of the image, when I paint the the same image second time or third time there is no problem.(These are not the same QPixmap objects. These are different QPixmap objects which are created from the same image file.) After painting an image, if I paint a different image for the first time, it also appears invisible.
    I've spent a lot of time to solve the problem but still couldn't find the solution.
    I would appreciate any suggestions please.


  • Moderators

    Do you have a small example project that shows this issue for us to play with?

    This does sound very much like a bug to me, so maybe you should file it "here":http://bugreports.qt.nokia.com/. A small example project attached to the report will help a lot to fix the issue as the developers will take way less time to reproduce the issue.

    Thanks!



  • Tobias, I think that it also can be a problem in code. Not ever heard about problems on printing to pdf, so let's wait for code sample.



  • I have no problem with Pdf

    Simple example

    @
    QTextEdit document;
    document.append("test page");
    QPrinter printerPdf(QPrinter::HighResolution);
    printerPdf.setPageMargins(20,10,20,20,QPrinter::Millimeter);
    printerPdf.setOutputFileName("test.pdf");
    document.print(&printerPdf);
    @



  • stuk, post author said about problems printing images on pdf. Are you print text or images?



  • Yes, sorry i post mistake example...something like this..

    @
    QPixmap pix(":/img/test.jpg");
    QPrinter printer;
    printer.setOutputFormat(QPrinter::PdfFormat);
    printer.setOutputFileName("test.pdf");
    QPainter painter;
    painter.begin(&printer);
    painter.drawPixmap(0,0,100,100,pix);
    painter.end();
    @



  • I've found that the problem appears when I set the brush to Qt::transparent before painting the pixmap.

    @
    QPrinter printer;
    printer.setOutputFormat(QPrinter::PdfFormat);
    printer.setOutputFileName("output.pdf");
    QPainter painter;
    painter.begin(&printer);
    painter.setBrush(Qt::transparent);
    painter.drawPixmap(0, 0, 100, 100, QPixmap("sample.png"));
    painter.drawPixmap(200, 0, 100, 100, QPixmap("sample.png"));
    painter.drawPixmap(0, 100, 100, 100, QPixmap("sample2.png"));
    painter.drawPixmap(200, 100, 100, 100, QPixmap("sample2.png"));
    painter.end();
    @
    Only the second sample.png and the second sample2.png will be visible.



  • Sounds like a bug to me! Please file in the bug tracker.



  • I have reported the bug thank you for your help. :)



  • Feoran, please post link to bug here.




Log in to reply
 

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