Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

brcontainer

Erro ao imprimir

Recommended Posts

Estou usando QWebVivew, e na hora de imprimir a página fica toda estranha.
A primeira página a ser impressa desloca os textos e outros conteúdos "inline" para fora de seus elementos (DOM), ou os textos e conteúdo "inline" ficam minusculos ou maior que as os objetos "block/table".

 

 

Nota: O erro ocorre no Windows 7 x64 (não testei em outras plataformas ou processadores)
Nota: Qt5.0.2 e Mingw

 

Página HTML usada no exemplo:
ScreenShot do erro (página 1 e 2 da impressão):
Y9dOc.png
**Código usado:**

 

    QPrinter p;
    p.setPaperSize(QPrinter::A4);
    p.setFullPage(true);
    p.setResolution(300);
    p.setOrientation(QPrinter::Portrait);


    QPrintPreviewDialog preview(&p);
    preview.setWindowTitle(ui->myWebView->page()->mainFrame()->title());
    connect(&preview, SIGNAL(paintRequested(QPrinter*)), this, SLOT(printPreview(QPrinter*)));
    preview.exec();
    
    ...
    
    void printPreview(QPrinter *printer) {
        ui->myWebView->print(printer);
    }

 

Isso seria alguma falha minha? O que pode ser?
Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um exemplo com um QTextEdit:

QPrinter printer(QPrinter::HighResolution);
printer.setFullPage(true);
QString htmlText(text->toHtml());
QPrintDialog printDialog(&printer, this);
if (printDialog.exec())
{
    QTextDocument textDocument;
    textDocument.setHtml(htmlText);
    textDocument.print(&printer);
}

Creio que ficaria melhor desse modo do que criando uma conexão para um objeto de escopo local...

Tente fazer assim, e mudar para a mesma resolução do exemplo, quem sabe funciona...

 

 

Abraços :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um exemplo com um QTextEdit:

QPrinter printer(QPrinter::HighResolution);
printer.setFullPage(true);
QString htmlText(text->toHtml());
QPrintDialog printDialog(&printer, this);
if (printDialog.exec())
{
    QTextDocument textDocument;
    textDocument.setHtml(htmlText);
    textDocument.print(&printer);
}

Creio que ficaria melhor desse modo do que criando uma conexão para um objeto de escopo local...

Tente fazer assim, e mudar para a mesma resolução do exemplo, quem sabe funciona...

 

 

Abraços :D

 

Obrigado mas eu já fiz isso, inclusive o meu código adiciona todas as imagens (e outros tipos de conteúdos display) que aparecem na pagina para o resource (QTextDocument::addResource([resource type], QUrl, QVariant);) (em modo Async).

 

Minha duvida realmente é sobre a falha do printer+qwebkit, ou é uma falha minham que poderia estar causando tal problema.

 

Você saberia me dizer?

 

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que eu quis dizer é que você deveria fazer no esquema parecido com o QTextDocument, mas com o QWebView.

 

Algo assim:

 

QPrinter printer(QPrinter::HighResolution);
printer.setFullPage(true);
printer.setPaperSize(QPrinter::A4);
printer.setOrientation(QPrinter::Portrait);
 
QPrintDialog printDialog(&printer, this);
if (printDialog.exec())
{
     ui->myWebView->print(&printer);
}

 

Se não funcionar, não sei bem o que é...

 

Abraços :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Renato grato pela resposta, mas esse código é quase igual aos que eu já fiz, mesmo assim eu testei, e o resultado foi o mesmo, todos elementos inline (textos e imagens) ficam minúsculos, enquanto os elementos block e table permanecem normais.

 

Eu realmente só queria saber se isso é um BUG (ocorre no navegador Arora que também é feito em QT) ou se é a ausência de algum parametro temos que passar para o QPrinter antes de imprimir.

 

Não achei nada no http://bugreports.qt-project.org/‎ referente a este problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não tenho certeza, mas já que ocorre no aurora, vale perguntar nos fóruns do Qt ou preencher um bug report pra ter certexa... eu não sei.

 

 

Abraços :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não tenho certeza, mas já que ocorre no aurora, vale perguntar nos fóruns do Qt ou preencher um bug report pra ter certexa... eu não sei.

 

 

Abraços :D

Já perguntei em fóruns de QT, como o próprio oficial do qt-project (na verdade é mais um Q&A), porém ninguém sabe responder.

Eu perguntei isso em vários lugares na verdade, mas sem resultado.

 

Vou preencher um bug report. Talvez seja um BUG mesmo e não uma falta de "parâmetro".

 

 

[editado]

 

Bug reportado, para quem quiser acompanhar:

https://bugreports.qt-project.org/browse/QTBUG-31601

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.