build
my $pdf = PDF::Make::Markup::Build->build($root, file_name => 'out');
Walks a parsed tree onto a PDF::Make::Builder and returns it, unsaved, so the caller decides where the bytes go.
NAME
PDF::Make::Markup::Build - compile a markup tree onto PDF::Make::Builder
DESCRIPTION
The only place that knows about both the markup and the builder. Everything it does is a builder call a hand-written script could have made, which is what keeps the markup honest: if the builder cannot do a thing, the markup does not offer it.
Content models
<doc>, <page>, <box>, <header> and <footer> hold blocks. Headings, <p>, <text> and the cells hold text and inline styling. <row> holds cells, <table> holds <tr>, and <tr> holds cells. Breaking one of those is an error with a position rather than a builder failure somewhere far from the template line that caused it.
What is not here yet
Inline styling inside a cell is refused rather than flattened: PDF::Make::Builder::Layout::Cell renders its own text and does not take the run list PDF::Make::Builder::Text understands. Lifting that is the next piece of work, and until then the error names the tag and where it is.