Могу ли я в Qt QWebFrame :: print () предоставить дополнительные слои рендеринга? - PullRequest
5 голосов
/ 04 июня 2010

Я использую WebKit из QWebFrame для преобразования HTML-страниц в PDF. Можно ли применить дополнительную логику рендеринга перед отправкой страницы в QPrinter?

Что я хочу сделать - это иметь возможность преобразовывать ссылки и элементы управления в HTML в интерактивные аналоги в PDF, а не просто в дамп векторной графики?

Большое спасибо за любые рекомендации!

1 Ответ

1 голос
/ 05 июня 2010

Я нашел возможное решение, используя QWebFrame::renderTreeDump() и QWebFrame::findAllElements() (новое в Qt 4.6).

Он не совсем «предоставляет дополнительные слои рендеринга», но выполняет то, что я хочу сделать: я вызываю findAllElements(), чтобы очистить дерево DOM, применить любую логику, которую я хочу, установив атрибуты HTML-элемента.

Для более сложных операций, таких как замена элементов управления формы собственным процессом рендеринга, мне нужно очистить как дерево DOM, так и дерево рендеринга, повозиться с деревом DOM, чтобы элемент не отправлялся на QPrinter. В конце я очищаю полученный PDF-файл, внедряю свой собственный рендеринг для элементов управления, используя информацию, полученную из дерева рендеринга и дерева DOM.

Это кажется излишне сложным. У кого-нибудь есть более изящное решение этой проблемы?

...