Понемножку ковыряюсь с printex сэмплом из СДК. Пытаюсь распечатать файл в котором есть лишь пара <h1> ну и пара <b>, <i> . Так сказать, базовый пример из учебника безо всяких <html> и <body>. PrintEx::measure выдает 0 страниц в результате чего html_canvas::render взбрыкивает и возвращает false без вызова PrintEx::render. Если закомментировать калькуляции с количеством страниц и таки заставить вызвать PrintEx::render, тот выдает HPR_INVALID_PARAMETER.
Если в файлик добавить <body> вокруг остальных тегов, то все проходит на ура.
Если я правильно истолковал HTML спецификацию ( а я не спец, так, что могу ошибаться в данном в вопросе ), то <body> вроде как опционально, а раз так, то почему HTMLayout его не хочет его нормально переварить и выдать на печать ? Это бага или by design ?
Здравствуйте, c-smile, Вы писали:
CS>Здравствуйте, mssmax, Вы писали:
CS>Да, <html> и <body> есть optional элементы. CS>Но конкретно print функциональность завязана на наличие body.
А в чем суть такой завязки ? Какие-то внутренние ограничения ?
Здравствуйте, mssmax, Вы писали:
CS>>Да, <html> и <body> есть optional элементы. CS>>Но конкретно print функциональность завязана на наличие body.
M>А в чем суть такой завязки ? Какие-то внутренние ограничения ?
Именно <body> элемент и его содержимое раскладывается на страницы.
Браузеры принудительно вставляют в DOM body элемент если его нет и следят за тем чтобы он был один.
В моих движках допускается несколько body элементов ибо главный контейнер есть html элемент.
Например сделай вот такой документ (без html и body):
То, что браузеры налету "патчат" документ это понятно. Мне любопытно, почему во время печати, если <body> не найден, не сделать некий default assumption и продолжить печать того, что есть. Или это "загрязняет" общий дизайн кода ? Ведь при непринтовом рендеринге все отрисовывается без проблем.