Задать вопрос
@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
  • Вопрос задан
  • 1252 просмотра
Подписаться 2 Оценить Комментировать
Ответ пользователя BriGaDir_89 К ответам на вопрос (2)
@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);
Ответ написан
Комментировать