QTextDocument: получить содержимое определенной страницы

Учитывая QTextDocument с определенной шириной и высотой, есть ли способ получить содержимое заданной страницы (в виде обычного текста + URL-адрес изображения в случае, если на странице есть изображение) по номеру страницы?

Вот пример того, чего я хотел бы достичь:

QString getTextForPage(int pageNumber); // this is the function I'd like to have
QString getURLForPage(int pageNumber); // this is the function I'd like to have

QString html = R"(
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<style>
.summary {page-break-after: always}
</style>
<title>title</title>
</head>
<p class="summary">This is a short summary which would fit into a page</p>
<p><img src="www.example.com/test.png" height="100" width="200"></p>
<p><img src"www.example.com/test2.png>" height="50" width="10"</p>
<p>This is a short text which should fit into a page<p>
<body>

</body>
</html>
)"
const auto width = 100;
const auto height = 200;
auto textDoc = new QTextDocument();
textDoc->setHtml(html);
textDoc->setPageSize(QSizeF {wide, height});
textDoc->setDocumentMargin(0);

for (auto curPageNum = 1; curPageNum <= textDoc->pageCount(); ++curPageNum) {
qDebug() << "current page: " << curPageNum;
qDebug() << getTextForPage(curPageNum);
qDebug() << getURLForPage(curPageNum);
}

Это должно напечатать:

1
This is a short summary which would fit into a page
(empty string as there is no URL)
2
(empty string as the there is no text on the page)
www.example.com/test.png
3
This is a short text which should fit into a page
www.example.com/test2.png

Как правило, текст в тегах p может занимать несколько страниц, и изображения гарантированно занимают не более одной страницы, если это поможет.

3

Решение

Невозможно получить содержимое определенной страницы в виде «открытого текста + URL изображения». Qt не поддерживает это. Особенно, когда вы устанавливаете контент как html, Qt не будет извлекать для вас документ под html …

То, что вы можете получить, это содержимое в виде изображения (или PDF), используя QPrinter и просьба распечатать только определенную страницу. Я могу опубликовать код, показывающий, как это сделать, если это может быть приемлемым решением для вас.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]