JustPaste
HomeCategoriesAboutDonateContactTerms of UsePrivacy Policy
JustPaste

Free online notepad — write and share instantly

Navigate

  • Home
  • Timeline
  • Categories

Info

  • About
  • Donate
  • Contact

Legal

  • Terms of Use
  • Privacy Policy

© 2026 JustPaste.app. All rights reserved.

Made with ♥ by JustPaste

Untitled Page | JustPaste.app
about 5 hours ago3 views
👨‍💻Programming

Untitled Page

private function buildTable(\DOMDocument $dom, array $data): \DOMElement
{
    $rows    = $data['rows'] ?? $data;
    $first   = reset($rows);
    $headers = $data['headers'] ?? array_combine(array_keys($first), array_keys($first));

    $el = function (string $name, array $attrs = [], array $children = []) use ($dom) {
        $e = $dom->createElement($name);
        foreach ($attrs as $k => $v) {
            $e->setAttribute($k, $v);
        }
        foreach ($children as $c) {
            $e->appendChild($c);
        }
        return $e;
    };

    $cell = function ($text, bool $bold = false) use ($dom, $el) {
        $t = $el('w:t', ['xml:space' => 'preserve'], [$dom->createTextNode((string) $text)]);
        $r = $el('w:r', [], $bold ? [$el('w:rPr', [], [$el('w:b')]), $t] : [$t]);
        return $el('w:tc', [], [$el('w:p', [], [$r])]);
    };

    $borders = $el('w:tblBorders');
    foreach (['top', 'left', 'bottom', 'right', 'insideH', 'insideV'] as $side) {
        $borders->appendChild($el("w:$side", [
            'w:val' => 'single', 'w:sz' => '4', 'w:space' => '0', 'w:color' => '000000',
        ]));
    }

    $grid = $el('w:tblGrid');
    foreach ($headers as $_) {
        $grid->appendChild($el('w:gridCol'));
    }

    $tbl = $el('w:tbl', [], [
        $el('w:tblPr', [], [$el('w:tblW', ['w:w' => '5000', 'w:type' => 'pct']), $borders]),
        $grid,
    ]);

    // Header row (repeats on every page)
    $head = $el('w:tr', [], [$el('w:trPr', [], [$el('w:tblHeader')])]);
    foreach ($headers as $label) {
        $head->appendChild($cell($label, true));
    }
    $tbl->appendChild($head);

    foreach ($rows as $row) {
        $tr = $el('w:tr');
        foreach (array_keys($headers) as $k) {
            $tr->appendChild($cell($row[$k] ?? ''));
        }
        $tbl->appendChild($tr);
    }

    return $tbl;
}
← Back to timeline