Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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:
Conteudo do frame: http://jsfiddle.net/bdm6Y/2/show/
ScreenShot do erro (página 1 e 2 da impressão):
/applications/core/interface/imageproxy/imageproxy.php?img=http://i.stack.imgur.com/Y9dOc.png&key=191c02ead2e19a2166521024f2753b062084eb23266bcce8b56f0a30d188487c" alt="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.
>
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.
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
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.
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
>
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:
Um exemplo com um QTextEdit:
if (printDialog.exec()) { 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