Dieser deutsche Artikel behandelt PDFlibPas: text, image, and font extraction in Delphi für Teams, die mit Delphi, C++Builder, Lazarus/FPC und losLab-Komponenten arbeiten
Der Fokus liegt auf praxisnahen Entscheidungen, Fallstricken und Prüfpunkten, damit die Lösung im produktiven Einsatz verlässlich bleibt
Das tatsächliche Risiko besteht darin, dass Verarbeitungsergebnisse nur mit bloßem Auge beurteilt werden, ohne Konfigurationsversionen, Validierungsnachweise und reproduzierbare Proben. Eine zuverlässige Implementierung wandelt diese Unsicherheit in benannte Konfigurationen, messbare Prüfungen und Regressionsdateien um
Schreiben Sie Text-, Bild- und Schriftartenextraktion in den PDF-Verarbeitungsvertrag
PDFlibPas pflegt beide Schichten hinter einem Klammerpaar: BeginTag öffnet ein Strukturelement und startet die Marked-Content-Sequenz, Zeichenaufrufe landen darin, und EndTag schließt beides. Die Buchführung — MCIDs, Parent Tree, Seitenreferenzen — geschieht intern und entfernt den fehleranfälligsten Teil von handgebautem Tagging
- image extraction format, color conversion, compression retention, and naming
- font subset naming, encoding diagnostics, and missing ToUnicode handling
- confidence flags for OCR layers, hidden text, clipped content, and rotated pages
- Welche Warteschlange bekommt sie unter diesen Voraussetzungen: Dunkelverarbeitung, manuelle Prüfung oder Quarantäne
- Aufbewahrungsregeln für Protokolle, Diagnosepakete, temporäre Dateien, Zertifikate und Kundendaten
Identifizieren Sie zuerst den Dokumentenstatus, bevor Sie die Text-, Bild- und Schriftartenextraktion ausführen
Gezeichnete Gitterlinien bedeuten außerhalb des Bildschirms nichts. Was Screenreader navigieren, sind Strukturbeziehungen: welche Zellen Kopfzellen sind, wofür jeder Kopf gilt und wie Datenzellen in unregelmäßigen Layouts an Köpfe gebunden werden. Die Strukturelement-Attributaufrufe behandeln alle drei:
- extract images with page location, dimensions, color space, and original object data when needed
- classify fonts by subset, embedded status, and encoding behavior
- produce an analysis report that distinguishes facts from inferred reading order
- Ungetaggte, aber textreiche Dateien. Heuristische Reihenfolge ist für lineare Berichte meist richtig und für Layouts mit Seitenleisten oder Zwischenzitaten falsch. Kennzeichnen Sie die Reihenfolge in der UI und im Diagnoselog als geschätzt
- Reine Bildscans. Es gibt überhaupt keine Textebene. Erkennen Sie sie über leere Reading Units und führen Sie den Benutzer zu einem vorgelagerten OCR-Schritt, statt den Reader nichts sprechen zu lassen
Nachweise zur Unterstützung von Go-Live und Fehlerbehebung für Text-, Bild- und Schriftartenextraktion
Annotation-Navigation hat einen eigenen Knopf. PDF/UA erwartet, dass die Tastaturnavigation durch Formularfelder und Links der Strukturreihenfolge folgt, und SetTabOrderMode schreibt den seitenbezogenen Tab-Order-Eintrag, den Viewer beachten, während GetTabOrderMode für das Audit eingehender Dateien verfügbar ist. Es ist genau die Art Anforderung, die niemand bemerkt, bis ein reiner Tastaturnutzer den Fehler meldet, und sie kostet einen Aufruf pro Dokument
- warnings for hidden, clipped, rotated, or overlapping content
- terminology snapshot: text extraction, image extraction, font resource, ToUnicode
- Radiogruppen mit gemeinsamem Namen. Ein Feld, viele Widgets. Die Wertzuweisung wählt, welches Widget angehakt erscheint, und UI-Code pro Widget, der one-name-one-rectangle annimmt, zeichnet den falschen Fokusring
- Berechnete Felder. Summen, die Dokument-JavaScript berechnet, aktualisieren sich über Feldereignisse. Ein programmatisches Füllen, das Ereignisse umgeht, sollte entweder neu berechnen oder die berechneten Felder explizit überschreiben — ein Formular auszuliefern, in dem Positionen und Summe widersprechen, ist schlechter als beide Optionen
- Einsatzfall vor der Codeänderung festlegen
Text-, Bild- und Schriftartenextraktion ist kein einzelner PDF-Aufruf
Die PDFlibPas-Integration sollte Quell-PDF, Seitenobjekte, Schriftarten, Formulare, Signaturen, Berechtigungen, Validierer und Ziel-Viewer im selben Projektmodell platzieren. So kann das Team bei Unstimmigkeiten bei Text-, Bild- und Schriftartenextraktion erklären, warum Dokumente akzeptiert, geändert, abgelehnt oder archiviert wurden
Welche Informationen sollte ein Support-Paket enthalten
Copyright 2026 losLab Software
- warnings for hidden, clipped, rotated, or overlapping content
- terminology snapshot: text extraction, image extraction, font resource, ToUnicode
- Radiogruppen mit gemeinsamem Namen. Ein Feld, viele Widgets. Die Wertzuweisung wählt, welches Widget angehakt erscheint, und UI-Code pro Widget, der one-name-one-rectangle annimmt, zeichnet den falschen Fokusring
- Berechnete Felder. Summen, die Dokument-JavaScript berechnet, aktualisieren sich über Feldereignisse. Ein programmatisches Füllen, das Ereignisse umgeht, sollte entweder neu berechnen oder die berechneten Felder explizit überschreiben — ein Formular auszuliefern, in dem Positionen und Summe widersprechen, ist schlechter als beide Optionen
- Einsatzfall vor der Codeänderung festlegen
- Ergebnis mit kleinen Testdateien prüfen
Technische Kernpunkte zur Überprüfung: Text-, Bild- und Schriftartenextraktion
Home · Suche · losLab.com
- PDF drawing order may not equal human reading order
- ligatures and custom encodings can make copied text differ from visible text
- images may be masks, soft masks, or repeated resources rather than standalone pictures
- OCR layers can contain stale or misaligned text over scanned pages
- Entscheidung: Aufbewahrungsregeln für Protokolle, Diagnosepakete, temporäre Dateien, Zertifikate und Kundendaten. Konzentrieren Sie sich bei der Implementierung auf das vorherige Lesen der Quelldateistruktur zur Bestätigung von Seitenzahl, Berechtigungen, Formularen, Signaturen, Schriftarten oder Standardsicherheitsstatus. Die Abnahmebelege sollten Warnungen bezüglich Berechtigungen, Schriftarten, Formularen, Signaturen, Standardvalidierung oder Seitenstruktur enthalten. Die Regressionsproben müssen auch abdecken, dass große, gescannte, verschlüsselte Dateien und Dateien mit externen Ressourcen separate Kapazitäts- und Sicherheitsrichtlinien erfordern
- PDF drawing order may not equal human reading order
- ligatures and custom encodings can make copied text differ from visible text
Grenzfälle bei Text-, Bild- und Schriftartenextraktion, die leicht Probleme aufdecken
Diese Situationen decken am ehesten Probleme bei Implementierungen auf Beispielniveau auf und sollten jeweils in benannte Regressionsproben aufgenommen werden
- Run the workflow on an empty file, a normal customer file, and a worst-case file
- Open the generated PDF with the target viewer, validator, printer, or downstream application
- Log product version, profile version, input hash, output path, elapsed time, and warning count
- Keep passwords, certificates, temporary files, and customer data under explicit retention rules
- Add regression documents when a customer file exposes a new edge case
Product documentation
PDFlibPas
Delphi-Codebeispiel
Das folgende Delphi-Beispiel zeigt die Umsetzung dieses Themas in der Geschäftsdienstleistungsebene. Wenn Sie Richtlinienprüfungen, Protokollierung und Validierung außerhalb der Komponentenaufruf-Grenzen platzieren, werden nachfolgende Tests und Fehlerbehebungen stabiler
procedure ExtractForIndexing(const FileName, OutputDir: string);
var
Pdf: TPDFlib;
begin
Pdf := TPDFlib.Create;
try
Pdf.LoadFromFile(FileName, '');
SaveExtractedText(OutputDir, ExtractDocumentText(Pdf));
SaveEmbeddedImages(OutputDir, ExtractDocumentImages(Pdf));
SaveFontInventory(OutputDir, BuildFontInventory(Pdf));
finally
Pdf.Free;
end;
end;
Checkliste für den Go-Live
- Führen Sie den Prozess jeweils mit einer leeren Datei, einer normalen Kundendatei und einem PDF für den schlimmsten Fall aus
- Öffnen Sie die Ausgabe mit Ziel-Viewern, Validierern, Druckprozessen oder Downstream-Systemen
- Produktversion, Konfigurationsversion, Eingabe-Hash, Ausgabepfad, benötigte Zeit und Anzahl der Warnungen protokollieren
- Festlegung klarer Aufbewahrungsregeln für Passwörter, Zertifikate, temporäre Dateien und Kundendaten
- Wenn Kunden-PDFs neue Grenzfälle offenbaren, fügen Sie die Proben dem Regressionssatz hinzu
Relevante Produktdokumentation
Bevor Sie diesen Prozess in ein wiederverwendbares internes Werkzeug kapseln, lesen Sie bitte die Produktseite und die API-Dokumentation:
Zusätzliche Codebeispiele
var
ImgList, I: Integer;
begin
Pdf.SelectPage(1);
ImgList := Pdf.GetPageImageList(0);
for I := 0 to Pdf.GetImageListCount(ImgList) - 1 do
begin
Writeln(Pdf.GetImageListItemFormatDesc(ImgList, I, 0));
Pdf.SaveImageListItemDataToFile(ImgList, I, 0,
Format('page1-img%.2d.bin', [I]));
end;
Pdf.ReleaseImageList(ImgList);
end;var
I: Integer;
begin
Pdf.FindFonts;
for I := 1 to Pdf.FontCount do // font indexes start at 1, not 0
if Pdf.SelectFont(Pdf.GetFontID(I)) = 1 then
Writeln(Format('%s type=%d embedded=%d subset=%d',
[Pdf.FontName, Pdf.FontType,
Pdf.GetFontIsEmbedded, Pdf.GetFontIsSubsetted]));
end;