Artisan-API-Referenz
Auf einen Blick
Abschnitt betitelt „Auf einen Blick“Das Artisan-Paket (nextpdf/artisan) stellt zwei verbundene API-Gruppen bereit: eine Chrome-Rendering-Schnittstelle – ChromeRendererConfig, ChromeHtmlRenderer, ChromeSecurityPolicy, ChromeRenderResult, ViewportCalculator, BrowserPool –, die ein HTML-Fragment in ein von Chrome erzeugtes PDF umwandelt, und eine schlanke Parser-/Importer-Schnittstelle – PdfReader, PageImporter, ImportedFormXObject sowie unterstützende Tokenizer-/Xref-Klassen –, mit der diese gerenderte Ausgabe wieder als Form-XObject mit auswählbarem Text in ein NextPDF-Dokument eingebettet wird.
Beginnen Sie hier: Wenn Sie lediglich ein PDF aus HTML erzeugen möchten, verwenden Sie dieses Paket nur selten direkt. Weisen Sie einem NextPDF-Document ein ChromeRendererConfig zu und rufen Sie writeHtmlChrome() auf (siehe den Quickstart). Greifen Sie erst auf die unten aufgeführten Klassen zurück, wenn Sie einen Renderer in einen Worker einbetten oder Parser-Diagnosen ausführen. Das erste Beispiel unter „Häufige Aufgaben“ zeigt diesen Weg mit einem einzigen Aufruf.
Häufige Aufgaben
Abschnitt betitelt „Häufige Aufgaben“Die drei Abläufe unten decken nahezu jeden praktischen Einsatz ab, vom High-Level-Aufruf bis zur expliziten Render- und Import-Pipeline. Jedes Beispiel wird gegen nextpdf-Artisan/src geprüft (sowie gegen die README.md / ci/tests/ des Pakets).
Ein HTML-Fragment als PDF mit auswählbarem Text rendern – der kanonische Aufruf.
<?php
declare(strict_types=1);
use NextPDF\Core\Document;use NextPDF\Artisan\ChromeRendererConfig;
require __DIR__ . '/vendor/autoload.php';
$config = new ChromeRendererConfig(chromeBinaryPath: '/usr/bin/chromium');
$doc = Document::createStandalone();$doc->setChromeRendererConfig($config);$doc->addPage();$doc->writeHtmlChrome('<div style="display:flex;gap:20px"><h2>Revenue</h2><p>$124,500</p></div>');$doc->save('/tmp/report.pdf');Was das bewirkt: Chrome führt das Layout des Fragments aus, und die Brücke bettet Seite 0 als Form-XObject ein, sodass der Text auswählbar bleibt. writeHtmlChrome(string $html, ?float $width = null, ?float $height = null): static passt die Höhe automatisch an, wenn $height gleich null ist.
Führen Sie den Renderer aus und importieren Sie die Seite selbst – die explizite Pipeline hinter writeHtmlChrome(), für Worker und individuelle Platzierung.
<?php
declare(strict_types=1);
use NextPDF\Artisan\ChromeHtmlRenderer;use NextPDF\Artisan\ChromeRendererConfig;use NextPDF\Artisan\ImportedFormXObject;use NextPDF\Artisan\PageImporter;use NextPDF\Parser\PdfReader;
$renderer = new ChromeHtmlRenderer(new ChromeRendererConfig(renderTimeout: 30));
try { $result = $renderer->render($html, widthPt: 595.28);
$reader = new PdfReader($result->getPdfData()); $reader->parse();
$form = (new PageImporter())->import($reader);} finally { $renderer->close();}Was das bewirkt: Rendert zu Chrome-PDF-Bytes, parst sie und importiert Seite 0 in ein ImportedFormXObject, das Sie platzieren können. Rufen Sie am Renderer immer close() auf, um den Chrome-Prozess freizugeben.
Erstellen Sie die Config aus einem Array im Framework-Stil – für config/*.php oder Bundle-Parameter statt fest verdrahteter Konstruktor-Argumente.
<?php
declare(strict_types=1);
use NextPDF\Artisan\ChromeRendererConfig;
$config = ChromeRendererConfig::fromArray([ 'chrome_binary' => '/usr/bin/chromium', 'render_timeout' => 45, 'max_html_size' => 2_000_000, 'no_sandbox' => false,]);Was das bewirkt: Bildet ein Snake-Case-Config-Array auf den Konstruktor ab; nicht gesetzte Schlüssel fallen auf Standardwerte zurück, und chrome_binary wird nur angewendet, wenn es ein nicht leerer String ist.
Chrome-Renderer
Abschnitt betitelt „Chrome-Renderer“Mit diesen Typen starten und steuern Sie einen Render: Erstellen Sie eine ChromeRendererConfig-Instanz, übergeben Sie sie an einen ChromeHtmlRenderer und rufen Sie anschließend render() auf, um ein ChromeRenderResult zu erhalten.
| Symbol | Parameter | Standardverhalten | Rückgabe | Wirft oder scheitert mit | Hinweise |
|---|---|---|---|---|---|
new ChromeRendererConfig(?string $chromeBinaryPath = null, int $renderTimeout = 30, string $defaultCss = '', int $maxHtmlSize = 5000000, bool $noSandbox = false) | Pfad zur Binärdatei, Timeout, CSS, HTML-Größenlimit, Sandbox-Flag. | Erkennt Chrome automatisch, wenn der Pfad zur Binärdatei null ist; die Sandbox bleibt aktiv, solange sie nicht deaktiviert wird. | ChromeRendererConfig | keine zu erwarten. | Setzen Sie noSandbox nur, wenn die Laufzeitumgebung es verlangt. |
ChromeRendererConfig::fromArray(array $config) | chrome_binary, render_timeout, default_css, max_html_size, no_sandbox. | Fehlende Werte verwenden die Konstruktor-Standardwerte. | ChromeRendererConfig | Bei Typabweichungen greifen für optionale Schlüssel die Standardwerte. | Passt zu Konfigurations-Arrays im Framework-Stil. |
new ChromeHtmlRenderer(ChromeRendererConfig $config, ?LoggerInterface $logger = null, ?HtmlSecurityPolicyInterface $htmlSecurityPolicy = null) | Config, optionaler Logger, optionale HTML-Richtlinie auf Parse-Ebene. | Nutzt DefaultHtmlSecurityPolicy, wenn keine Richtlinie übergeben wird. | ChromeHtmlRenderer | Chrome-Setup-Fehler treten beim ersten Render auf. | Der Renderer hält bis close() einen Browser-Pool. |
ChromeHtmlRenderer::render(string $html, float $widthPt, float $heightPt = 0) | html: Eingabe-Fragment; widthPt: Papierbreite; heightPt: Zielhöhe oder automatisch. | Berechnet die Inhaltshöhe automatisch, wenn heightPt <= 0. | ChromeRenderResult | ChromeRenderException; Fehlschlag der HTML-Größenvalidierung. | Blockiert Netzwerkanfragen für Subresources über CDP. |
ChromeHtmlRenderer::getHtmlSecurityPolicy() | keine. | Liefert die konfigurierte Richtlinie auf Parse-Ebene. | HtmlSecurityPolicyInterface | keine zu erwarten. | Ergänzt die Chrome-Kontrollen auf Transportebene. |
ChromeHtmlRenderer::close() | keine. | Schließt den Browser-Pool und leert ihn. | void | Browser-Shutdown-Fehler können aus der zugrunde liegenden Bibliothek auftauchen. | Beim Worker-Shutdown aufrufen. |
HTML-Sicherheitsrichtlinie
Abschnitt betitelt „HTML-Sicherheitsrichtlinie“Verwenden Sie diese APIs, wenn Sie externes HTML vor einem Render selbst validieren und einpacken, statt über ChromeHtmlRenderer::render() zu gehen (das sie bereits aufruft).
| Symbol | Parameter | Standardverhalten | Rückgabe | Wirft oder scheitert mit | Hinweise |
|---|---|---|---|---|---|
ChromeSecurityPolicy::validate(string $html, int $maxSize) | HTML-Eingabe und maximale Byte-Größe. | Akzeptiert die Eingabe nur, wenn Größe und unzulässige Konstrukte die Validierung bestehen. | void | ChromeRenderException oder Validierungs-Exception. | Vor dem Browser-Rendern ausführen, wenn Sie externes HTML annehmen. |
ChromeSecurityPolicy::wrapHtml(string $html, int $viewportWidth, string $defaultCss = '') | HTML-Fragment, Viewport-Breite, optionales Standard-CSS. | Erzeugt ein vollständiges Render-Dokument um das Fragment herum. | string | Validierungs- oder String-Konstruktionsfehler. | Hält rendererspezifisches CSS getrennt vom Anwendungs-HTML. |
Ergebnis- und Konvertierungshelfer
Abschnitt betitelt „Ergebnis- und Konvertierungshelfer“Verwenden Sie diese Helfer, um die Ausgabe eines Renders zu lesen (ChromeRenderResult) und zwischen PDF-Punkten und Chrome-CSS-Pixeln umzurechnen, wenn Sie einen Viewport dimensionieren oder die Höhe berechnen.
| Symbol | Parameter | Standardverhalten | Rückgabe | Wirft oder scheitert mit | Hinweise |
|---|---|---|---|---|---|
new ChromeRenderResult(string $pdfData, float $widthPt, float $heightPt, float $contentHeightCssPx) | Rohe PDF-Bytes, Breite, Höhe, gemessene Inhaltshöhe. | Keine Validierung über die typisierten Konstruktor-Eigenschaften hinaus. | ChromeRenderResult | keine zu erwarten. | Wird üblicherweise von ChromeHtmlRenderer::render() zurückgegeben. |
ChromeRenderResult::getPdfData() | keine. | Liefert die rohen, von Chrome erzeugten PDF-Bytes. | string | keine zu erwarten. | Beim Einbetten zusammen mit PdfReader und PageImporter nutzen. |
ChromeRenderResult::getWidthPt() | keine. | Liefert die angeforderte Breite in Punkten. | float | keine zu erwarten. | Dient zur Größenbestimmung des importierten Form-Objekts. |
ChromeRenderResult::getHeightPt() | keine. | Liefert die berechnete oder angeforderte Höhe in Punkten. | float | keine zu erwarten. | Die automatische Höhe enthält einen Puffer für das Print-Layout. |
ViewportCalculator::pointsToCssPx(float $pt) | pt: PDF-Punkte. | Rechnet mit 96 CSS-px je 72 PDF-Punkten um. | int | keine zu erwarten. | Für die Chrome-Viewport-Breite gerundet. |
ViewportCalculator::cssPxToPoints(float $px) | px: CSS-Pixel. | Rechnet mit 72 PDF-Punkten je 96 CSS-px um. | float | keine zu erwarten. | Dient der Berechnung der automatischen Höhe. |
Import- und Parser-APIs
Abschnitt betitelt „Import- und Parser-APIs“Dies ist der zentrale Importpfad: Parsen Sie die Chrome-PDF-Bytes mit PdfReader und übergeben Sie den Reader anschließend an PageImporter::import(), um eine einbettbare Seite zu erhalten; die übrigen PdfReader-Methoden dienen der Diagnose.
| Symbol | Parameter | Standardverhalten | Rückgabe | Wirft oder scheitert mit | Hinweise |
|---|---|---|---|---|---|
new PdfReader(string $data) | data: vollständige PDF-Bytes. | Der Parser läuft erst bei parse(). | PdfReader | keine zu erwarten. | Auf von Chrome erzeugte PDFs ausgelegt. |
PdfReader::parse() | keine. | Parst die Xref-Kette und den Trailer. | void | PdfParseException bei ungültiger PDF-Struktur. | Muss vor dem Zugriff auf object/page aufgerufen werden. |
PdfReader::getObject(int $objNum) | Objektnummer. | Löst das geparste Objekt anhand seiner Nummer auf. | PdfObject | PdfParseException, wenn das Objekt fehlt oder fehlerhaft ist. | Nach parse() verwenden. |
PdfReader::getTrailer() | keine. | Liefert das geparste Trailer-Dictionary. | array | PdfParseException, wenn keine Trailer-Daten verfügbar sind. | Wird von Diagnose und Revisionsanalyse genutzt. |
PdfReader::getObjectNumbers() | keine. | Liefert die geparsten Objektnummern. | array | nach dem Parsen keine zu erwarten. | Nützlich für Importer-Diagnosen. |
PdfReader::getPage(int $pageIndex) | pageIndex: nullbasierter Seitenindex. | Kein implizites Parsen. | PdfObject | PdfParseException, wenn sie fehlt oder außerhalb des Bereichs liegt. | Der Importer verwendet standardmäßig Seite 0. |
PdfReader::getPageContentStream(PdfObject $page) | page: geparstes Seitenobjekt. | Löst den Content-Stream auf. | string | PdfParseException bei ungültigen Streams. | Ein leerer Stream führt zum Fehlschlag des Importers. |
PdfReader::getPageResources(PdfObject $page) | page: geparstes Seitenobjekt. | Löst die Seiten-Ressourcen auf. | array | PdfParseException bei ungültigen Ressourcen. | Das Ressourcen-Dictionary wird mit dem Form-Objekt eingebettet. |
PdfReader::getPageMediaBox(PdfObject $page) | page: geparstes Seitenobjekt. | Greift bei Abwesenheit auf A4-ähnliche Maße zurück. | array | Parser-Fehler. | Liefert Koordinaten im PDF-Raum. |
PdfReader::resolveRef(mixed $value) | Geparster Wert. | Löst Objektreferenzen rekursiv auf, soweit zutreffend. | mixed | PdfParseException bei ungültigen Referenzen. | Interner Helfer, der für Importer-Workflows freigegeben ist. |
PdfReader::collectPageResources(PdfObject $page) | page: geparstes Seitenobjekt. | Durchläuft die Ressourcenreferenzen der Seite. | array | Parser-Fehler. | Dient dazu, abhängige Objekte mit importierten Seiten einzubetten. |
PdfReader::getRevisionCount() | keine. | Zählt die geparsten inkrementellen Revisionen. | int | nach dem Parsen keine zu erwarten. | Nützlich für signierte oder inkrementell aktualisierte PDFs. |
PdfReader::getRevisionXRef(int $index) | Nullbasierter Revisionsindex. | Liefert eine Revisions-Xref-Tabelle. | RevisionXRefTable | PdfParseException bei ungültigem Index. | Für Low-Level-Revisionsdiagnosen nutzen. |
PdfReader::getRevisions() | keine. | Liefert alle geparsten Revisions-Xref-Tabellen. | array | nach dem Parsen keine zu erwarten. | Schreibgeschützte Sicht auf den Parser-Zustand. |
PageImporter::import(PdfReader $reader, int $pageIndex = 0) | Geparster Reader und nullbasierter Seitenindex. | Importiert die erste Seite, wenn er weggelassen wird. | ImportedFormXObject | PdfParseException, wenn die Seite nicht extrahiert werden kann. | Sammelt Content-Stream, Media-Box, Ressourcen und referenzierte Objekte. |
Parser-Hilfsobjekte
Abschnitt betitelt „Parser-Hilfsobjekte“Dies sind die Value-Objects und Helfer, die der Parser zurückgibt oder intern nutzt. Verwenden Sie sie, wenn Sie importierte Objekte, Ressourcen, Streams oder Revisionstabellen untersuchen.
| Symbol | Parameter | Standardverhalten | Rückgabe | Wirft oder scheitert mit | Hinweise |
|---|---|---|---|---|---|
new ImportedFormXObject(string $contentStream, array $mediaBox, array $embeddedObjects, array $resourcesDict) | Dekodierter Content-Stream, Media-Box, eingebettete Objekte, Ressourcen-Dictionary. | Speichert eine in sich geschlossene importierte Form-Payload. | ImportedFormXObject | keine zu erwarten. | Wird üblicherweise von PageImporter::import() zurückgegeben. |
ImportedFormXObject::getWidth() | keine. | Liefert die Breite der importierten Form in Punkten. | float | keine zu erwarten. | Verwenden Sie sie, wenn Sie Chrome-Ausgabe auf einer Seite platzieren. |
ImportedFormXObject::getHeight() | keine. | Liefert die Höhe der importierten Form in Punkten. | float | keine zu erwarten. | Render-Ergebnisse mit automatischer Höhe geben diesen Wert weiter. |
ImportedFormXObject::getEmbeddedObjects() | keine. | Liefert die Objekte, die die importierte Form benötigt. | array | keine zu erwarten. | Der Writer-Code nutzt diese Objekte, um Ressourcen zu erhalten. |
ImportedFormXObject::getResourcesDict() | keine. | Liefert das importierte Ressourcen-Dictionary. | array | keine zu erwarten. | Wird beim Aufbau des Form-XObject genutzt. |
ImportedFormXObject::getMediaBox() | keine. | Liefert die importierte Media-Box. | array | keine zu erwarten. | Für Platzierungsdiagnosen nutzen. |
ImportedFormXObject::getContentStream() | keine. | Liefert den Content-Stream der importierten Seite. | string | keine zu erwarten. | Gedacht für die Integration in writer/import. |
new PdfObject(int $objectNumber, int $generation, array $dictionary, ?string $rawStreamData = null, ?string $decodedStreamData = null, ?string $rawDictionaryBytes = null) | Objektnummer, Generation, geparstes Dictionary, optionale Stream-Bytes, optionaler dekodierter Stream, optionale rohe Dictionary-Bytes. | Speichert den geparsten Objektzustand. | PdfObject | keine zu erwarten. | Wird von Parser-Interna erzeugt. |
PdfObject::getRawDictionaryBytes() | keine. | Liefert die originalen Dictionary-Bytes, wenn vorhanden. | `string | null` | keine zu erwarten. |
PdfObject::getRawStreamData() | keine. | Liefert die undekodierten Stream-Bytes, wenn vorhanden. | `string | null` | keine zu erwarten. |
PdfObject::getDictionary() | keine. | Liefert die geparsten Dictionary-Einträge. | array | keine zu erwarten. | Schreibgeschützte Parser-Sicht. |
PdfObject::get(string $key) | Dictionary-Schlüssel. | Liefert null, wenn der Schlüssel fehlt. | mixed | keine zu erwarten. | Bewahrt Aufrufer davor, rohe Dictionaries selbst zu parsen. |
PdfObject::getRef(string $key) | Dictionary-Schlüssel. | Liefert ein Objektreferenz-Tupel, wenn der Wert eine Referenz ist. | `array | null` | keine zu erwarten. |
PdfObject::getArray(string $key) | Dictionary-Schlüssel. | Liefert einen Array-Wert oder ein leeres Array, wenn keiner verfügbar ist. | array | keine zu erwarten. | Komfort-Wrapper für Dictionary-Einträge mit Array-Wert. |
PdfObject::hasStream() | keine. | Prüft, ob Stream-Bytes vorhanden sind. | bool | keine zu erwarten. | Unterscheidet reine Dictionary-Objekte. |
PdfObject::getType() | keine. | Liest /Type. | `string | null` | keine zu erwarten. |
PdfObject::getSubtype() | keine. | Liest /Subtype. | `string | null` | keine zu erwarten. |
RevisionExtractor::extractRevision(string $pdfData, PdfReader $reader, int $revision) | PDF-Bytes, ein geparster Reader und der nullbasierte Revisionsindex. | Extrahiert eine inkrementelle Revision. | string | PdfParseException bei ungültigen Grenzen. | Wird von Parser-Tests und -Diagnosen genutzt. |
RevisionExtractor::getRevisionBoundaries(string $pdfData, PdfReader $reader) | PDF-Bytes und ein geparster Reader. | Ermittelt die Byte-Bereiche für inkrementelle Revisionen. | array | PdfParseException bei fehlerhafter Xref-Struktur. | Hilft beim Analysieren signierter oder inkrementell aktualisierter PDFs. |
| `StreamDecoder::decode(string $data, string | array $filter)` | Stream-Bytes und ein oder mehrere PDF-Filter. | Wendet die Filter der Reihe nach an. | string | PdfParseException bei nicht unterstützten oder ungültigen Filtern. |
new ResourceCollector(PdfReader $reader) | Geparster Reader. | Startet mit einer leeren Menge gesammelter Objekte. | ResourceCollector | keine zu erwarten. | Wird von PdfReader::collectPageResources() genutzt. |
ResourceCollector::traverse(mixed $value, int $depth = 0) | Geparster Wert und Rekursionstiefe. | Durchläuft Ressourcenreferenzen bis zu internen Tiefenlimits. | void | Parser-Fehler bei ungültigen Referenzen. | Interner Helfer für den Ressourcenabschluss beim Seitenimport. |
ResourceCollector::getCollected() | keine. | Liefert die gesammelten Ressourcenobjekte. | array | keine zu erwarten. | Nach traverse() aufrufen. |
new RevisionXRefTable(int $index, int $xrefOffset, array $xrefEntries, array $trailer, ?int $prevOffset) | Revisionsindex, Xref-Offset, Xref-Einträge, Trailer, optionaler vorheriger Offset. | Unveränderlicher Snapshot einer inkrementellen Revision. | RevisionXRefTable | keine zu erwarten. | Wird von Parser-Interna erzeugt. |
RevisionXRefTable::getObjectNumbers() | keine. | Liefert die in der Revisionstabelle aktiven Objektnummern. | array | keine zu erwarten. | Low-Level-API für Revisionsdiagnosen. |
RevisionXRefTable::getActiveObjectCount() | keine. | Zählt die aktiven Objekte. | int | keine zu erwarten. | Nützlich für Parser-Assertions. |
RevisionXRefTable::hasRootUpdate() | keine. | Meldet, ob die Revision das Dokument-Root aktualisiert. | bool | keine zu erwarten. | Nützlich für die Analyse inkrementeller Updates. |
RevisionXRefTable::getSize() | keine. | Liefert den Größenwert der Xref-Tabelle. | int | keine zu erwarten. | Spiegelt die geparsten PDF-Xref-Metadaten wider. |
Low-Level-Tokenizer- und Xref-APIs
Abschnitt betitelt „Low-Level-Tokenizer- und Xref-APIs“Verwenden Sie diese APIs nur für tiefe Parser-Diagnosen oder zur Fixture-Reduktion. Sie legen den Lexer und die Cross-Reference-Maschinerie unter PdfReader offen und sind für den normalen Import nicht nötig.
| Symbol | Parameter | Standardverhalten | Rückgabe | Wirft oder scheitert mit | Hinweise |
|---|---|---|---|---|---|
new PdfTokenizer(string $data, int $offset = 0) | PDF-Bytes und optionaler Anfangs-Offset. | Beginnt bei Offset null. | PdfTokenizer | keine zu erwarten. | Lexikalischer Low-Level-Parser. |
PdfTokenizer::getOffset() | keine. | Liefert den aktuellen Byte-Offset. | int | keine zu erwarten. | Diagnose-Helfer für Parser-Fehler. |
PdfTokenizer::setOffset(int $offset) | Byte-Offset. | Verschiebt den Tokenizer-Cursor. | void | PdfParseException bei ungültigem Offset. | Vorsichtig verwenden; Aufrufer verwalten den Parser-Zustand selbst. |
PdfTokenizer::isEof() | keine. | Prüft, ob der Cursor das Ende erreicht hat. | bool | keine zu erwarten. | Low-Level-Helfer für die Parser-Schleife. |
PdfTokenizer::skipWhitespace() | keine. | Überspringt PDF-Whitespace und -Kommentare. | void | keine zu erwarten. | Wird vor Token-Lesevorgängen genutzt. |
PdfTokenizer::readToken() | keine. | Liest das nächste skalare Token. | `string | int | float |
PdfTokenizer::readName() | keine. | Liest ein PDF-Name-Objekt. | string | PdfParseException bei fehlerhaftem Namen. | Dekodiert Name-Escapes. |
PdfTokenizer::readLiteralString() | keine. | Liest einen Literal-String. | string | PdfParseException bei fehlerhaftem String. | Behandelt verschachtelte Klammern und Escapes. |
PdfTokenizer::readHexString() | keine. | Liest einen Hexadezimal-String. | string | PdfParseException bei fehlerhaftem Hex. | Füllt Hex ungerader Länge gemäß den Parser-Regeln auf. |
PdfTokenizer::readNumber() | keine. | Liest einen Integer oder Float. | `int | float` | PdfParseException bei ungültiger Zahl. |
PdfTokenizer::readKeyword() | keine. | Liest ein PDF-Keyword. | string | PdfParseException bei ungültigem Keyword. | Hält das Keyword-Parsen zentralisiert. |
PdfTokenizer::readDictionary() | keine. | Liest ein PDF-Dictionary. | array | PdfParseException bei fehlerhaften Dictionaries. | Wird für Objekte, Streams und Trailer genutzt. |
PdfTokenizer::readArray() | keine. | Liest ein PDF-Array. | array | PdfParseException bei fehlerhaften Arrays. | Rekursiver Parser-Helfer. |
PdfTokenizer::readValue() | keine. | Liest jeden unterstützten PDF-Wert. | mixed | PdfParseException bei fehlerhaften Werten. | Gängiges Parser-Primitiv. |
PdfTokenizer::readStreamData(int $length) | Stream-Länge. | Liest genau die angeforderten Stream-Bytes. | string | PdfParseException bei ungültigen Stream-Grenzen. | Wird genutzt, nachdem die Stream-Länge aus dem Dictionary aufgelöst wurde. |
PdfTokenizer::peek(int $length = 1) | Byte-Anzahl. | Liest voraus, ohne weiterzurücken. | string | keine zu erwarten. | Nützlich für Parser-Verzweigungen. |
PdfTokenizer::searchBackward(string $pattern, int $startFrom = 0) | Muster und optionaler Start-Offset. | Sucht rückwärts vom Ende oder vom angegebenen Offset aus. | `int | false` | keine zu erwarten. |
PdfTokenizer::readLine() | keine. | Liest eine Zeile ab dem aktuellen Offset. | string | keine zu erwarten. | Low-Level-Scanner-Helfer. |
CrossRefParser::parseXRefTable(string $data, int $offset) | PDF-Bytes und Offset der Xref-Tabelle. | Parst die Einträge einer klassischen Xref-Tabelle. | array | PdfParseException bei fehlerhaften Xref-Daten. | Low-Level-Parser-API. |
CrossRefParser::parseXRefStream(string $data, int $offset) | PDF-Bytes und Offset des Xref-Streams. | Parst die Einträge eines Xref-Streams. | array | PdfParseException bei fehlerhaften Stream-Daten. | Unterstützt moderne PDF-Xref-Streams. |
Optionale Factories und Browser-Pool
Abschnitt betitelt „Optionale Factories und Browser-Pool“EInvoiceServiceFactory löst optionale Premium-E-Invoice-Verträge lazy auf (und liefert null, wenn sie fehlen). BrowserPool ist der renderereigene Chrome-Lifecycle-Helfer, den Sie nur in langlebigen Workern direkt verwalten.
| Symbol | Parameter | Standardverhalten | Rückgabe | Wirft oder scheitert mit | Hinweise |
|---|---|---|---|---|---|
EInvoiceServiceFactory::makeEmbedder() | keine. | Liefert null, sofern die Premium-Pro-E-Invoice-Unterstützung nicht installiert ist. | `EmbedderInterface | null` | Fehler beim Erzeugen des optionalen Pakets. |
EInvoiceServiceFactory::makeValidator() | keine. | Liefert null, sofern die Premium-Enterprise-Validierungsunterstützung nicht installiert ist. | `ValidatorInterface | null` | Fehler beim Erzeugen des optionalen Pakets. |
EInvoiceServiceFactory::makeDefaultProfile() | keine. | Liefert das Standard-E-Invoice-Profil, wenn verfügbar. | `ProfileInterface | null` | Fehler im optionalen Paket. |
EInvoiceServiceFactory::makeSchematronRunner() | keine. | Liefert null, sofern die Premium-Enterprise-Schematron-Unterstützung nicht installiert ist. | `SchematronRunnerInterface | null` | Fehler beim Erzeugen des optionalen Pakets. |
new BrowserPool(ChromeRendererConfig $config, ?LoggerInterface $logger = null) | Renderer-Config und optionaler Logger. | Der Browser startet lazy beim ersten getBrowser(). | BrowserPool | bis zum Browser-Start keine zu erwarten. | Lifecycle-Helfer des Renderers. |
BrowserPool::getBrowser() | keine. | Startet die aktuelle Chrome-Browser-Instanz oder liefert sie zurück. | Browser | Fehler beim Browser-Start. | Lifecycle-Helfer des Renderers. |
BrowserPool::incrementRenderCount() | keine. | Erhöht den Render-Zähler und rotiert, wenn die Pool-Richtlinie es verlangt. | void | Fehler im Browser-Lifecycle. | Wird in langlebigen Workern genutzt. |
BrowserPool::close() | keine. | Schließt die verwaltete Browser-Instanz. | void | Fehler beim Browser-Shutdown. | Beim Worker-Shutdown aufrufen. |
Entwicklungshinweise
Abschnitt betitelt „Entwicklungshinweise“- Der Renderer ist keine Browser-Sandbox für nicht vertrauenswürdiges HTML. Validieren Sie vor dem Rendern Größe, Ressourcenrichtlinie und Aufruferautorisierung.
- Die Parser-APIs sind bewusst schmal gehalten. Sie dienen dem Import von Chrome-Ausgabe, nicht der allgemeinen PDF-Reparatur.
- Schließen Sie Renderer in langlebigen Workern explizit.