@BriGaDir_89

Html в pdf + QWebView + как повторить заголовок таблицы на следующей странице?

<table border="1">
	 <thead>
		<tr>
			<td>COL 1</td><td>COL 2</td><td>COL 3</td>
		<tr>
	 </thead>
	 <tbody>
		<script language="JavaScript" type="text/javascript">
			for( var i = 0; i < 3; i ++ )
			{
				document.write( "<tr>" );
				for( var j = 0; j < 3; j ++ )
				{
					document.write("<td>");
					for( var k = 0; k < 20; k ++ )
						document.write( k + "<br>");
					document.write("</td>");
				}
				document.write( "</tr>" );
			}
		</script>
	 </tbody>
	</table>


QString ResHTML = "здесь приведенный выше html.";
QWebView* printHtmlView = new QWebView();
printHtmlView->setHtml(ResHTML); // загружаем ваш html.    

QPrinter printer;
printer.setOutputFormat( QPrinter::PdfFormat);
printer.setOutputFileName( "файл.pdf" );

printHtmlView->print(&printer);


Если сохранить эту таблицу в *.pdf, то таблица будет просто разрезана в месте разрыва страниц.
А хотелось бы повторить заголовок на следующей странице.

784f2f43002344d582c3210a277a4bef.JPG
  • Вопрос задан
  • 1243 просмотра
Решения вопроса 1
zenden2k
@zenden2k
PHP & C++ programmer
У меня была подобная проблема с wkhtmltopdf (который внутри использует Qt Webkit)
Решалось подобными хаками
https://github.com/AAverin/JSUtils/tree/master/wkh...
https://gist.github.com/zenden2k/dc706de2f638ea9bac5f

может это вам как-то поможет
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@BriGaDir_89 Автор вопроса
Если знаете даже какой-либо костыльный метод, тоже делитесь ...

Если использовать объект QTextDocument, то все работает как должно, но в силу ущербной поддержки этим объектом тегов HTML и CSS, для моей задачи это решение не подходит.
QTextDocument *document = new QTextDocument();
    document->setHtml(htmlContent);

    QPrinter printer(QPrinter::HighResolution);
    printer.setPageSize(QPrinter::A4);
    printer.setOutputFormat(QPrinter::PdfFormat);

    printer.setOutputFileName("output.pdf");

    document->print(&printer);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы