Versionshinweise für PDF Library for Delphi
Versionsverlauf
« Zurück zum Dokumentationsindex
Versionsverlauf der sichtbaren Funktionen, Korrekturen, PDF-Erweiterungen, Kompatibilitätsänderungen und Dokumentationsänderungen von PDF Library for Delphi
Letzte Veröffentlichung
- Neueste Version: v3.555.0; Veröffentlichungsdatum: 2026-10-10
Version 3.555.0
Hinzugefügt
- Windows 11 on ARM unterstützt native Builds aus dem Quellcode für Free Pascal ARM64 und Delphi ARM64EC, mit getrennten Build-Ausgaben für Bibliothek und DLL
Geändert
- Windows ARM nutzt System-Provider für AES CBC/GCM und JPEG, portable Kompression sowie eine architekturgerechte OpenJPEG-Shared-Library für JPEG 2000
- Die Windows-ARM-DLL stellt benannte C-ABI-Exporte und positive opake Instanz-Handles bereit, ohne 64-Bit-Zeiger zu kürzen
Behoben
- XMP unter Delphi ARM64EC verwendet namensraumbewusste MSXML-Schnittstellen mit begrenztem XML-Parsing, um Fehler in spätgebundenen OLE-Aufrufen zu vermeiden
Version 3.554.0
Hinzugefügt
- Die native Headless-Unterstützung erstreckt sich auf Linux ARM64 und macOS x64, mit architekturgerechten FPC-Builds und Delphi-Dylibs für Intel-macOS
- Die nativen Verifikations-Tools unterstützen Linux und macOS auf x64 und ARM64
Behoben
- Intel-macOS wählt die korrekten nativen Speicherorte der OpenSSL-, Cairo-, Fontconfig- und OpenJPEG-Provider statt der Apple-Silicon-Pfade
- Das Linking von Delphi für Intel-macOS löst absolute Eingaben von Systembibliotheken und Frameworks gegen den ausgewählten Windows-SDK-Cache auf, wenn LLVM LLD zum Einsatz kommt
Version 3.553.1
Hinzugefügt
- Delphi macOS ARM64 unterstützt das native Bearbeiten und Roundtrips von XMP-Metadaten, einschließlich benutzerdefinierter Eigenschaften, Identifikatoren für Standards und des Erhalts nicht zugehöriger Namespaces
Behoben
- Natives PFX-Signieren und RFC-3161-Zeitstempel von Delphi unter macOS wählen den macOS-OpenSSL-Provider; RSA- und EC-PDF-Signaturen, explizite Vertrauensketten, Signaturzeitstempel und Dokumentzeitstempel werden auf ARM64 verifiziert
- Native XMP-Lade-/Speicherzyklen bewahren einen einzelnen Paketumschlag, statt Processing Instructions anzuhäufen
Version 3.553.0
Hinzugefügt
- Delphi kann jetzt die dynamische Headless-Bibliothek für macOS ARM64 bauen, mit denselben 880 C-Einstiegspunkten wie der native Free-Pascal-Build
- Das Delphi-macOS-Backend nutzt native Schriften, Cairo-Rendering, OpenSSL-Verschlüsselung und Digests, System-zlib und libcurl, OpenJPEG sowie ImageIO für JPEG-Kodierung und -Dekodierung
Behoben
- Dateizugriff, Ressourcensuche, binäre Strukturen fester Breite und native Codec-Bindings unter macOS verwenden jetzt plattformkorrekte Deklarationen
- Das Hintergrund-Rendering verwendet unter macOS ein portables Pause-Ereignis
- Delphi unter macOS entschlüsselt verschlüsselte PDF-Zeichenfolgen und Objekt-Streams korrekt, ohne ihre Eingabepuffer während der Dekodierung freizugeben
Version 3.552.2
Behoben
- Ältere Delphi-Compiler-Kompatibilität für Rechnungsvalidierung und OCR-Provider wiederhergestellt, einschließlich Win32- und Win64-Builds der Trial-Bibliothek
Version 3.552.1
Behoben
- Puffer der dynamischen macOS-Bibliothek legen jetzt ihre tatsächlichen Daten offen, bewahren eingebettete Nullbytes und melden erfolgreiche Freigaben korrekt
- Instanz-Handles der dynamischen Bibliothek bleiben auf 64-Bit-Zielen gültig, ohne Objektadressen zu kürzen oder freigegebene Handles wiederzuverwenden
- Das Entladen der Bibliothek gibt ausstehende Instanzen und Puffer frei
Version 3.552.0
Hinzugefügt
- Headless-PDF-Erzeugung, Laden, Text-Workflows und Cairo-Bitmap-Rendering nativ unter Free Pascal auf Linux x86_64 und macOS arm64, mit Systemschriftarten und nativen PNG-, JPEG- und JPEG-2000-Providern
- Native OpenSSL-Verschlüsselung, Digests, PKCS12-Signierung und CMS-Verifizierung, mit expliziten Zertifikats-Vertrauensankern und geprüften Verifikationszeiten
- Eingebauter libcurl-HTTP-Bereichszugriff und RFC-3161-Zeitstempel-Workflows auf nativen Free-Pascal-Zielen, einschließlich Signaturzeitstempel-Attributen und Dokumentzeitstempel-Prüfung
- Natives Parsen und Schreiben von XMP-Metadaten bewahrt namensraumbasierte Eigenschaften und verwirft DTDs sowie überdimensioniertes oder tief verschachteltes XML vor dem DOM-Aufbau
Behoben
- Natives Band-Bitmap-Rendering initialisiert die Seitentransformation und bewahrt Cairo-Antialiasing an Bandgrenzen
- Gemeinsame Zeitstempel-, Validierungs- und Tagging-Deklarationen erfordern keinen optionalen PDFium-Build mehr
Version 3.551.0
Hinzugefügt
- Exakter Unicode-Inhaltsersatz bewahrt umgebende Zeichen, vorhandene TJ-Abstände und nachfolgende Textanker, unterstützt Löschen und verifizierte Ersetzungsschriften und meldet nicht unterstützte Zuordnungen, bevor ausgewählter Seitentext ersetzt wird
- Strukturierte Extraktion folgt der getaggten Lesereihenfolge, löst semantische Rollen und Namespaces auf, erkennt Spalten und Seitenelemente und behält leere, zusammengeführte und seitennübergreifende Tabellenzellen in JSON-, CSV-, Markdown- und DOCX-Exporten
- Optionale Tesseract-OCR-Adapter unterstützen hOCR- und TSV-Ergebnisse, Ausrichtungs-Konfidenz und Basislinien, mit expliziten Grenzen und Diagnose pro Verarbeitungsstufe
- OCR-Textebenen können vorhandenen Text auslassen oder nur zuvor von der Bibliothek angelegte Ebenen ersetzen und bewahren dabei Seitenpixel und gemeinsam genutzten Inhalt
- Neue Delphi-, DLL- und ActiveX-Steuerelemente bieten strukturierte Analyseoptionen, OCR-Konfiguration und Diagnose für die exakte Ersetzung
Geändert
- Strukturiertes JSON verwendet Schema-Version 2 mit stabilen semantischen Knoten-Identifikatoren, Lesereihenfolge-Quellen, Tabellenspannen und Inferenz-Konfidenz
- Die Unicode-Ersetzung verwirft unvollständige Zuordnungen, teilweise Glyphen-Cluster und nicht unterstützte Quellen, ohne Schrift-Bytes zu erraten
Behoben
- Numerische TJ-Abstände wenden die horizontale Skalierung jetzt einmalig in Rendering und Textgeometrie an
- Die Schriftmessung wählt die tatsächliche Ressource neu aus, wenn Sammlungen gemeinsam genutzt werden, und verwendet die direkte Schriftanalyse innerhalb jedes Ressourcenbereichs wieder
- Inhalts-Fingerabdrücke bewahren ihre Hash-Werte, wenn Bereichs- und Überlaufprüfungen aktiviert sind
Version 3.550.0
Geändert
- Der SVG-Export bewahrt nun die Zeichenreihenfolge der Seite, verschachtelten Form-Inhalt, exakte Beschneidungspfade und transformierte Strichgeometrie
Hinzugefügt
- Eingeschränkter nativer Raster-Fallback behandelt nicht unterstützte Zeichenoperationen, wenn die Exporteinstellungen einen Hintergrund-Snapshot erlauben
- GetLastSVGExportDiagnostics meldet ausgelassene Pixel, Approximationen und Raster-Fallback, einschließlich sichtbarer Annotationsdarstellungen außerhalb des Seiteninhalts-Exports
Version 3.549.0
Hinzugefügt
- Versioniertes Rechnungs-XML-Schema und Schematron-Validierung akzeptieren optionale Provider und liefern Phasenabschluss, Regel-Identifikatoren, Feldpfade, Schweregrade und Engine-Diagnose
- Eingebettete Rechnungs-Geschäftsvalidierung liest den ausgewählten Anhang mit begrenzter Dekodierung und verwirft fehlende oder mehrdeutige Dateinamen
- Delphi, DLL und ActiveX können xmllint- und SaxonJ-Validierung mit expliziten Regeldateien, Zeitlimits und Ausgabelimits ausführen
Version 3.548.0
Hinzugefügt
- PDF/UA-2-Leseprüfungen validieren Identifikation, PDF-Version, Namespace-Referenzen, Rollenzuordnungen, Dokumentwurzeln und Struktur-Elternelemente über explizite oder automatische Profilauswahl
- Delphi-, DLL- und ActiveX-APIs wählen ein PDF/UA-Ziel innerhalb einer wiederverwendbaren Validierungs-Pipeline aus und bieten geprüfte, nicht verifizierte und begrenzte Validierungsabdeckung
Geändert
- Validierungs- und Preflight-Berichte identifizieren PDF/UA-2 unabhängig von PDF/UA-1 und machen deutlich, dass das Bestehen der implementierten Prüfungen keine vollständige Zertifizierung der Barrierefreiheit bedeutet
Version 3.547.0
Hinzugefügt
- Visueller Vergleich gerenderter Seiten mit Kanaltoleranz, ignorierten Bereichen, geänderten Flächen, Pixelzählern, Differenzmasken und Overlays
- Visueller Dokumentenvergleich richtet identische Seitenbilder um eingefügte und entfernte Seiten herum aus und meldet geänderte oder neu dimensionierte Seitenpaare
- Visueller Dateivergleich über Delphi, DLL und ActiveX liefert einen strukturierten JSON-Bericht
Version 3.546.0
Hinzugefügt
- Arlington-Validierungsabdeckungsberichte unterscheiden vollständige Durchläufe, bekannte Fehlfälle, unvollständige Regelunterstützung und Operationsfehler über Delphi-, DLL- und ActiveX-APIs
Behoben
- Nicht unterstützte Modellausdrücke erzeugen nun explizite Diagnose, statt stillschweigend zu einem erfolgreichen Validierungsergebnis beizutragen
Version 3.545.0
Hinzugefügt
- Die C#- und VB.NET-DLL-WorkflowWorkbench-Beispiele zeigen die Erzeugung mehrseitiger Berichte, Textextraktion, Aufteilen und Zusammenführen von Seiten, binäre Speicherübertragungen und explizites Besitzmanagement nativer Ressourcen
- DocumentInspectionWorkbench bietet nun Seiteninventare und konfigurierbare Diagnose-Schwellenwerte unter Delphi, C++Builder und Lazarus, mit generierten Eingaben für einen eigenständigen ersten Lauf
Geändert
- Das C++-DLL-LinkDemo erzeugt nun ein vollständiges Navigationsdokument mit Seitenverknüpfungen und Outlines, akzeptiert explizite DLL- und Ausgabepfade, prüft das gespeicherte Dokument und meldet Fehler über Prozess-Exitcodes
- WorkflowGallery prüft sein gespeichertes Dokument und den HTTP-Antwortkörper durch Round-Trip-Prüfungen und veröffentlicht einen Verifikationsbericht
- Die DocumentLab-Kurztour umfasst die Dokumentinspektion, und die nativen Portfolios und Paketeinführung verweisen auf einen eigenen DLL-Workflow-Katalog
Behoben
- Die Delphi-Dokumentinspektion initialisiert Zähler pro Datei vor der Analyse, einschließlich Berichten für Eingaben, die nicht geladen werden können; Delphi und C++Builder schreiben gebietsschemaunabhängige JSON-Zahlen
- Das C++-DLL-Diagnosebeispiel gibt native Instanzen frei, bevor die Bibliothek entladen wird, auch auf seinem Erfolgspfad
Version 3.544.0
Hinzugefügt
- Neun native Domänen-Labs bieten Szenarioauswahl, geführte Kurztouren, Protokolle pro Szenario und Offline-HTML-Erlebnisse, die sich automatisch öffnen, wenn das Lab ohne Argumente gestartet wird
Geändert
- Die Beispielportfolios für Delphi, C++Builder und Lazarus konzentrieren sich nun auf Showcase, HelloWorld und neun Labs; Delphi behält seinen interaktiven Reader
- Spezialdemos und gezielte Tutorials sind als lokale Szenariomodule in jedes Lab integriert und bewahren ihre ursprünglichen Operationen ohne separate Beispielprojekte oder ein gemeinsames Demo-Quellverzeichnis
- Lab-Touren führen ihre eigenen Szenarien mit isolierten Ausgabeordnern und Timeouts aus, sodass separat gebaute Beispiel-Executables anderer Projekte nicht mehr benötigt werden
- Szenariohinweise sind aus den Domänenanleitungen verlinkt, und optionale Delphi-Report-Framework-Integrationen sind unter ContentLab gruppiert
- Die Lazarus-Scan-Codec-Matrizen kennzeichnen Kodierpfade, die das erzeugte Fixture nicht abschließen können, als übersprungen, und veröffentlichen JBIG2-Messwerte nur, wenn der angeforderte externe Encoder verfügbar ist
Behoben
- Schwärzungsszenarien erzeugen nun PDF-1.7-Dokumente, sodass das Entfernen von Inhalten die erforderlichen Versionsprüfungen besteht
- Seitenerfassungs-Szenarien bewahren eine temporäre Dokumentseite beim Erfassen der letzten Inhaltsseite und vermeiden so fehlgeschlagene Erfassungen einseitiger Dokumente
- Die C++Builder-Barcode-Galerie akzeptiert nun erfolgreiche Dokument- und Seiten-Handles ungleich null, statt Handles mit Werten größer eins abzulehnen
- Das Lazarus-Navigationsszenario meldet fehlgeschlagene PDF-Schreibvorgänge, bevor es Erfolgsberichte veröffentlicht, einschließlich des begleitenden Remote-Zieldokuments
Version 3.543.0
Geändert
- Das native Demo-Portfolio stellt nun die Flaggschiff-Touren und Feature-Workbenches in den Vordergrund; gezielte API-Tutorials sind im Miscellaneous-Ordner der jeweiligen Plattform gesammelt
Entfernt
- Entfernt wurden die C++Builder-Reader-Metadaten-Anpassung und das nur Voraussetzungen prüfende ReportBridges-Executable, das doppelte Lazarus-TextExtract-Beispiel und der redundante Delphi-Eintrag AddWebLinkConsole; verwenden Sie stattdessen die tatsächlichen Viewer-, Report-Bridge-, Inspektions-, Extraktions- und AddWebLink-Beispiele
Behoben
- Die C++Builder-LoggerDemo schließt ihren Protokollschreiber nun, bevor sie das vollendete Sitzungsprotokoll liest, und gibt es als UTF-8 aus; das vermeidet Dateifreigabefehler und Konsolenabstürze bei langen Protokollen nach der PDF-Erzeugung
Version 3.542.0
Geändert
- Showcase und AdvancedWorkflowMatrix enthalten ihre Implementierungsunits nun im jeweiligen Delphi-, C++Builder- und Lazarus-Beispielordner, sodass das Kopieren eines Projekts kein gemeinsames Demo-Unit-Verzeichnis mehr erfordert
- Die Showcase-Quellcode-Anleitung verweist auf den lokalen Builder und behält dabei das neunseitige Dokument, editierbare Formulare, umschaltbare Ebenen und Offline-Exporte
Behoben
- Die C++Builder-Workflow-Suite schreibt die vollständige Workflow-Liste und den Konsolenbericht, bevor sie sich beendet
Version 3.541.0
Hinzugefügt
- Das neunseitige Showcase enthält ein editierbares Projektbriefing und einen mehrschichtigen Grundriss, mit gespeicherten Formularwerten und optionalen Gestaltungshinweisen
- C++Builder enthält nun dasselbe Flaggschiff-Showcase wie Delphi und Lazarus
- Konsolen-Showcase-Läufe erzeugen eine Offline-Erlebnisseite mit ganzseitigen PNG-Vorschauen, dem interaktiven PDF und UTF-8-Textexporten
Geändert
- Das Delphi-Showcase startet mit einer geführten Vorschau, direkter Formularbearbeitung, einer Sichtbarkeitssteuerung für Gestaltungshinweise, dem Speichern der bearbeiteten PDF sowie Aktionen zum Bild- und Textexport
- Alle drei nativen Showcase-Einträge teilen sich ihren Dokument-Builder und die Offline-Export-Implementierung
Behoben
- Tabellenabschnitte, Annotationsbeispiele und Barcode-Symbole im Showcase passen in ihre vorgesehenen Bereiche, und Seitenbezeichnungen bleiben lesbar
- Das Delphi-Showcase schreibt in ein vom Nutzer eigenes Ausgabeverzeichnis und behandelt Vorschau-, Export- und Speicherfehler explizit
Version 3.540.0
Geändert
- AdvancedWorkflowMatrix nutzt einen gemeinsamen Workflow-Launcher für Delphi, C++Builder und Lazarus, führt die Spezialdemos mit isolierten Ausgaben aus, unterstützt Auswahl und Timeouts und erfasst fehlende Binärdateien und Fehler von Kindprozessen in CSV- und HTML-Berichten
- Lazarus TextExtract und ExtractText teilen sich eine einzige schreibgeschützte Extraktionssitzung, akzeptieren Passwörter, schreiben UTF-8-Ausgabe und behalten den minimalen Konsoleneintrag und den Vergleich der Extraktionsmodi bei
- C# ActiveX HelloWorld ist ein auf Erzeugen und Speichern fokussierter Einstieg mit headless-Ausgabeoption, explizitem COM-Aufräumen und klarer Bereitstellungsdiagnose
Behoben
- C# Table2PDF vermeidet eine zusätzliche Leerseite, verwendet die zurückgegebenen Schrift-IDs und findet die DLL für seine Prozessarchitektur
- Der Visual-Basic-DLL-Starter enthält die native Bindung, die er zum Bauen benötigt, und behandelt architekturspezifisches DLL-Laden
- Die C++Builder-Report-Engine-Anleitung meldet fehlende Integration und präsentiert keine Platzhalter-PDF mehr als echtes Bridge-Ergebnis
- C++Builder Reader schlägt bei einer unlesbaren gelieferten PDF explizit fehl, statt sein generiertes Beispiel einzusetzen
Version 3.539.53
Behoben
- Die TextPaging-Demo bricht mit einer Fehlermeldung ab, wenn benötigte Schriften nicht geladen werden können oder ihr Seitenlimit Text ungerendert lässt; ein unvollständiges PDF wird dadurch nicht mehr gespeichert und als erfolgreiches Ergebnis geöffnet
Version 3.539.52
Behoben
- Die Konsolen-Demo ActionNavigationMatrix prüft das Schreiben von Haupt- und Begleit-PDF sowie den FDF-Export, bevor sie Erfolg meldet, und bricht mit einem Exit-Code ungleich null ab, wenn eine Ausgabeoperation fehlschlägt
Version 3.539.51
Behoben
- Lookups in Name- und Number-Trees ignorieren umgekehrte Grenzen, statt gültige Kind-Einträge in fehlerhaften PDFs zu verstecken
Version 3.539.50
Behoben
- Die Integer-Sortierung bewältigt den gesamten vorzeichenbehafteten Bereich, ohne beim Vergleich zu überlaufen
- Leere sortierte Integer- und Dateipositionslisten liefern bei Successor-Abfragen null zurück; die sparsame Integer-Membership-Prüfung vermeidet es, jeden dazwischenliegenden Bereich zu allokieren, und behält dabei Einfügereihenfolge und Duplikate bei
Version 3.539.49
Behoben
- Der PNG-Import verwirft abgeschnittene Chunks, fehlerhafte Header und Paletten, nicht unterstützte Interlace-Werte sowie fehlende oder fehlerhafte End-Chunks, bevor das Bild als verwendbar gilt
- Beim erneuten Laden eines PNG werden frühere Bilddaten und Metadaten verworfen, während die Reader-Optionen erhalten bleiben; reine Metadaten-Lesevorgänge überspringen die Bildnutzdaten, ohne ihre Puffer zu allokieren
Version 3.539.48
Behoben
- File-Streams respektieren bei einer Größenänderung die angeforderte Länge, und lange Dateinamen werden zu vollständigen absoluten Pfaden expandiert
- Das Einfügen in Streams erhält 64-Bit-Längen und Cursor, verwirft Einfügepunkte außerhalb des Streams, bevor Daten verändert werden, und meldet unvollständige Lese- oder Schreibvorgänge
- Bei Dateinamen mit Seitennummer wird die Nummer vor die Dateierweiterung gehängt; Verzeichnisnamen bleiben erhalten, und Namen ohne Erweiterung werden ebenfalls korrekt behandelt
Version 3.539.47
Behoben
- HTML-Textrendering und -fortsetzung erhalten maskierte spitze Klammern und wörtliche Entity-Schreibweisen, statt den dekodierten Text ein zweites Mal zu interpretieren
- Markdown-Code-Spans und -Blöcke bewahren Ampersands und Entity-Schreibweisen im erzeugten HTML und im gerenderten PDF; Dataset-Exporte geben denselben wörtlichen Text in Zellwerten weiter
Version 3.539.46
Behoben
- Das Delphi-Demo ExtractImage überspringt Bilder, die nicht ausgewählt werden können, zählt erfolgreiche Schreibvorgänge und meldet eine unvollständige Extraktion, statt bedingungslos Erfolg zu zeigen
- ExtractImage legt das Ausgabeverzeichnis an und entfernt beim Benennen der extrahierten Bilder nur die Dateierweiterung der Eingabedatei; ExtractAnnotAttach bricht ab, wenn das Laden ein anderes Ergebnis als Erfolg liefert
Version 3.539.45
Behoben
- Abfragen in Name- und Number-Trees überspringen zyklische oder wiederholte Kindknoten, arbeiten bei gültigen Geschwisterknoten weiter und meistern tief verschachtelte Bäume, ohne den Call Stack zum Überlaufen zu bringen
- Die Aufzählung eines Name-Trees ignoriert ungültige Namensschlüssel, und Lookup und Löschung erhalten den vollen Eintrags-Offset in Blättern mit mehr als 32.768 Name/Wert-Paaren
Version 3.539.44
Behoben
- Page-Box-Abfragen und -Erfassung ignorieren nicht vererbbare Bleed-, Trim- und Art-Boxen auf übergeordneten Page-Tree-Knoten und verwenden stattdessen die Page Box des Blattknotens bzw. deren effektive Crop Box
HasPageBoxmeldet direkt vererbte Media- und Crop-Boxen konsistent mit indirekten Arrays
Version 3.539.43
Behoben
- Der EMF-Vektorimport startet mit dem Standard-Stift in Schwarz und dem weißen Pinsel, sodass Zeichenrecords ohne explizite Objektauswahl sichtbar bleiben
- 32-Bit- und 16-Bit-Polylines bewahren unabhängige Figuren innerhalb der Pfadklammern, und 16-Bit-Multi-Polylines schieben das Zeichnen hinaus, bis der Pfad gezeichnet wird, und respektieren einen Null-Pen
Version 3.539.42
Behoben
- CapturePageEx mit der Bleed-, Trim- oder Art-Box-Option erfasst auf einer Seite, die diese Box nicht definiert, nun wie dokumentiert die Crop Box statt der gesamten Media Box; die in die Seite eingetragene Box folgt demselben ISO 32000-1-Standard
Version 3.539.41
Behoben
- Der EMF-Import zeichnet 32-Bit-PolyBezier-Records ab ihrem ersten Punkt, statt ihn als Kontrollpunkt zu verwenden, sodass die Kurven den 16-Bit-Records entsprechen
- EMF-Polyline-Records werden als offene Linien nur mit dem Stift gezeichnet, nicht als geschlossene, gefüllte Formen
- EMF-PolylineTo-Records beginnen an der aktuellen Position und werden nicht mehr geschlossen; bei einem Record, dessen erste zwei Punkte auf einer horizontalen Linie liegen, wird der Stift nicht mehr für jede danach gezeichnete Form abgeschaltet
- 32-Bit-EMF-PolyPolyline-Records zeichnen jede Polyline; Records mit mehr als einer Polyline wurden zuvor übersprungen und einzelne Polylines zeichneten gar nichts
Version 3.539.40
Behoben
- ImportAnnotationsFromFDFString und ImportAnnotationsFromFDF liefern wie der XFDF-Import die Anzahl der tatsächlich hinzugefügten Annotationen zurück; übersprungene Einträge, deren Seite außerhalb des Dokuments liegt oder die kein /Subtype haben, werden nicht mehr mitgezählt
Version 3.539.39
Behoben
- Der EMF-Import zeichnet PolyDraw-Records vollständig: Punkte, die beim Zeichnen einer Linie oder Kurve eine Figur schließen, werden nicht mehr verworfen, sodass geschlossene Formen ihr letztes Segment behalten und die anschließenden Kurven synchron bleiben; ein 16-Bit-PolyDraw-Record mit mehreren Figuren behält alle davon, und eine Figur, die nicht mit einem Move beginnt, startet an der aktuellen Position
- Der EMF-Import überspringt Polyline-, PolyBezier-, Polygon-, PolyDraw- sowie 16-Bit-PolyPolyline- und PolyPolygon-Records, die mehr Punkte ankündigen, als sie enthalten, statt hinter dem Record weiterzulesen; genau das zeichnete bisher aus den folgenden Records irreale Linien oder konnte die Konvertierung zum Scheitern bringen
Version 3.539.38
Behoben
- JBIG2-Halftone-Regionen, deren Gitter links von oder über der Region beginnt oder deren gedrehtes Gitter Zellen bei negativen Koordinaten platziert, dekodieren jetzt korrekt: Solche Zellen werden am Regionsrand beschnitten, statt verworfen oder verschoben zu werden, der Gitterursprung wird nicht mehr auf die Regionsecke gezogen, und vollständig außerhalb liegende Zellen werden genau wie in ITU-T T.88 festgelegt übersprungen
Version 3.539.37
Behoben
- JBIG2-Bilder mit einer Halftone-Region, die Gitterzellen außerhalb der Region überspringt, dekodieren jetzt korrekt, wenn das Halftone-Gitter nicht quadratisch ist; die Skip-Maske wurde mit vertauschten Zeilen und Spalten aufgebaut, sodass Zellen, die hätten übersprungen werden sollen, dekodiert wurden und der Rest der Region als Datenmüll herauskam
Version 3.539.36
Behoben
- Eine mit MovePage verschobene Seite bekommt eigene Kopien der Page-Boxen, der Rotation und der Ressourcen, die sie von ihrem alten Pages-Knoten geerbt hatte; ein Aufruf von SetPageBox oder das Zeichnen von Text und Bildern auf der verschobenen Seite verändert daher nicht mehr den alten Knoten und die Seiten, die weiterhin von ihm erben
- SetPageBox gibt der Seite ihre eigene Box, wenn die vorhandene Box ein indirektes Objekt ist, das mit anderen Seiten oder einem Pages-Knoten geteilt wird, statt alle Seiten, die auf sie verweisen, in der Größe zu ändern
- CopyPageRanges lässt die kopierten Quellseiten ihre Page-Boxen nicht mehr mit dem Pages-Knoten teilen und ihre Crop Box nicht mehr mit ihrer Media Box, sodass das Ändern einer Box auf einer Quellseite nach dem Kopieren nicht mehr die Nachbarseiten oder beide Boxen gleichzeitig verändert
Version 3.539.35
Behoben
- TransformPageElement schreibt den Skalierungs- und Rotationsteil der Matrix, mit der es einen Pfad oder ein Bild umschließt, mit sechs Dezimalstellen statt mit vier, sodass kleine Rotationen und feine Skalierungsfaktoren auf großen Seiten nicht mehr sichtbar abweichen; die Translation behält vier Dezimalstellen
Version 3.539.34
Geändert
- Seitenbearbeitungen, die eine Inhaltsebene neu schreiben, darunter ScalePage, TransformPageElement, DeletePageElement, RedactRegion, ConvertTextToPaths und Programme aus ParsePageContentLayer, die mit WritePageContentLayer zurückgeschrieben werden, behalten den ursprünglichen Text jedes numerischen Operanden, den sie nicht ändern, statt die gesamte Ebene auf vier Dezimalstellen zu runden
- TPDFContentProgram hat eine neue Eigenschaft CanonicalNumbers; setzt man sie vor dem Parsen, wird jede Zahl in kanonischer Form neu geschrieben, wie NormalizeContentStreams es tut
Behoben
- Eine von null verschiedene Zahl, die kleiner als die Ausgabegenauigkeit ist, etwa ein Skalierungsfaktor von 0.00001, wird mit ihren signifikanten Stellen statt als 0 geschrieben, sodass Inhaltsnormalisierung, der Content-Optimierer beim Speichern und neue PDF-Objekte aus einer winzigen Transformation nicht mehr eine singuläre Matrix machen, die den Inhalt verbirgt
Version 3.539.33
Behoben
- RecolorPage und RecolorDocument scheitern auf Systemen mit Komma als Dezimaltrennzeichen nicht mehr mit einem Konvertierungsfehler, wenn eine Seite eine Farbe mit einem Dezimalwert wie
0.5 gsetzt - DrawSVG, DrawSVGFromFile, GetSVGWidth und GetSVGHeight lesen dezimale SVG-Längenangaben wie
width="100.5"auf Systemen mit Komma als Dezimaltrennzeichen, statt auf Standardwerte zurückzufallen, und ExportPageSVG behält dezimale Füll- und Strichfarben - RenderPageRegionToFile und RenderPageToDCClip akzeptieren dezimale Clip-Rechtecke wie
10.5,20.5,50.5,40.5bei jedem Gebietsschema; eine fehlerhafte Clip-Zeichenfolge schlägt nun fehl oder rendert unbeschnitten, statt eine Ausnahme auszulösen, und zusätzliche Werte laufen nicht mehr über das Rechteck hinaus - AddPolygonAnnotation, AddPolyLineAnnotation und AddInkAnnotation lesen dezimale Eckpunktkoordinaten bei jedem Gebietsschema und weisen eine fehlerhafte Koordinatenliste zurück
- SetOutputIntentMixingHints akzeptiert Solidity-Werte wie
0.95auf Systemen mit Komma als Dezimaltrennzeichen, und CheckDocumentPolicy vergleicht dezimale Feature-Werte wieDocument.Version >= 1.3numerisch
Version 3.539.32
Behoben
- AddTagAttribute schreibt Werte mit Punkt-Dezimalzahlen wie
0.5oder2.5 3.5auf Systemen mit Komma als Dezimaltrennzeichen als PDF-Zahlen, statt sie in PDF-Namen zu verwandeln; mit dem Dezimaltrennzeichen des Systems geschriebene Werte werden weiterhin akzeptiert - SetStructElemBBox, SetStructElemSpaceBefore, SetStructElemSpaceAfter, SetStructElemStartIndent, SetStructElemEndIndent und SetStructElemColor formatieren ihre Zahlen unabhängig vom Gebietsschema des Systems und niemals in Exponentialschreibweise
- PDF/VCR-Platzhalter, die mit BeginPDFVCRPlaceholder erzeugt wurden, bestehen auf Systemen mit Komma als Dezimaltrennzeichen die GTS_BBox-Validierung vor dem Speichern
Version 3.539.31
Behoben
- GetSimilarImageDeduplicationReportJSON schreibt maxAcceptedMeanError auf Systemen mit Komma als Dezimaltrennzeichen als gültige JSON-Zahl statt
0,333333333333333 - GetObjectJSON und ExportObjectJSON schreiben PDF-Zahlen wie
-.25,+3oder007.5in JSON-Zahlensyntax, sodass die Ausgabe gültiges JSON ist und SetObjectJSON und ImportObjectJSON sie wieder akzeptieren - JSON-Berichte schreiben
nullfür einen Wert, der NaN oder unendlich ist, statt+InfoderNANauszugeben oder mit einer Gleitkomma-Ausnahme zu scheitern: GetDocumentJSON bei überlaufenden PDF-Zahlen, GetAnnotationHitsJSON bei nicht endlichen Koordinaten sowie die Berichte für Barcode, Deskew, strukturierten Text und PDF/VCR - Die Zahlenformatierung für PDF-Inhalt sowie SVG-, HTML- und CSV-Ausgabe schreibt bei NaN eine 0, statt eine ungültige Gleitkommaoperation auszulösen
Version 3.539.30
Behoben
- ImportAnnotationsFromFDF und ImportAnnotationsFromFDFString erzeugen die importierten Annotationen wieder; zuvor wurde jeder Eintrag gezählt, aber keiner hinzugefügt, weil der /Subtype-Wert nie gelesen wurde
- Der FDF-Annotation-Import liest /Rect, /Page, /Contents, /T und /Subj in beliebiger Schlüsselreihenfolge, beschränkt jede Suche auf ihren eigenen Annotationseintrag und parst Zahlen unabhängig vom Gebietsschema des Systems, einschließlich der Komma-Dezimalzahlen früherer Versionen
- ExportAnnotationsToFDF und ExportAnnotationsToFDFString schreiben das eigene /Rect jeder Annotation im PDF-User-Space, sodass eine exportierte Datei beim erneuten Import an derselben Position landet, statt die Annotation zu verschieben
Version 3.539.29
Behoben
- ExportAnnotationsToXFDF und ExportAnnotationsToXFDFString schreiben die Werte von rect, opacity, width und dashes wie von XFDF verlangt mit Punkt als Dezimaltrennzeichen, unabhängig vom Gebietsschema des Systems
- ImportAnnotationsFromXFDF und ImportAnnotationsFromXFDFString lesen standardmäßiges XFDF mit Punkt-Dezimalzahlen auch auf Systemen mit Komma als Dezimaltrennzeichen, statt mit einem Konvertierungsfehler zu scheitern, und eine fehlerhafte Zahl überspringt nun diesen Wert, statt den Import abzubrechen
- XFDF-Dateien, die frühere Versionen auf Systemen mit Komma als Dezimaltrennzeichen geschrieben haben, etwa
rect="50,500 80,250 70,750 100,125"oderopacity="0,600", werden mit ihren beabsichtigten Werten importiert
Version 3.539.28
Behoben
- Der Content-Stream-Optimierer entfernt ein
1 0 0 1 0 0 Tm, das nach Td, TD, T*, einem früheren Tm oder ausgegebenem Text die Textposition zurücksetzt, nicht mehr; dieses Entfernen hatte beim Optimieren der Content-Streams beim Speichern die folgenden Glyphen verschoben. Ein Identitäts-Tm direkt nach BT oder eines, das ein früheres Identitäts-Tm wiederholt, wird weiterhin entfernt
Version 3.539.27
Behoben
- MovePage sowie CollateDocumentsEx beim Umsortieren von Seiten behalten MediaBox, CropBox und Rotate bei, die eine Seite von ihrem übergeordneten Pages-Knoten erbt, sodass eine unter ein anderes Elternteil verschobene Seite weder Größe, Zuschnitt noch Ausrichtung ändert; zuvor wurde nur /Resources übernommen
- BalancePageTree erhält ein geerbtes /Resources, /MediaBox, /CropBox oder /Rotate, das ein indirektes Objekt ist, als Referenz auf dieses Objekt, statt es in jede Seite zu kopieren
Version 3.539.26
Behoben
- Der von AddPageMatrix, ScalePage, DeskewPage, TransformPageElement, DeletePageElement, RedactRegion und ConvertTextToPaths geschriebene Seiteninhalt verwendet stets den Punkt als Dezimaltrennzeichen und eine gewöhnliche Notation, sodass diese Aufrufe auf Systemen mit Komma als Dezimaltrennzeichen keine defekten Operatoren wie
0,5 0 0 0,5 0 0 cmmehr erzeugen, und sehr kleine Werte werden nie in Exponentialschreibweise geschrieben - ExportAnnotationsToFDF und ExportAnnotationsToFDFString schreiben Annotationsrechtecke mit Punkt als Dezimaltrennzeichen, unabhängig vom Gebietsschema des Systems
- RecolorPage und RecolorDocument schreiben Farboperanden gebietsschemaunabhängig für jedes Dezimaltrennzeichen, nicht nur für das Komma
- AddPageMatrix, ScalePage und RedactRegion weisen NaN- oder unendliche Argumente zurück, statt sie in die Seite zu schreiben
Version 3.539.25
Behoben
- Die Reparatur des Formularfeld-Erscheinungsbilds schreibt /Type und /Subtype in den Appearance-Stream, statt unsinnige /N-Appearance-Zustände zu erzeugen, CMYK-Rahmenfarben lesen nicht länger über ihre vier Komponenten hinaus, und beim Löschen eines Formularfelds werden Seitenzahlen über indirekte /Count-Werte nicht mehr falsch gelesen
- Die Reparatur des Checkbox-Stils erhält beide benutzerdefinierten Export-Zustände, wenn kein Off-Zustand existiert, statt sie zu verwerfen, und Radio-Button-Kinder registrieren ihren On-Zustand mit derselben Kodierung, gegen die die Wert-Setter vergleichen
- Dateianhang-Annotationen ohne /EF-Dictionary stürzen nicht mehr ab, der Export von Sound-Annotationen tauscht 8-Bit-Audio nicht mehr byteweise, die Deckkraft von Markup-Annotationen verwendet eine konsistente Skala, und SetAnnotRect meldet wieder Erfolg
- Der Wiederaufbau von Annotation-Erscheinungsbildern hinterlässt keinen freigegebenen Stream mehr in der Struktur-Objekttabelle, wenn das Dokument keinen Indirect-Object-Callback hat
- Der Peephole-Optimierer verwirft Farb-Setter nicht mehr, die zwischenzeitlich von einem anderen Farboperator derselben Seite abgelöst wurden, und fasst einfache unmittelbar aufeinanderfolgende Duplikate weiterhin zusammen
- Die Textextraktion wertet den "-Operator als Wort- und Zeichenabstand aus, statt den Zeilenabstand zu verhunzen, und FindInstructionsInRect meldet bei Pfaden mit mehreren Subpaths keine überlappenden Bereiche mehr
- EMF-Import: PolyDraw liest die Point-Type-Flags vom richtigen Offset, POLYTEXTOUTW liest stets UTF-16-Text und häuft Glyphen nicht mehr über mehrere Strings hinweg an, die Glyph-Zuordnung bei kleinem Text-Out ersetzt den gesamten String nicht mehr durch ein einzelnes Zeichen, und Verlauffüllungen dividieren bei entarteten Rechtecken nicht mehr durch null
- Der EMF-Import begrenzt jede dateiseitig gelieferte Bitmap-Headergröße, Regionsrechteckanzahl, Polygonanzahl und jeden Gradient-Vertex-Index auf die Record-Grenzen und schneidet Record-Zeiger unter Win64 nicht mehr auf 32 Bit ab
- JBIG2-Halftone-Regionen platzieren Muster in der richtigen Gitterrichtung, Skip-Mask-Tests vergleichen in Festkommaarithmetik, gespeicherte Arithmetikkontexte sichern die Decoder-Statistiken ab, statt eine Access Violation auszulösen, Run-Length-Symboltabellen sichern ein Wiederholungscodewort an erster Position ab, MMR-Referenzlinien stoppen am Sentinel, teilweise außerhalb der Seite liegende Symbole werden beschnitten statt verschoben, und fehlerhafte Zähler führen zu Dekodierfehlern statt zu zusammenhangslosen Laufzeitfehlern
- Die CCITT-Dekodierung initialisiert die Changing-Element-Tabellen und behandelt Bit-Anfragen kleiner als die verbleibenden Bits ohne negative Shifts; der CCITT-Encoder deckt den gesamten Vertical-Mode-Bereich ab und liest nicht mehr ein Byte hinter den Zeilenpuffer
- Das TIFF-Laden prüft jeden IFD-Lesezugriff gegen die Grenzen, dekodiert Palettenbilder nicht mehr als Grauverläufe, schreibt StripByteCounts genau einmal und begrenzt angeforderte Seitennummern; eine fehlgeschlagene JPEG-Rekompression meldet einen korrupten Stream nicht mehr als Erfolg
- Der Dokumentvergleich bezieht Stream-Daten in die Objekt-Fingerprints ein, ordnet Duplikat-Objekte eins zu eins zu, sortiert Dictionary-Schlüssel, trennt Array-Elemente und meldet Vergleichsfehler, statt fälschlich keine Änderungen zu bescheinigen
- Der Namens-Builder für paralleles Rendern liest nicht mehr über ein Ein-Zeichen-Muster hinaus
- Weitere Demos wurden repariert: Dateilisten-Ergebnisse passen zur richtigen Datei, der Multifunktions-Viewer probiert es tatsächlich erneut mit dem eingegebenen Kennwort, vier Demos stellen keine leere erste Seite mehr voran, Embedded-File- und Seitenoperations-Demos legen Beispiel- und Ausgabepfade neben ihre Eingabedateien, und die Image-Strategy-Helfer prüfen die Bibliotheksergebnisse, auf denen sie aufbauen
- Das ActiveX-Steuerelement initialisiert das Ergebnis jeder Variant-Eingabemethode, sodass ein abgelehntes Variant keinen Stack-Müll mehr zurückgibt
Version 3.539.24
Behoben
- Das Stempel-Token &T löst jetzt in Kopfzeilen, Fußzeilen und Stempeln den Title des Dokuments auf statt den Author
- PrinterMark-Annotationen schreiben die /PN-Markierungsart gemäß ISO 32000-1 als PDF-Name-Objekt statt als literalen String
- Kid-Index-Abfragen zusammengesetzter Formularfelder geben ihr temporäres Kindfeld frei, statt es zu leaken
- Ausgeglichene Seitenbäume erben MediaBox, CropBox und Rotate von übergeordneten Knoten statt nur Resources
- XMP CreateDate und ModifyDate behalten ein gültiges ISO-8601-Format, wenn das PDF-Datum keine Zeitzone enthält, und der XMP-Import ohne x:xmpmeta-Wrapper verwirft nachfolgende Metadaten-Updates nicht mehr
- Oktale Escapes in PDF-Strings enden bei der Ziffer 7, sodass \0689 jetzt wie in der Spezifikation definiert als \06 gefolgt von einem literalen 89 dekodiert wird
- Die QDF-Ausgabe meldet den ursprünglichen Schreibfehler, statt ihn mit einem Fehler beim Schließen der Datei zu überdecken
- FPC-Builds komprimieren und expandieren Flate-Streams größer als ein Chunk als einzelnen zlib-Stream statt als aneinandergehängte Chunk-Members, die andere Konsumenten abschneiden
- Die EditFormField-Demos erzeugen ihr Beispielformular beim ersten Lauf, statt es nicht zu finden, und mehrere Demos melden jetzt einen fehlgeschlagenen Ladevorgang, statt stillschweigend ein leeres PDF zu speichern
Geändert
- Der Dokumentations-Suchindex listet die lokalisierte Selling-Points-Seite unter dem eigenen Titel jeder Sprache statt unter einem gemeinsamen chinesischen Titel für alle Sprachversionen
Version 3.539.23
Ergänzt
- Das native JBIG2-Dekodieren akzeptiert eigenständige Random-Access-Dateiorganisation mit bekannten Segmentlängen, einschließlich benutzerdefinierter Huffman-Tabellen und Verfeinerungsbildern
Behoben
- Random-Access-Eingaben prüfen vor dem Dekodieren die Header-Reihenfolge, den erforderlichen End-of-File-Header und die Gesamtdatenlängen und weisen abgeschnittene oder nachlaufende Daten zurück, ohne eine alte Bitmap beizubehalten
Version 3.539.22
Ergänzt
- Das native JBIG2-Decodieren unterstützt benutzerdefinierte Huffman-Tabellen für Symbolwörterbücher und Textbereiche, mit expliziten Fehlern bei fehlerhaften Tabellen und nicht unterstützten Präfixlängen
Behoben
- Die Huffman-Verfeinerungs-Dekodierung verarbeitet die deklarierte Bitmapgröße und erhält Teil-Byte-Symbolpixel, wodurch beschädigter Text in betroffenen JBIG2-Bildern verhindert wird
Version 3.539.21
Behoben
- Flate- und LZW-Dekodierung beachten das PNG-Algorithmus-Tag pro Zeile für die Predictor-Werte 10 bis 14, statt jede Zeile mit dem im Dictionary genannten Algorithmus zu dekodieren. Legitime Cross-Reference-Streams mit Predictor 12 laden wieder, Bildzeilen werden nicht mehr an falscher Position dekodiert, und Zeilen dürfen innerhalb eines Bildes den Algorithmus wechseln
Version 3.539.20
Behoben
- Die erste Bearbeitung der Dokumentinformation oder des Standard-Identifiers sichert das ursprüngliche XMP, bevor das Editor-Objekt initialisiert wird, sodass vorhandene Autor-, Dokument-Identifier- und benutzerdefinierte Eigenschaften nicht mehr mit Standard-Metadaten überschrieben werden; Änderungen der Dokumentinformation erreichen das XMP auch unter Free Pascal auf Windows, und XML ohne xpacket-Wrapper wird unverändert gespeichert
Version 3.539.19
Behoben
- Das Speichern eines unveränderten Dezimalobjekts behält die Genauigkeit, mit der es geparst wurde, statt es auf die Standard-Ausgabegenauigkeit zu runden, sodass kalibrierte Farbparameter wie CalRGB-Gamma und -Matrix die Seitenfarben beim einfachen Speichern nicht mehr verschieben; neu erstellte oder bearbeitete Zahlen verwenden weiterhin die konfigurierte Genauigkeit
Version 3.539.18
Behoben
- Das Aktualisieren der Dokumentinformation ersetzt nur den Wert des Zielfelds: Verweisen Erstellungs- und Änderungsdatum auf denselben indirekten String, überschreibt das Auffrischen des Änderungsdatums nicht mehr das Erstellungsdatum
Version 3.539.17
Geändert
- Versionserkennung und der Save-Time-Precheck vermeiden wiederholte Kopien verwalteter Strings beim Sammeln der Feature-Regeln und senken so den Scan-Overhead bei großen Dokumenten; Feature-Erkennung, Versionsanforderungen und die erste Diagnose zu inkompatiblen Features verhalten sich exakt wie zuvor
Version 3.539.16
Behoben
SaveQDFToFileundConvertFileToQDFschreiben gewöhnliche komprimierte Flate-Content-Streams unter Free Pascal und Lazarus nicht mehr als leere Streams; die Dekompression ab einer expliziten Startposition verwendet den korrekten 1-basierten Offset und die volle Eingabelänge
Version 3.539.15
Behoben
- Der JBIG2-Decoder liest lokale und globale Profil-Segmente sicher und bezieht die erste Bitmap über die Standard-Seitennummer 1
- Die MMR-Bitmap-Dekodierung richtet ihre Leseposition nach dem letzten Pixel an der deklarierten Segmentgrenze neu aus, sodass ein nachgestellter EOFB oder Padding nicht mehr für den nächsten Segmentkopf gehalten wird
- Eigene Huffman-Tabellen, Random-Access-Organisation sowie unbekannte oder überdimensionierte Segmentlängen schlagen explizit fehl; abgeschnittene Profile und unzulässige Segmentverweise stoppen die Dekodierung,
TPLJBIG2Decoder.LastErrormeldet den Grund, und ein Fehler löscht die veraltete Bitmap RepairQDFFileveröffentlicht über eine exklusiv im Zielverzeichnis angelegte temporäre Datei und ersetzt das Ziel erst, nachdem die temporäre Datei geschrieben, geflusht und geschlossen wurde; In-Place-Reparatur und Overwrite-Ausgabe behalten die alte Datei, wenn Schreiben, Flushen oder Ersetzen fehlschlägt, und melden Ergebnis 0 mit Fehlercode 305- Die Veröffentlichung bewahrt vor dem Schreiben der temporären Datei die vorhandene DACL des Ziels und schlägt explizit fehl, wenn Berechtigungen nicht erhalten werden können oder das Ziel EFS-verschlüsselt ist; eine exklusiv gesperrte oder nicht lesbare Eingabe meldet Fehlercode 401, statt die Lese-Exception auszulösen, und die Dateiveröffentlichung unterstützt Unicode- und erweiterte Windows-Pfadlängen
Version 3.539.13
Behoben
- Die Reparatur einer QDF-Datei verwirft Stream-Inhalte nicht mehr, deren Body zeilenweise
endstream- oderendobj-Marker enthält; die Reparatur wählt das letzte vollständige End-Marker-Paar vor dem bekannten Objektende - Objektspezifische End-Marker, die sich innerhalb eines Streams wiederholen, lassen die Reparatur fehlschlagen, bevor der Ziel-Stream geleert wird, und bewahren die ursprünglichen Bytes, Länge und Position
RepairQDFFileführt die gesamte Reparatur im Speicher durch und öffnet das Ziel erst nach Erfolg zum Schreiben, sodass eine abgelehnte Eingabe eine mitfmCreategeöffnete Datei nicht mehr verkürzen kann- Dateispezifikations-Strings halten die dokumentierte Reihenfolge mit
/UFzuerst und/Fals Rückfallebene ein und räumen unbekannten/Path-Keys keinen Namensvorrang ein
Version 3.539.10
Behoben
- Die LZW-Dekodierung erweitert ihre Codebreite anhand der eigenen Schwelle des Decoders statt die des Encoders zu teilen, sodass Streams über alle Codebreiten und bei wiederholten Dictionary-Resets korrekt dekodiert werden; verifiziert gegen Pillow, libtiff und PDFium
- Das Parsen von CMS-Signaturen führt die Grenzen des übergeordneten Bereichs durch ContentInfo, EXPLICIT-Einbettung, SignedData, Sets und Identitätsfelder hindurch, sodass Daten außerhalb des Bereichs nicht mehr für Zertifikatszähler oder Identitätsabgleich verwendet werden, während gültiges Padding nach dem äußeren Objekt weiterhin akzeptiert wird
- Beim Aktualisieren von Seitenbeschriftungen eines Dokuments, dessen PageLabels einen
/Kids-Nummernbaum verwenden, werden die vorhandenen Einträge in Root-Leaf-Knoten umgewandelt, statt einen zweiten, sich gegenseitig ausschließenden/Nums-Eintrag hinzuzufügen, den Reader ignorieren würden - Das Lazarus-Beispiel MergePDF liest seine Eingaben aus dem zweiten Kommandozeilenargument, behandelt eine einzelne explizite Eingabe als Parameterfehler und gibt vor dem Fehlschlag der Generierung keinen Erfolgshinweis mehr aus
Version 3.539.6
Behoben
- Puffer-Scans stoppen bei einem
TStream.Read-Rückgabewert von null statt bei einem kurzen Read, und Streams, die nur wenige Bytes auf einmal liefern, überspringen das Ende der gescannten Daten nicht mehr - Die OID-Kodierung fasst die ersten zwei Arches in einem Base-128-Subidentifier zusammen, sodass
2.999.3als06 03 88 37 03kodiert wird und nicht stillschweigend zu1.15.3wird - Wird eine Vorschau in einen wiederverwendeten Bild-Stream gezeichnet, wird der alte Inhalt zuerst geleert, sodass eine kleinere Renderung den Rest des vorherigen Bildes nicht mehr behält
CopyPageRangesgibt seine Dokumentinstanzen in einemfinally-Block frei und deckt damit Ladefehler, Exceptions und normales Ende ab
Version 3.539.3
Behoben
- Der Fehlercode 526 hat nicht mehr zwei verschiedene Bedeutungen.
PDFLIB_ERROR_TEXT_LOCATION_INVALID,PDFLIB_ERROR_TEXT_LOCATION_STALEundPDFLIB_ERROR_TEXT_LOCATION_READ_ONLYwechseln zu den Codes 535, 536 und 537, die zuvor nicht vergeben waren, sodass Aufrufer, die auf 526 verzweigen, nur noch den JSON-Exportfehler sehen, für den der Code dokumentiert war; die Codes 527 und 528 werden nicht mehr verwendet PDFlibErrorMessagebeschreibt die Codes 101 bis 104 anhand der Vorgänge, die sie tatsächlich auslösen. Die vier Codes gehören zu den Verschlüsselungsparametern und nicht zu den Parse-Fehlern, zu denen sie die Meldungstabelle gezählt hatte, sodass ein Scheitern wegen unzureichender Verschlüsselungsstärke nicht mehr "Ungültige PDF-Struktur" meldetPDFlibErrorMessageliefert für jeden von der Bibliothek ausgelösten Code eine echte Meldung. Bytebereichs- und HTTP-Öffnungsfehler, das Öffnen von Netzwerkdateien, die Größe des rohen Verschlüsselungsschlüssels, der JSON-Export, Zurückweisungen von Marked-Content- und Clip-Pfad-Handles, die neu nummerierten Textpositions-Codes, die Compliance-Codes für einbettbare Schriften sowie für PDF/VCR und PDF/E und die Formulare mit doppelten Feldern und Formularskripten fielen auf den generischen Text "<segment> error (NNN)" zurück- Die Referenzseite zu
LastErrorCodelistet alle Codes vollständig auf, einschließlich des zuvor fehlenden Codes 705 für doppelte Felder, und zeigt die eingestellten Einträge 527 und 528 nicht mehr
Version 3.539.2
Behoben
- Ein TIFF, dessen Directory mehr Werte angibt als die Datei enthält, wird jetzt vollständig abgelehnt. Die Werte wurden verworfen, die Anzahl aber beibehalten, sodass nachfolgende Reader das erste Element eines leeren Arrays lasen
- Ein PNG mit einem außerhalb des Formats liegenden Colortype oder Bit Depth im Header wird abgelehnt, statt ohne Farbkanäle dekodiert zu werden und die Zeilenfilter durch einen leeren Puffer zu schicken
- Ein PNG-Resolution-Chunk, der kürzer als seine neun definierten Bytes ist, liest nicht mehr über die übergebenen Daten hinaus
- Zweidimensionale CCITT Group 3 und Group 4 Bilder werden unter Free Pascal und Lazarus dekodiert; die Referenzliniensuche gab ein nie erzeugtes Array zurück, das dieser Compiler leer lässt
Version 3.539.1
Behoben
- Der Viewer-Datenträgercache verwirft gerenderte Bitmaps jetzt bei jeder Bibliotheksaktualisierung. Die verglichene Versionsmarkierung wurde getrennt von der Bibliotheksversion gepflegt und war zurückgefallen, sodass ein Cache eines älteren Builds nach dem Update wiederverwendet werden konnte
- Free-Pascal- und Lazarus-Builds lesen 16-Bit-
BI_BITFIELDS-Bitmaps wieder korrekt: Die Kanalmasken stammten bei einem erweiterten Info-Header aus dem falschen Offset, wodurch die Farben durcheinandergerieten - Bitmapzeilen werden bei Builds ohne Device-Backing nicht mehr falsch gelesen: 1- und 4-Bit-Zeilen wurden durch ganzzahlige Division bemessen, verloren dadurch die letzten Pixel jeder Zeile und beim Speichern lag der Pixelblock um ein Byte daneben
- Das Erfassen einer Zeichnung in ein Metfile erzeugt nicht mehr ein leeres Bild, wenn die Größe nicht vorab bekannt ist; der aufgezeichnete Rahmen wird wie unter VCL aus der Zeichnung selbst genommen
- Das Lesen einer Bitmap, deren angegebene Palettengröße ihre Farbtiefe überschreitet, wird abgelehnt statt vertraut zu werden
- Druckerstatusabfragen geben das geöffnete Spooler-Handle frei, sodass das Abfragen eines Druckauftrags nicht mehr pro Aufruf ein Handle leakt
Docs\index.htmlist wieder das Sprachgateway. Eine Dokumentationssynchronisierung hatte es durch eine Kopie der vereinfacht chinesischen Referenznavigation ersetzt, deren Eintragslinks auf ein nicht vorhandenes Verzeichnis zeigten
Geändert
- Das Lazarus-Paket
PDFlibPasLaz.lpklistet die optionalen Units für den LZW-Encoder, Brainpool, Ed448, ML-DSA, den PDF-Drucker und den externen JBIG2-Encoder nun zusammen mit den Metfile-Deklarationen auf und entspricht damit dem Unit-Umfang des Kommandozeilen-Builds build-Win64-Demo-Laz.cmdleitet anbuild-Lazarus-Demo.cmd win64weiter, sodass beide Einstiegspunkte Demo-Programme inbin\x86_64-win64statt im Demo-Quellverzeichnis ablegen
Version 3.539.0
Hinzugefügt
- Free Pascal und Lazarus unterstützen jetzt neben Win64 auch 32-Bit-Windows-Builds einschließlich PDF-Erstellung, Laden, Verschlüsselung und JPEG-2000-Bildern
- Die Build-Skripte für die Lazarus-Bibliothek, die Trial-Version, die Demos und die Konsolentests akzeptieren
win32oderwin64und unterstützen von Win32 gehostete Cross-Compiler mit getrennten Ausgabeverzeichnissen für jede Architektur
Geändert
- Unter Win32 wird der integrierte Pascal-JBIG2-Encoder verwendet, wenn ein externer Encoder angefordert wird; der statisch gelinkte externe Encoder bleibt unter Win64 verfügbar
- FPC-Builds verwenden für die Komprimierung die mitgelieferte Pascal-zlib-Implementierung und laden
zlib1.dllnicht mehr aus dem System-Suchpfad
Version 3.538.0
Hinzugefügt
- Free-Pascal- und Lazarus-Builds können jetzt den externen JBIG2-Encoder verwenden: Wird die neue Unit PDFlibJBIG2EncDLL in ein Projekt aufgenommen und
pdflibjbig2enc.dllneben der ausführbaren Datei abgelegt, beachtenAddImageJBIG2FromStreamExund die übrigen JBIG2-Einstiegspunkte die Anfrage nach dem externen Encoder dort genau wie unter Delphi. Ohne die DLL fällt die Anfrage weiterhin auf den eingebauten Pascal-Encoder zurück, sodass Projekte, die sie nicht mitliefern, nicht betroffen sind - Neue verteilbare
DLL\JBig2Enc\Win64\pdflibjbig2enc.dllund das Build-Skript, das sie erzeugt
Version 3.537.0
Hinzugefügt
- Free-Pascal- und Lazarus-Builds wandeln Metadateien in Vektorseiteninhalt um.
ImportEMFFromFile,ImportEMFFromStream, ihre Ex-Varianten,LoadFromCanvasDCundNewPageFromCanvasDCerzeugen dort jetzt echte PDF-Zeichenoperatoren mit eingebetteten Schriften wie unter Delphi, statt zu melden, dass der Modus nicht verfügbar ist. Text bleibt auswählbar und durchsuchbar, und die Ausgabe ist ein Bruchteil der Größe des rasterisierten Imports
Version 3.536.7
Behoben
- Die Druckeraufzählung liefert unter Free Pascal und Lazarus echte Namen. Jeder Drucker wurde nur mit seinem ersten Zeichen zurückgemeldet, wodurch auch die Druckerauswahl, benutzerdefinierte Druckerprofile und der Druck selbst jeden installierten Drucker ablehnten
GetPrinterNamesstürzt bei Builds ohne VCL nicht mehr ab: Die Funktion fragt jetzt direkt den Spooler, wieGetLatestPrinterNameses bereits tat
Version 3.536.6
Behoben
- Die Umwandlung einer Metadatei in Vektorseiteninhalt meldet bei Builds, die das nicht können, jetzt einen Fehler, statt eine Grafik mit leerem Inhalt zurückzugeben.
ImportEMFFromFile,ImportEMFFromStream, ihre Ex-Varianten undLoadFromCanvasDClieferten dort alle eine gültig aussehende Bild-ID, sodass die Seite leer blieb, ohne dass etwas auf die Ursache hingewiesen hätte. Das Importieren derselben Metadatei als Bild ist nicht betroffen und übernimmt die identische Grafik - Die Canvas-Erfassung und der Metadatei-Import stürzen nicht mehr ab, wenn die Umwandlung nicht ausgeführt werden kann: Beide Einstiegspunkte verwendeten die resultierende Grafik, ohne zu prüfen, ob sie existiert
Version 3.536.5
Behoben
- Der rasterisierte Metadatei-Import funktioniert unter Free Pascal und Lazarus.
ImportEMFFromFile,ImportEMFFromStreamund ihre Ex-Varianten gaben nichts zurück, wenn eine Rasterisierung verlangt wurde, undLoadFromCanvasDCstürzte im selben Modus ab, weil der der Bildladefunktion übergebene Zeichenstrom dort nicht lesbar war. Die Vektorpfade waren nicht betroffen
Version 3.536.4
Behoben
- Die Metadatei-Erfassung unter Free Pascal und Lazarus meldet wieder ihre physische Größe, sodass
LoadFromCanvasDCund die anderen Canvas-Erfassungs-Einstiegspunkte die Zeichnung importieren, statt an einem Rahmen der Größe null zu scheitern - Das VCL-freie Schriftobjekt meldet jetzt einen echten
PixelsPerInch-Wert und wird beiAssignkopiert. Beides war ohne Wirkung, sodass Code, der seine Renderauflösung von einer Schrift bezog, ein Canvas der Größe null anforderte, und die Übergabe einer vorbereiteten Schrift an ein Canvas stillschweigend die alte beibehielt - Metadateien, die unter Free Pascal erstellt werden, verwenden standardmäßig das erweiterte Format wie auf jeder anderen Plattform; zuvor wurden sie im älteren 16-Bit-Layout gespeichert, sofern der Aufrufer das Flag nicht selbst setzte
Version 3.536.3
Behoben
- Free-Pascal- und Lazarus-Builds importieren jetzt 4-, 8- und 16-Bit-BMP-Bilder.
AddImageFromFileundAddImageFromStreamlieferten bei diesen Bittiefen stillschweigend kein Bild, auch nicht die 16-Bit-BI_BITFIELDS-Variante, die Malprogramme schreiben, weil der VCL-freie Bitmap-Reader nur 1-, 24- und 32-Bit-Eingaben verstand
Version 3.536.2
Behoben
- Der klassische GDI-Metadatei-Export funktioniert unter Free Pascal und Lazarus:
RenderPageToMetafileFileundRenderPageToMetafileStreamlösten fürmfEMFundmfWMFeine Zugriffsverletzung aus, weil das VCL-freie Metadatei-Canvas ein leerer Platzhalter ohne Pinsel, Stift oder Schrift war. Beide Formate zeichnen jetzt in eine echte erweiterte Metadatei auf und werden ausgegeben,mfWMFmit dem Placeable-Header, den eine .wmf-Datei benötigt
Version 3.536.1
Behoben
- Free-Pascal- und Lazarus-Builds schreiben jetzt gültige 1-, 4- und 8-Bit-BMP-Dateien: Der Bitmap-Platzhalter, der die VCL-Variante ersetzt, gab gar keine Farbtabelle aus, sodass palettenindizierte Bitmaps von allen Leseprogrammen abgelehnt wurden und auf einer komplett schwarzen Palette zeichneten
- Der Import von Bilevel-Bildern funktioniert unter Free Pascal wieder:
AddImageCCITTFromFile,AddImageCCITTFromStreamund die JBIG2-Pendants können jetzt die ihnen übergebenen 1-Bit-Bitmaps lesen, statt zu scheitern, weil zuvor nur 24- und 32-Bit-BMP-Eingaben dekodiert wurden
Version 3.536.0
Hinzugefügt
- Free-Pascal- und Lazarus-Builds durchlaufen jetzt die parallelen Batch-Pfade, statt auf serielle Schleifen zurückzufallen:
RenderPagesToFilesParallel, die Optimierungsläufe hinter der Dokumentoptimierung und das parallele Kachel-Rendering verteilen sich dort alle auf die CPU-Kerne, wie bei Delphi
Geändert
- Das parallele Seiten-Rendering rendert seine erste Seite jetzt im aufrufenden Thread, bevor es sich verteilt, sodass die Rendering-Engine nur einmal initialisiert wird, statt von jedem Worker gleichzeitig initialisiert zu werden
Version 3.535.0
Hinzugefügt
- Free-Pascal- und Lazarus-Builds liefern jetzt den JPEG-2000-Encoder mit:
EncodeImageToJPXStream,EncodeImageToJPXFile,AddImageJPXFromFile,AddImageJPXFromStreamundAddImageJPXFromStringerzeugen dort JPXDecode-Bilder genau wie unter Delphi, im verlustbehafteten wie im verlustfreien Modus - Das von Free-Pascal-, macOS- und FireMonkey-Builds verwendete Nicht-VCL-Bitmap lädt jetzt unkomprimierte 24-Bit- und 32-Bit-BMP-Streams und meldet ein Alpha-Format
Behoben
- Die Bilddekodierung über das Windows-Bildverarbeitungs-Backend stürzt auf Free-Pascal-Builds nicht mehr ab; Ströme werden dem Backend jetzt in einer Form übergeben, die es akzeptiert
- Beim Zuweisen eines Bitmaps zu einem anderen kopieren Nicht-VCL-Builds die Pixel, statt die Ziel-Bitmap leer zu lassen, was in Bildkonvertierungspfaden stillschweigend eine leere Ausgabe erzeugte
Version 3.534.1
Behoben
- Der integrierte TIFF-Decoder weist nicht unterstützte BigTIFF- und gekachelte Layouts jetzt mit expliziten Diagnosen zurück und begrenzt dekodierte Abmessungen und Strip-Größen vor der Allokation
Version 3.534.0
Geändert
CheckFileComplianceund der PDF/UA-Preflight validieren jetzt eingebettete einfache und CID-Schriftbreiten, vollständige Type-1-/CharSet- und CID-/CIDSet-Deklarationen, textführende Form XObjects, die außerhalb von markiertem Inhalt aufgerufen werden, sowie Textoperanden, die zu.notdefaufgelöst werden
Version 3.533.0
Hinzugefügt
TPDFlibPKCS11Clientkann ausdrücklich gewählte ML-DSA-Schlüssel ohne Zertifikat auffinden, ihren Parametersatz melden und Originalnachrichten über den PKCS #11 3.2-MechanismusCKM_ML_DSAsignieren
Version 3.532.0
Geändert
- Große Streams, die die übliche Filterkette aus
/ASCII85Decodeund/FlateDecodenutzen, codieren und decodieren jetzt über eine Pipeline mit begrenztem Speicherbedarf, ohne die Zwischendarstellung zu materialisieren
Version 3.531.0
Hinzugefügt
AddWebCaptureCommand,GetWebCaptureCommandCount,GetWebCaptureCommandundClearWebCaptureCommandserzeugen, zählen auf und entfernen Metadaten von Web-Capture-Befehlen nach dem Standard-Katalog-/SpiderInfo-Format, ohne einen Netzwerkabruf durchzuführen
Version 3.530.0
Hinzugefügt
BPLoadCurve,BPKeyGen,BPSignFixedKundBPVerifyimplementieren ECDSA über die drei RFC 5639-Primkörperkurven brainpoolP256r1, brainpoolP384r1 und brainpoolP512r1 in reinem Pascal: eine von allen Kurvenbreiten gemeinsam genutzte 33-Limb-Arithmetik zur Basis 2^16, bitserielle modulare Reduktion, Jacobian-Verdopplung und -Addition mit expliziten Alias-Schutzprüfungen, Fermat-Inversion und eine vom Aufrufer bereitgestellte Nonce für die Signaturerzeugung; Known-Answer-Vektoren, die mit einer unabhängigen Implementierung erzeugt und in beide Richtungen gegengeprüft wurden, bestehen auf jeder Kurve, zusammen mit Round-Trip- und Manipulationsablehnungs-Regressionen
Version 3.529.0
Hinzugefügt
Ed448PublicKeyFromSeed,Ed448SignundEd448Verifyimplementieren RFC 8032 PureEdDSA auf edwards448 in reinem Pascal: 16-Limb-Arithmetik zur Basis 2^28 über dem Goldilocks-Körper mit der Solinas-Faltung 2^448 = 2^224 + 1, stark vereinheitlichte Gruppenaddition in Produktform für Kurven mit a = +1, eine über die Digestbreite gehende modulare Reduktion modulo der Gruppenordnung für die 114-Byte-SHAKE256-Skalare sowie Verifizierung mit Kofaktor 4; beide Known-Answer-Vektoren aus RFC 8032 section 7.4 bestehen bytegenau, zusammen mit Round-Trip-, Manipulationsablehnungs- und Längenvalidierungs-Regressionen
Version 3.528.0
Hinzugefügt
MLDSA65KeyGen,MLDSA65SignundMLDSA65Verifyimplementieren FIPS 204 ML-DSA-65 mit öffentlichen Schlüsseln von 1952 Bytes, geheimen Schlüsseln von 4032 Bytes und Signaturen von 3309 BytesMLDSA87KeyGen,MLDSA87SignundMLDSA87Verifyimplementieren FIPS 204 ML-DSA-87 mit öffentlichen Schlüsseln von 2592 Bytes, geheimen Schlüsseln von 4896 Bytes und Signaturen von 4627 Bytes
Version 3.527.0
Hinzugefügt
PDFlibMLDSAbietet eine reine Pascal-Implementierung von FIPS 204 ML-DSA-44 mit deterministischer Seed-Schlüsselerzeugung, hedged oder deterministischer Signaturerzeugung, begrenztem Rejection-Sampling und SignaturverifizierungMLDSA44KeyGen,MLDSA44SignundMLDSA44Verifyverwenden die Standardgrößen von 1312 Bytes für den öffentlichen Schlüssel, 2560 Bytes für den geheimen Schlüssel und 2420 Bytes für die Signatur, unterstützen Kontexte bis 255 Bytes und sind gegen den offiziellen Known-Answer-Vektor verifiziert
Version 3.526.0
Hinzugefügt
- Ein Streaming-SHAKE-XOF-Kontext (
PLShakeXOFInit/PLShakeXOFAbsorb/PLShakeXOFFinalize/PLShakeXOFSqueeze) erzeugt per Squeeze beliebige Byteanzahlen über Keccak-Permutationen hinweg, für SHAKE128 (Rate 168) ebenso wie für SHAKE256 (Rate 136), mit einem One-Shot-WrapperPLShakeXOF; blockübergreifende 200-Byte-Ausgaben werden gegen die Referenzdigests beider Varianten verifiziert
Version 3.525.0
Geändert
SHAKE256ByteArrayundSHAKE256StreamRangeakzeptieren jetzt Ausgaben bis zur 136-Byte-Sponge-Rate (bisher 64), wodurch Digests mit einem einzigen Squeeze in der Ed448-Hashlänge von 114 Bytes möglich werden; neue Known-Answer-Tests decken 114-Byte-Ausgaben der leeren Nachricht und vonabcab
Version 3.524.0
Hinzugefügt
DownsampleImagesExstuft jedes Bild anhand seines deklarierten Farbraums und seiner Bits je Komponente als bitonal, Graustufen oder Farbe ein und wendet DPI-Budget und JPEG-Qualität je Klasse in einem Durchlauf an; bitonale Scans werden verlustfrei neu codiert, und ein Nur-wenn-kleiner-Flag behält die Originalbytes, wenn die Neucodierung größer ausfällt
Version 3.523.0
Hinzugefügt
CopyForeignObjecterzeugt eine Tiefenkopie eines indirekten Objekts samt seiner vollständigen Referenz-Closure aus einem anderen geladenen Dokument in das ausgewählte Dokument und bildet Objektnummern neu ab, sodass geteilte Referenzen in der Kopie geteilt bleiben
Version 3.522.0
Hinzugefügt
SetPagePieceInfo,GetPagePieceInfoundClearPagePieceInfoverwalten Dictionaries privater Daten auf Seitenebene (ISO 32000-2 14.5) mit dem Anwendungsnamen als SchlüsselAddNamedPageundGetNamedPageregistrieren und lösen Seiten namentlich über den Katalog-Namensbaum /Names /Pages auf
Version 3.521.0
Hinzugefügt
GetImageListItemNativeDataToString,GetImageListItemNativeFormatundSaveImageListItemNativeDataToFileextrahieren den rohen, noch codierten Codec-Stream eines beliebigen gelisteten Bildes (JPEG, JPEG 2000, JBIG2, CCITT, Flate oder roh), ohne es zu decodieren, und bewahren die Originalbytes für Passthrough-Workflows
Version 3.520.0
Hinzugefügt
AnalyzeModificationsstuft jede Änderung seit einer gespeicherten Revision anhand der Whitelist für LTA-Aktualisierung, Formularausfüllung und Annotationen ein und gibt den Gesamtänderungsgrad zurückGetModificationLevel,GetModificationFindingCount,GetModificationFindingLevel,GetModificationFindingObjNumundGetModificationFindingDetaillegen die klassifizierten Feststellungen der letzten Analyse offen
Version 3.519.0
Hinzugefügt
CompareWithführt einen strukturellen Vergleich zwischen dem ausgewählten Dokument und einer gespeicherten Revision durch und stuft jedes indirekte Objekt über Inhalts-Fingerabdrücke, die Objektnummerverschiebungen ignorieren, als hinzugefügt, entfernt oder geändert einGetCompareFindingCount,GetCompareFindingKind,GetCompareFindingObjNumundGetCompareFindingDetaillesen die Feststellungen des letzten Vergleichs, einschließlich Unterschieden bei der Seitenanzahl
Version 3.518.0
Hinzugefügt
SHAKE256ByteArrayundSHAKE256StreamRangeliefern den SHAKE256-Extendable-Output-Digest (ISO/TS 32001, RFC 8702) mit zweiteiligen Bytebereichs-Lesevorgängen und Ausgaben von 1..64 Bytes, verifiziert gegen die NIST FIPS 202 Known-Answer-Tests
Geändert
- Der Keccak-Kern führt jetzt ein Domänentrenner-Byte mit sich, sodass SHA-3 und SHAKE sich eine Permutationsimplementierung teilen; im CMS-Signaturprofil bleibt SHAKE256 als interner Digest von Ed448 reserviert und fehlt bewusst in der Digest-Auswahl
Version 3.517.0
Hinzugefügt
- AddPageAssociatedFileFromFile und
AddPageAssociatedFileFromStringbinden eingebettete Dateispezifikationen an das/AF-Array einer einzelnen Seite (ISO 32000-2 14.13) statt an den Dokumentkatalog GetPageAssociatedFileCount,GetPageAssociatedFileEmbeddedIndexundClearPageAssociatedFileszählen zugeordnete Dateien auf Seitenebene auf und entfernen sie auch nach Speicher-/Lade-Round-TripsSetOptionalContentConfigInfoschreibt Präsentationsmetadaten (Konfigurationsname, Ersteller und Listenmodus des Ebenen-Panels) auf die Standard-Optional-Content-Konfiguration
Version 3.516.0
Hinzugefügt
ApplyContentFilterChainundTPDFContentFilterChainführen Inhaltsfilter auf Befehlsebene über jede Inhaltsebene einer Seite aus, mit geordneten Ketten, Steuerung des vorzeitigen Stopps und Weiterreichung von BenutzerdatenExportDocumentJSONundGetDocumentJSONserialisieren den vollständigen Objektgraphen des Dokuments, einschließlich Stream-Dictionaries mit base64-Nutzdaten und des Trailers, in eine qPDF-artige JSON-StrukturSetPDFDeclarations,GetPDFDeclarationsURI,GetPDFDeclarationsRole,GetPDFDeclarationsVersion,GetPDFDeclarationsCount,HasPDFDeclarationundClearPDFDeclarationsschreiben, lesen und entfernen maschinenlesbare PDF-Declarations-KonformitätsangabenAuditPageTree,AuditXRefStructure,AuditObjectReachability,AuditStreamLengths,AuditFontEmbeddingundAuditColorSpacesführen sechs unabhängige strukturelle Diagnosedurchläufe mit nach Schweregrad eingestuften Feststellungen ausGetAuditFindingCount,GetAuditFindingSeverity,GetAuditFindingItemundGetAuditFindingDetaillesen die Feststellungen des letzten Audit-Aufrufs
Version 3.515.0
Hinzugefügt
ExecuteFormFieldScriptEventundTPDFlibFormScriptEventführen begrenzte Keystroke-, Format-, Validate- und Calculate-Feldereignisse aus, mit kontrollierten Eigenschaften für Event, Field und DocumentSetFormScriptLimits,GetFormScriptLimitsJSONundGetFormScriptDiagnosticskonfigurieren und berichten Budgets für Quelle, Operationen, Verschachtelung, Strings und Eigenschaftszugriffe
Geändert
- Die sichere Formularskript-Laufzeit legt jetzt schreibgeschützte Quell- und Zielfeld-Metadaten, Dokumentfeld-Nachschlagezugriff und Keystroke-Auswahlzustand offen und bewahrt dabei die Nur-Wert-Kompatibilität
Sicherheit
- Die Skriptausführung lehnt jetzt Schaltflächen-Wertereignisse, Objektmutation und außerhalb des Bereichs liegende Auswahlen ab, wendet unabhängige Ressourcengrenzen auf Ausführung und Abhängigkeitsanalyse an und meldet begrenzte Parser-Fehlerpositionen
Version 3.514.0
Hinzugefügt
SetPDFEModeerzeugt PDF/E-1-Engineering-Dokumente mit PDF-1.6-Syntax, synchronisierter Info- und XMP-Identifikation, Lebenszyklus-Metadaten und einer eingebetteten farbverwalteten AusgabeabsichtGetPDFEDiagnosticsund Konformitätstest 7 bieten PDF/E-1-Validierung beim Speichern, über direkte Dateien und über die gemeinsame Pipeline mit begrenzten Objekt-, Inhalts- und Rekursions-Budgets
Geändert
- PDF/E-1-Speicherungen erzwingen jetzt Identifikation, Lebenszyklus-Metadaten, zulässige Verschlüsselung, Konsistenz der Ausgabeabsicht, XFA-Ausschlüsse und Sperren für unsichere Aktionen, während das Preflight zusätzlich Gerätefarbräume, Inhaltsoperatoren, Schriften, Annotationen, Formulare, optionalen Inhalt, externe Dateireferenzen, Grafikzustände und 3D-Stream-Beschränkungen prüft
Version 3.513.0
Hinzugefügt
SetPDFVCRModeund die Vorlagen- und Platzhalter-Scope-APIs erzeugen PDF/VCR-1-PassThrough-Ersetzungsvorlagen auf einer PDF/X-4-GrundlageGetPDFVCRDiagnostics,GetPDFVCRManifestund Konformitätstest 6 bieten Validierung beim Speichern, über direkte Dateien und über die gemeinsame Pipeline sowie validierte JSON-Extraktion von Feldern und Platzhaltern
Geändert
- PDF/VCR-Speicherungen erzwingen jetzt Identifikations-Metadaten, genau eine direkte Vorlagenwurzel, eindeutige deklarierte Felder, eine gültige Seitenauswahl, Ersetzungs-Platzhalter auf Blattebene sowie exakte Seiten- und MCID-Bindungen über den vollständigen Strukturbaum
Version 3.512.0
Hinzugefügt
SetPDFRModeund die PDF/R-Rasterseiten-APIs erzeugen Dokumente für eingeschränkten Raster-Austausch aus rohen, CCITT Group 4- oder JPEG-Daten, ohne unterstützte komprimierte Eingaben zu transkodierenGetPDFRDiagnosticsund Konformitätstest 5 bieten PDF/R-Validierung im Speicher, über direkte Dateien und über die gemeinsame Pipeline
Geändert
- PDF/R-Speicherungen erzwingen jetzt das erforderliche Marker-, Versions- und Verschlüsselungsprofil, Objekte der Generation 0, eingeschränkte Dictionaries und Filter, einen einzelnen Inhalts-Stream, ausschließlich Raster-Operatoren, geordnete Streifenressourcen, Konsistenz von Farbe und Auflösung sowie vollständige Seitenabdeckung
Version 3.511.0
Hinzugefügt
TPDFlibFormTextDirection,SetTextDirection,GetVisualCaretOrderundMoveVisualCaretergänzen automatische oder explizite Absatzrichtung sowie graphemsichere physische Caret-Navigation für Formularbearbeitung mit gemischten RichtungenResolvedTextDirectionundVisualCaretPositionlegen die effektive Absatzrichtung offen und unterscheiden getrennte Caret-Slots an bidirektionalen Grenzen
Geändert
- Geformte Textläufe wenden jetzt eine visuelle Umordnung auf Einbettungsebene für gemischte Links-nach-rechts- und Rechts-nach-links-Inhalte an, während Feldwerte in logischer UTF-16-Reihenfolge bleiben
Version 3.510.0
Hinzugefügt
MinimumSlotHeightschiebt die dynamische Komponentenkomposition vor dem Klonieren oder der Erfassung auf, wenn die aktuelle Region zu kurz istMinimumFollowingHeightbehält ein letztes Fragment mit einer vom Aufrufer definierten ersten Region für die folgende Komponente, ohne Zwischenfragmente einzuschränkenTPDFlibDynamicRetryReason,LastRetryReasonundLastRequiredSlotHeightlegen offen, warum die Platzierung aufgeschoben wurde, und die bekannte erforderliche Höhe
Geändert
- Wiederholungen im Fließbereich bewahren jetzt übernommene Fragmente, Komponentenzustand, Kompositionsindizes und Seiteninhalt, während nur der isolierte Probelauf verworfen wird
Version 3.509.0
Hinzugefügt
TPDFlibDynamicPaginationPolicyergänzt Modi für Aufteilung, One-Shot-Zusammenhalt und strenge vollständige Platzierung, mit einem eigenen Wiederholungsergebnis und einem beobachtbaren ausstehenden Zustand
Geändert
- Aufgeschobene Versuche mit dynamischen Komponenten verwerfen erfassten Inhalt und veränderlichen Zustand jetzt atomar, während die strenge Platzierung proportionales Verkleinern akzeptiert, aber niemals partielle oder abgeschnittene Ausgabe
Version 3.508.0
Hinzugefügt
TPDFlibFormSession.DispatchInputEventnimmt typisierte, plattformunabhängige Ereignisse für Zeiger, Mausrad, benannte Tasten und zusammengesetzten Text entgegen und gibt Fokus-, Hover-, Druck-, Auswahl- und Wertänderungszustand zurück
Geändert
- Die Verteilung von Formulareingaben erzwingt jetzt geordnete Widget-Zeigerübergänge über
/E,/X,/Dund/U, Abbruch der Erfassung, graphemsichere Bearbeitung, zeilenbewusste Caret-Bewegung, Standard-Auswahl- und Verlaufskürzel, Schaltflächenaktivierung und Navigation über das Auswahlrad
Behoben
- Die Verlaufsbehandlung von Rückschritt und Entfernen stellt jetzt die vom Benutzer sichtbare Caret-Position vor der Tasteneingabe wieder her, statt der intern für die atomare Ersetzung verwendeten temporären Graphemauswahl
Version 3.507.0
Hinzugefügt
TPDFlibFormSessionbietet jetzt begrenztes Undo und Redo auf Feldebene mit Verfügbarkeitsabfragen, Zählern behaltener Schritte, konfigurierbarer Kapazität und explizitem Leeren des Verlaufs
Geändert
- Der Formular-Bearbeitungsverlauf speichert kompakte Text-Deltas, stellt Werte und gerichtete Auswahlen wieder her, ohne Aktionen oder Callbacks erneut auszulösen, verwirft Redo-Zweige nach neuen Bearbeitungen und leert sich an Bearbeitungs-Lebenszyklusgrenzen
Version 3.506.0
Hinzugefügt
TPDFlibFormSessionbietet jetzt eine Auswahl-Ersetzung mit Vetorecht, Ausschneiden und vom Aufrufer bereitgestellte Einfügevorgänge, mit veränderlichen Host-Callbacks für Textbearbeitung und graphemsicherer Durchsetzung von/MaxLen
Geändert
- Commit-Vorgänge der Formular-Session führen jetzt verfügbare Validierungs- und Formatierungsaktionen aus, bevor das Feld verändert wird, behalten abgelehnte Bearbeitungen atomar und halten den validierten Rohwert getrennt vom formatierten Widget-Erscheinungsbild
Version 3.505.0
Hinzugefügt
- Gerichtete Textauswahlbereiche für Formularfelder in UTF-16-Codeeinheiten, Unicode-Codepunkten und erweiterten Graphem-Clustern hinzugefügt, mit Anker- und Caret-Berichterstattung sowie zwischengespeicherter Grenzkonvertierung
Version 3.504.0
Hinzugefügt
- Überlaufbewusste Platzierung dynamischer Komponenten hinzugefügt, mit Richtlinien für Ablehnung, Beschneidung und proportionales Verkleinern, unabhängiger Ausrichtung sowie Berichten über die endgültige Seite, Geometrie und Transformation
Version 3.503.0
Hinzugefügt
TPDFlibDynamicComponentSessionkomponiert verzögert jeweils ein zustandsbehaftetes Seitenfragment, mit Seitenkontext, Bericht über belegte Größe, Fertigstellungsstatus, Zurücksetzen und Schnappschüssen des übernommenen ZustandsReleaseCapturedPageerklärt ein Handle einer Form-XObject-Erfassung nach seiner endgültigen Platzierung für ungültig und bewahrt dabei Seitenressourcenreferenzen und bestehende Aufrufe
Geändert
- Versuche mit dynamischen Komponenten zeichnen jetzt auf geklontem Zustand innerhalb eines isolierten Form-XObjects und übernehmen erst nach validierter Platzierung; abgelehnte Callbacks, ungültige Geometrie und Ausnahmen stellen die ausgewählte Seite wieder her und lassen Zielinhalt und Komponentenzustand unverändert
Version 3.502.0
Hinzugefügt
TPDFlibFormSessionbietet jetzt gedrehte visuelle CropBox-Widget-Rechtecke, Treffertests auf dem obersten Element, punktbasierten Fokus sowie Vorwärts- oder Rückwärtsnavigation des Tastaturfokus
Geändert
- Tab-Folgen wenden die Seiten-
/Tabs-Ordnung nach Zeile, Spalte, Struktur, Annotations-Array und PDF-2.0-Widget an, mit ViewerPreferences-Richtung, stabiler seitenübergreifender Ordnung und begrenzter Strukturbaum-Durchquerung SetTabOrderModevalidiert jetzt alle fünf Standardmodi und wählt PDF 2.0 automatisch fürAundW
Version 3.501.0
Hinzugefügt
ApplyRepeatedPageFragmentplatziert ein erfasstes Form-XObject über einen Seitenbereich hinweg als typisierte Paginierungs-, Layout-, Seiten- oder PDF-2.0-Hintergrund-Artefakte, wobei Inhalts-Stream und Ressourcen zwischen allen Platzierungen geteilt werden
Behoben
- Artefakt-Eigenschaften-Dictionaries verwenden jetzt den erforderlichen Marked-Content-Operator
BDCin öffentlichen und Tabellenlayout-Pfaden, und PDF-2.0-Artefakttypen und -Subtypen wählen die erforderliche Ausgabefunktionsversion
Version 3.500.0
Hinzugefügt
SetTextFlowPaginationLinessteuert unabhängig die mindestens am unteren Rand eines Textfelds behaltenen Waisenzeilen und die für das nächste Textfeld oder die nächste Spalte bewahrten Witwenzeilen
Geändert
- Die Textfluss-Paginierung verschiebt jetzt mit begrenztem Vorausschau nur die erforderlichen Endzeilen nach vorn, während eine unmögliche Aufteilung den Fluss für die Platzierung in einer größeren Region unverändert lässt
Version 3.499.0
Hinzugefügt
TPDFlibFormSessionbietet plattformunabhängigen AcroForm-Fokus, Text- und Auswahllisten-Bearbeitung, nullbasierte UTF-16-Auswahl sowie Commit- und Abbruchzustand mit typisierten Host-Callbacks für Widget-Fokus- und -Blur-Aktionen
Geändert
- Übernommene Session-Werte erzwingen jetzt Textgrenzen und regenerieren nur das betroffene veränderte Erscheinungsbild und die zugehörige Berechnungskette, bevor die Wertänderung gemeldet wird
Version 3.498.0
Hinzugefügt
GetDirtyFormAppearanceCountundRegenerateDirtyFormAppearancesverfolgen geänderte AcroForm-Widget-Objektreferenzen und regenerieren nur die deduplizierte Berechnungskette der laufenden Session
Geändert
RegenerateFormAppearancesdurchläuft hierarchische Felder jetzt einmal von ihren Wurzeln aus, meldet die tatsächliche Anzahl erfolgreicher Widget-Regenerationen und behält fehlgeschlagene Erscheinungsbilder für einen erneuten VersuchUpdateAppearanceStreammeldet Erzeugungsfehler jetzt präzise und lässt erfolglose Widgets mit aktiviertemNeedAppearancesausstehend
Version 3.497.0
Hinzugefügt
SetOutputIntentMixingHintsschreibt PDF-2.0-Tintenfestigkeiten und die physische Druckreihenfolge und lehnt dabei ungültige Werte, doppelte Namen, fehlende Reihenfolge und bereits durch spektrale Daten repräsentierte Farbmittel abSetOutputIntentSpectralDatabettet begrenzte Charakterisierungs-Streams für CxF/X-4-Schmuckfarben ein, verwendet identische Daten bei wiederholten und farbmittelübergreifenden Zuweisungen wieder und verlangt genau eine übereinstimmendeSpotInkCharacterisation;ClearOutputIntentColorantDataentfernt beide Farbmittel-Metadaten-Dictionaries
Geändert
GetEffectivePageOutputIntentJSONberichtet jetzt über Mischfestigkeiten, Druckreihenfolge, spektrale Farbmittel und decodierte spektrale Gültigkeit für erstellte und neu geladene Dokumente- Das PDF/X-Preflight prüft jetzt die OutputIntent-Schlüssel
MixingHintsundSpectralData, einschließlich verbotenenDotGain-Einträgen, Festigkeitsbereichen, Druckreihenfolge-Typen, Farbmittelkonflikten, Stream-Decodierung und eindeutigen CxF-Schmuckfarben-Übereinstimmungen
Version 3.496.0
Hinzugefügt
DAOpenFileWithEncryptionKeyundDAOpenFromStreamWithEncryptionKeyöffnen verschlüsselte Dokumente von einem autorisierten hexadezimalen Dateiverschlüsselungsschlüssel ohne Kennwortableitung, mit passenden DLL-Dateiexporten und explizitem Validierungsstatus
Sicherheit
- Die Dateieingabe mit Rohschlüssel ist immer quellseitig schreibgeschützt, erzwingt exakte revisionsspezifische Schlüssellängen und verfügbare
/U- oder/Perms-Verifizierer, lehnt Abweichungen selbst dann ab, wenn die Wiederherstellung ohne Verifizierer aktiviert ist, und löscht vorgehaltenes Schlüsselmaterial beim Schließen des Handles
Version 3.495.0
Hinzugefügt
SetXRefLoadPolicyundGetXRefLoadPolicywählen und melden striktes, kompatibles oder Wiederherstellungs-Laden für Eingaben des ausgewählten Dokuments und des Direktzugriffs
Geändert
- Starkes Laden verlangt jetzt exakte Header, endgültige Marker, deklarierte Offsets, Tabelleneinträge fester Breite, Querverweis-Stream-Metadaten und jede verknüpfte
/Prev- oder/XRefStm-Sektion - Kompatibles Laden behält kontrollierte Offset- und Strukturreparaturen bei, ohne in die Roh-Rekonstruktion einzutreten, während Wiederherstellungs-Laden Objekte der obersten Ebene und komprimierte Objekte neu aufbauen und einen fehlenden Trailer synthetisieren kann
- Die Querverweis-Diagnostik berichtet jetzt über die gewählte Richtlinie, geordnete Parser-Entscheidungen und Kompatibilitätsflags je Sektion, einschließlich abgelehnter Hybrid-Seitenketten und Direktzugriff-Wiederherstellungsbelegen
Version 3.494.0
Geändert
- Vollständige unverschlüsselte deterministische Speicherungen ohne expliziten Seed leiten jetzt beide anfänglichen Trailer-
/ID-Einträge aus den ersten 16 Bytes eines Streaming-SHA-256-Digests über den serialisierten Dokumentkopf und -körper ab - Der Inhaltsdigest schließt frühere Trailer-Identifikatoren, Querverweisdaten und offsetabhängige Trailer aus und normalisiert dabei erzeugte Ressourcenidentifikatoren und XMP-Instanz-UUIDs, sodass Änderungen an Seiten, Ressourcen, Anhängen und Metadaten das Ergebnis steuern
- Interne Ressourcennamen und Teilmengen-Tags eingebetteter Schriften sind stabil, solange der deterministische Modus aktiv ist, einschließlich Ausgabe, die Dictionaries in komprimierte Objekt-Streams packt; Standardspeicherungen behalten randomisierte Identifikatoren
Version 3.493.0
Hinzugefügt
LoadFromMappedFileundDAOpenMappedFileöffnen lokale PDFs über begrenzte, schreibgeschützte Speicherabbild-Ansichten, mit einer Option, die Abbildung zu verlangen oder einen portablen Datei-Stream-Fallback zuzulassenGetMappedFileInfoundDAGetMappedFileInfoberichten aktiven Abbildungszustand, Datei- und Fenstergrößen, aktuelle Ansicht, Lesemenge und Umabbildungsaktivität
Geändert
- Abgebildete Quellen behalten ein an der Allokation ausgerichtetes Fenster bei und bilden es über große zurückgestellte Objekt- oder Stream-Lesevorgänge neu ab, wodurch die Adressraumbelegung unabhängig von der Dateigröße begrenzt bleibt
- Lokale abgebildete und callback-gestützte Quellen teilen sich jetzt cursorunabhängige absolute Objektscheiben-Lesevorgänge, während bestehende Datei-Lade-APIs ihr bisheriges Verhalten behalten
Version 3.492.0
Hinzugefügt
GetPageThumbnailDataToStreamundGetPageThumbnailDataToStringlegen codierte oder filterdecodierte Nutzdaten von Seitenminiaturbildern offen, währendDeletePageThumbnaildie Seitenmetadaten entfernt, ohne die ausgewählte Seite zu verändern
Geändert
- Abfragen nach Vorhandensein und Metadaten von Miniaturbildern verlangen jetzt einen Bild-Stream; fehlerhafte Nicht-Stream-Einträge bleiben weiterhin entfernbar, statt als brauchbare Miniaturbilder gemeldet zu werden
- Rohausgabe wird in begrenzten Blöcken kopiert, und decodierte Ausgabe verwendet die Streaming-Filterpipeline erneut, wodurch terminale Bildcodierungen wie DCT und JPX für Aufrufer erhalten bleiben, die native Nutzdaten benötigen
Version 3.491.0
Hinzugefügt
InsertPageElementClipPath,ReplacePageElementClipPathundDeletePageElementClipPathfügen einem exakten Seitenelement lokale Beschneidung hinzu oder bearbeiten eine erfasste Quellkomponente, mit Nicht-null- und Even-Odd-Füllregeln
Geändert
- Beschneidungskomponenten behalten jetzt ihre Quellebene, Befehlsspanne, Verschachtelungstiefe und ihren normalisierten Fingerabdruck, sodass editierbare Quellen von anfänglichen Grenzen, Textumrissen, verschachtelten Formularen, fehlerhaften Pfaden und ebenenübergreifenden Pfadobjekten unterschieden werden
- Lokale Beschneidung verwendet ausgewogene Grafikzustandsbereiche, einschließlich gültiger Textobjekt-Rekonstruktion, während das Entfernen einer Beschneidung von einem Pfad, der auch zeichnet, den ursprünglichen Strich oder die Füllung bewahrt
Version 3.490.0
Hinzugefügt
SetPageElementMarkedContentTextProperty,SetPageElementMarkedContentPropertySourceundDeletePageElementMarkedContentPropertybearbeiten Unicode-Text, serialisierte PDF-Objekte und bestehende Eigenschaften an einem exakt aufgezählten Marked-Content-Rahmen
Geändert
- Benannte Eigenschaftenressourcen werden über seitenlokales Copy-on-Write bearbeitet, inline Eigenschaftenlisten werden automatisch hochgestuft, wenn ein indirekter Wert eine Ressource erfordert, und das Löschen der letzten Eigenschaft verdichtet
BDCzuBMC - Marked-Content-Bearbeitungen prüfen den erfassten Quellbefehl und den aufgelösten Eigenschafts-Schnappschuss, bevor sie schreiben, und erklären danach alle Seitenelement-Handles für ungültig
Version 3.489.0
Hinzugefügt
GetTextBlockCharContentLocationundDAGetTextBlockCharContentLocationordnen jede extrahierte UTF-16-Position ihrer Inhaltsebene, ihrem Stream, ihrem Befehl, ihrem Operanden, ihremTJ-Array-Element und ihrem codierten Quellbytebereich zuReplaceTextBlockCharSourceBytesführt einen durch Fingerabdruck gesicherten lokalen Ersatz der zugeordneten schriftcodierten Bytes durch und bewahrt dabei benachbarte Strings und Sperrungswerte
Geändert
- Erzeugte,
/ActualText-, verschachtelte Formular-, transkodierte und ebenenübergreifende Positionen werden ausdrücklich als schreibgeschützt eingestuft, während Ligatur-Erweiterungen ihre gemeinsame Quellglyphenspanne behalten - Die Inhaltsspannen-Suche verwendet binäre Suche, und extrahierte Listen behalten zwei unabhängige Ebenen-Fingerabdrücke, um veraltete Bearbeitungen vor dem Parsen oder Neuschreiben des Seiteninhalts zurückzuweisen
Version 3.488.0
Hinzugefügt
ImportPageAsFormXObjectimportiert eine Seite aus einem beliebigen geöffneten Dokument als wiederverwendbares Erfassungsseiten-Handle, ohne einen der beiden Seitenbäume zu verändern
Geändert
- Der Seiten-zu-Formular-Import kopiert nur decodierten Seiteninhalt, die unabhängige geerbte Ressourcen-Closure sowie formularverträgliche Gruppen-, Metadaten- und PieceInfo-Einträge und lässt Annotationen, Miniaturbilder und nur für Seiten bestimmte Struktur aus
- Ausgewählte Seitenboxen folgen Standard-Fallback-Regeln, geerbte Quadrantendrehung wird in die Formular-Matrix normalisiert, und wiederholte Platzierungen teilen sich einen komprimierten Inhalts-Stream
Version 3.487.0
Hinzugefügt
- Seitenelement-Handles legen jetzt ihren aktiven Marked-Content-Stapel von außen nach innen, Tags, validierte
/MCID-Werte, ursprüngliche Eigenschaftsoperanden und jeden Eintrag aus aufgelösten direkten oder ressourcengestützten Dictionaries offen
Geändert
- Die Verfolgung des Inhaltszustands löst benannte
/Properties-Ressourcen einmal je Ressourcenumfang auf und behält unveränderliche Marked-Content-Rahmen bei, ohne Seiteninhalt für wiederholte Abfragen neu zu parsen - Die Marked-Content-Verschachtelung wird unabhängig von
q/Qverfolgt und auf jeden Seiten- oder Formularinhalts-Stream begrenzt, sodass fehlerhafte ungeschlossene Folgen nicht in einen anderen Stream übergreifen können
Version 3.486.0
Hinzugefügt
- Seitenelement-Handles legen jetzt jede Komponente ihrer effektiven Beschneidungsschnittmenge offen, einschließlich transformierter Verschiebe-, Linien-, Kubik- und Schließbefehle, Nicht-null- oder Even-Odd-Füllregeln, Komponentengrenzen und Diagnostik zur kombinierten Region
Geändert
- Die Verfolgung des Inhaltszustands behält unveränderliche Beschneidungsketten über Seitengrenzen,
q/Q-Wiederherstellungen und Formulargrenzen hinweg bei und teilt unveränderte Komponenten zwischen Schnappschüssen - Die Seitenelement-Aufzählung sammelt Pfadänderungsziele und Grafikzustände im selben Inhaltsdurchlauf und vermeidet so den bisherigen zusätzlichen Pfadbereichs-Parselauf
Version 3.485.0
Hinzugefügt
GetTextBlockCharUnicodeFlagsundDAGetTextBlockCharUnicodeFlagslegen je Zeichen Diagnostik zur Unicode-Zuordnung, zum Fallback, zu fehlender Zuordnung, zu nicht zugeordneten Codes, zu ungültiger Zuordnung und zu Ersatzzeichen offen
Geändert
- Die Textextraktion behält die Unicode-Zuordnungsherkunft neben jeder UTF-16-Codeeinheit bei und validiert Surrogatpaare, bevor
ToUnicode-Ausgabe akzeptiert wird - Ungültige oder teilweise Zuordnungen verwenden jetzt einen unabhängigen Fallback über die Schriftcodierung und geben U+FFFD aus, wenn kein sinnvoller Fallback existiert
Behoben
- Identity-Unicode-Zuordnungen geben jetzt eine zugeordnete Codeeinheit zurück, statt den Quellcodewert als Ausgabeanzahl zu behandeln
Version 3.484.0
Hinzugefügt
- Textblöcke des ausgewählten Dokuments und des Direktzugriffs legen jetzt je Zeichen Basislinienwinkel, Ursprünge, Zellmatrizen, um Unterlängen korrigierte Quads und achsenparallele Boxen offen
GetTextBlockCharBoxergänzt ein Pendant für das ausgewählte Dokument zur bestehenden Direktzugriff-Boxabfrage
Geändert
- Die Textextraktion behält Basislinien-, Vorschub- und Zellhöhenvektoren je einmal pro Zeichen, sodass Geometrieabfragen Drehung, Scherung und umgekehrte Basislinien in konstanter Zeit bewahren
DAGetTextBlockCharBoxleitet sein Ergebnis jetzt direkt aus der behaltenen Zeichengeometrie ab, statt jede vorausgehende Breite zu durchlaufen
Behoben
- Zeichenbreiten und Textblock-Ausgaben des ausgewählten Dokuments wenden die konfigurierte Koordinatenskalierung jetzt genau einmal an
Version 3.483.0
Hinzugefügt
GetTextBlockCharSourceFlagsundDAGetTextBlockCharSourceFlagslegen bitweise Herkunftsangaben für erzeugte Zeichen, Trennstriche und berücksichtigte/ActualText-Ersatzungen offen
Geändert
- Die Textblockextraktion behält jetzt Zeichenquell-Flags neben den bestehenden Text- und Vorschub-Arrays bei, einschließlich aus großen Zeichenabständen abgeleiteter Leerzeichen, ohne Seiteninhalt für wiederholte Abfragen neu zu parsen
Version 3.482.0
Hinzugefügt
GetXRefDiagnosticsundDAGetXRefDiagnosticsgeben JSON-Berichte für effektive Querverweistypen, Bytepositionen, Trailer-Grenzen, Eintragsanzahlen sowie jede Tabelle oder jeden Stream in der Revisionskette zurück
Geändert
- Hybridreferenz-Verknüpfungen, Wiederholungen nach verschobenem Header und Wiederherstellungsentscheidungen für editierbare Dokumente bleiben jetzt als eigene Diagnosebelege sichtbar, einschließlich Rohobjekt-Scans, Wiederherstellung komprimierter Objekte und synthetisierter Trailer
Version 3.481.0
Hinzugefügt
- Callback-gestützte und Direktzugriff-Bytebereich-Dokumente können Hintergrund-Vorabruf-Aufträge für Seiten-, Formular- oder Objektabhängigkeiten einreihen, mit vier Planungsprioritäten, Abbruch, Warten und JSON-Fortschrittsdiagnostik
- Der Abhängigkeits-Vorabruf wiederholt die Ermittlung fehlender Bereiche, bis das Ziel bereit ist, mit konfigurierbaren Grenzen für Quellbytes, Vorauslesen und Planungsdurchläufe
Geändert
- Jeder Bytebereich-Stream besitzt jetzt einen nach Priorität geordneten FIFO-Worker, der den begrenzten Bereichscache teilt, dabei aber isolierten Parserzustand verwendet, sodass Vordergrund-Dokumentarbeit ohne gemeinsamen veränderlichen Leser fortlaufen kann
- In der Warteschlange stehender Abbruch führt keine Quelllesevorgänge aus, laufender Abbruch wird vor jedem Block geprüft, und die Zerstörung des Streams leitet ausstehende Arbeit ab, bevor seine Quelle freigegeben wird
Version 3.480.0
Hinzugefügt
LoadFromRangeSourcenimmt einen optionalen, nichts abrufenden Verfügbarkeits-Callback für progressive Speicher entgegen, mit Abfragen zum ausgewählten Dokument und zum Direktzugriff über die Bereitschaft von Seiten, Formularen und indirekten Objekten- Verfügbarkeitsberichte geben vereinigte erforderliche und fehlende Bytebereiche, Abhängigkeitsvollständigkeit und Objektdurchlaufzähler als JSON zurück
Geändert
- Bytebereich-Streams können gecachte und quellseitig verfügbare Abdeckung prüfen, ohne Bytes zu lesen, den Stream-Cursor zu bewegen oder Cachestatistiken zu verändern
- Die Seitenverfügbarkeit folgt nur dem Zielpfad im Seitenbaum und erreichbaren Verarbeitungsabhängigkeiten, während nicht verfügbare Bereiche gemeldet werden, ohne den Lese-Callback aufzurufen
Version 3.479.0
Hinzugefügt
TByteRangeStream.ReadAtbietet cursorunabhängige absolute Lesevorgänge mit Single-Flight-Freigabe im selben Block, begrenzter Zusammenführung benachbarter Anforderungen und einem konfigurierbaren Sammlungsfenster- Die Bereichs-Cache-Diagnostik berichtet jetzt über ausstehende Anforderungen, das aktive Sammlungsfenster, durch Zusammenführung bediente Anforderungen und physische Lesevorgänge, die mehrere Blöcke abdeckten
Geändert
- Zurückgestellte Lesevorgänge aus callback-gestützten und URL-gestützten Dokumenten verwenden jetzt absolute Offsets, serialisieren Quell-Callbacks und fassen gleichzeitige benachbarte Blöcke zu Quelllesevorgängen mit einer Obergrenze von 16 MiB zusammen
- Das Leeren eines Bereichs-Caches während eines laufenden Abrufs verhindert jetzt, dass diese veraltete Fertigstellung den Cache oder die Zähler nach dem Leeren wieder befüllt, während bestehende Wartende weiterhin ihre Bytes erhalten
Version 3.478.0
Hinzugefügt
- Bytebereich-Streams behalten jetzt ausgerichtete Blöcke unter einem expliziten Least-Recently-Used-Bytebudget und berichten Fensteranzahl, gehaltene Bytes, Treffer, Fehltreffer, Verdrängungen, Quelllesevorgänge, Quellbytes und wiederholte Lesevorgänge
LoadFromRangeSourceund DelphiDAOpenFromURLnehmen ein anfängliches Cache-Budget entgegen, mit neuen APIs für das ausgewählte Dokument und den Direktzugriff, um den aktiven Cache zu inspizieren, seine Größe zu ändern und ihn zu leeren
Geändert
- Das Vorwärmen der linearisierten Erstseite bleibt jetzt innerhalb des konfigurierten Budgets für gehaltene Bytes
Version 3.477.0
Hinzugefügt
LoadFromRangeSourcelädt ein vollständiges editierbares Dokument über einen vom Aufrufer bereitgestellten Callback für zufällige Bytebereiche, sodass HTTP-, Datenbank-, Objektspeicher- und benutzerdefinierte Eingaben entfernt bleiben können, während der Parser nur die Bereiche holt, die für das Laden und für zurückgestellte Vorgänge benötigt werden- Der neue
TPDFlibRangeReadEvent-Vertrag nimmt absolute Offsets, Zielpuffer und begrenzte Anzahlen entgegen, wobei der Callback-Anbieter während der Lebensdauer des geladenen Dokuments aufrufereigen bleibt
Version 3.476.0
Hinzugefügt
- PDF/VT-3-Erstellung über PDF/X-6-, PDF/X-6p- und PDF/X-6n-Basen hinzugefügt, mit synchronisierten Identifikations-Metadaten, verpflichtender Dokumentteil-Abdeckung und eigenem Preflight
Geändert
- Dokumentteil-Hierarchien geben jetzt standardmäßige untergeordnete Blöcke mit 8192 Einträgen aus und validieren sie, zusammen mit strengeren XML-Namen- und Typbeschränkungen
Version 3.475.0
Geändert
TPDFlibContentGraphicsState.BlackPointCompensationmeldet jetzt den effektiven ZustandDefault,ONoderOFFüber Seiteninhalt, Grafikzustands-Wiederherstellung und rekursiv aufgezählte Form-XObjects hinweg- Das PDF/X-6-Preflight lehnt jetzt
UseBlackPtComp-Einträge ab, deren Typ oder Wert außerhalb des PDF-2.0-Schwarzpunktkompensationsmodells liegt
Version 3.474.0
Geändert
- Das PDF/X-6-Preflight validiert jetzt druckbare Annotations-Flags, deterministische Normalerscheinungsbilder, Schaltflächen-Erscheinungszustände, AcroForm- und Signaturfelder, Ausschlüsse von vom Betrachter erzeugten Erscheinungsbildern sowie sichere Aktionsplatzierung und -ketten
- Die PDF/X-6-Erstellung erlaubt JavaScript nur auf direkt aktivierten Link-Annotationen, beschränkt benannte Aktionen auf Seitennavigation und lehnt unsichere, dokument-, seiten- und formularfeldbezogene Aktionspfade ab, bevor sie das Dokument verändern
Version 3.473.0
Hinzugefügt
SetPDFXModeakzeptiert jetzt Modus 5 für den Prozessfarb-Austausch PDF/X-6p und Modus 6 für den n-Farbmittel-Austausch PDF/X-6n, beide mit PDF 2.0 und externen Ausgabeprofil-Referenzen- Die neuen APIs
SetOutputIntentProfileReferenceundAddOutputIntentProfileReferenceURLerzeugen/DestOutputProfileRef-Dictionaries auf Dokument- oder Seitenebene, leiten ICC-Prüfsumme, Version und Farbraum-Signatur ab, validieren Ausgabegeräte- und Farbmittel-Metadaten und bewahren einen oder mehrere RFC 3986-Abruforte, ohne die Profilbytes einzubetten
Geändert
- Das PDF/X-Preflight erkennt die PDF/X-6p- und PDF/X-6n-XMP-Identifikatoren und validiert den externen Profiltyp, Metadatenlängen, Prozessfarb- oder n-Farbmittel-Signaturen, Farbmitteltabellen sowie URL-Dateispezifikationen
GetEffectivePageOutputIntentJSONberichtet jetzt über Metadaten des referenzierten Profils, einschließlichprofileCS,profileName,iccVersion,checkSum,profileURLsundcolorants, nach Erstellung oder Round-Trip-Laden
Version 3.472.0
Hinzugefügt
- Die neuen APIs
SetPageOutputIntent,ClearPageOutputIntentsundGetEffectivePageOutputIntentJSONerzeugen, entfernen und untersuchen PDF-2.0-Ausgabeabsichten auf Seitenebene, einschließlich des wirksamen Fallbacks auf Dokumentebene
Geändert
- Das PDF/X-6-Preflight akzeptiert jetzt Ausgabeabsichten auf Seitenebene, gibt ihnen Vorrang vor der Dokumentabsicht und prüft, dass jede Seite zu einem eingebetteten Gray-, RGB- oder CMYK-Profil auflöst
Version 3.471.0
Hinzugefügt
SetPDFXMode(4)erstellt PDF/X-6-Dokumente für den vollständigen Austausch mit PDF-2.0-Syntax, PDF/X-6-XMP-Identifikation und einer eingebetteten farbverwalteten Ausgabeabsicht
Geändert
- Das PDF/X-Preflight erkennt PDF/X-6, verlangt PDF-2.0-Syntax und prüft, dass die Ausgabeabsicht eine eingebettete Gray-, RGB- oder CMYK-ICC-Profilerklärung trägt
Version 3.470.0
Hinzugefügt
- Das HTML-Layout unterstützt Flexbox mit Richtung, Umbruch, grow, shrink, basis, gaps, Hauptachsenverteilung und Ausrichtung auf der Querachse
- Das HTML-Layout unterstützt explizite CSS-Grid-Tracks, fraktionale Größenbemaßung, wiederholte Tracks, spans, automatische Platzierung per Zeile oder Spalte, gaps und Elementausrichtung
- HTML-Stories unterstützen nummerierte Fußnoten, die den unteren Rahmenbereich reservieren, den Fließtext umbrechen und die Nummerierung über Seitenfortsetzungen hinweg bewahren
Geändert
- HTML-Vermessung und zwischengespeichertes Replay schließen Flexbox-, Grid- und Fußnotengeometrie ein und behalten dabei die begrenzten Container- und Track-Limits bei
Behoben
- Massenweises Leeren und Umbenennen von Schlüsseln in PDF-Dictionaries erklärt zwischengespeicherte Schlüsselindizes für ungültig und verhindert so veraltete Lookups bei Speicherkompaktierung und wiederholter Dokumentverarbeitung
Version 3.469.1
Behoben
- EMF-Import und Canvas-DC-Konvertierung bewahren jetzt Unicode-Text und Glyphenzuordnungen für eingebettete und nicht eingebettete TrueType-Schriften
NewPageFromCanvasDChängt jede angeforderte Seite an, währendTPDFlibPrinterjeden Canvas genau einmal übernimmt, ohne Seiten zu verlieren oder zu verdoppeln
Version 3.469.0
Hinzugefügt
SetImageSoftMaskExhängt Graustufen-Weichmasken mit optionalen Matte-Farben anNewSoftMaskGraphicsStateerzeugt wiederverwendbare Grafikzustände für Alpha, Luminanz, Transferfunktionen und Zurücksetzen aus aufgenommenen Form-XObjectenFlattenTransparencyersetzt ausgewählte Seiten durch deckende statische Inhalte bei wählbarer Auflösung und Hintergrundfarbe für ältere PDF-Versionen und Archivierungsworkflows
Geändert
- Die Transparenzabflachung verarbeitet eine Seite nach der anderen, normalisiert die visuelle Drehung, bewahrt optional interaktive Annotationen, unterstützt Fortschritt und Abbruch und entfernt standardmäßig unerreichbare Transparenzressourcen
Version 3.468.0
Hinzugefügt
- AVIF-, HEIF-, HEIC- und JPEG-XL-Bildeingaben lassen sich über die vorhandenen Bild-APIs oder über die dedizierten Methoden
AddModernImageFromFile,AddModernImageFromStreamundAddModernImageFromStringimportieren SetModernImageCodecLibrary,ModernImageCodecAvailableund ein Decoder-Callback bieten eine mit auslieferbare In-Process-Codec-Auswahl ohne temporäre Konvertierungsdateien
Geändert
- Die Decodierung moderner Bildformate bewahrt Quellorientierung, Alpha, ICC-Profile und bis zu 16 Bit Kanaltiefe, bevor die native PNG-Bildpipeline wiederverwendet wird
Behoben
- Die Validierung der Schlüsselverwendung in Signatur-Seeds liest jetzt den nativen Zertifikatskontext mit korrekter Zeigerausrichtung auf Win64
Version 3.467.0
Hinzugefügt
DeduplicateSimilarImagesführt wahrnehmungsgleiche Bild-XObjecte zusammen, mit konfigurierbaren Schwellenwerten für Difference-Hash, mittleren Kanalfehler und maximalen Kanalfehler, Unterstützung für Probeläufe und optionaler Einsammlung verwaister ObjekteGetSimilarImageDeduplicationReportJSONundTPDFlibImageSimilarityDedupStatsberichten über Decodierungsabdeckung, indizierte Kandidatenbearbeitung, akzeptierte Fehler, umgeleitete Verweise und die geschätzte Ersparnis bei den codierten Nutzdaten
Geändert
- Die approximative Bildzuordnung erfordert identische semantische Bild-Dictionaries, bestätigt decodierte 64-×-64-Farbmuster und nutzt einen achtbändigen Hash-Index, um erschöpfende paarweise Vergleiche zu vermeiden
Version 3.466.0
Hinzugefügt
EncodeImageToJPXStreamundEncodeImageToJPXFilecodieren Bildeingaben als konfigurierbares verlustbehaftetes oder umkehrbares verlustfreies JPEG 2000 in einem standardmäßigen JP2-ContainerAddImageJPXFromFile,AddImageJPXFromStreamundAddImageJPXFromStringfügen codierte Bildeingaben direkt alsJPXDecode-Bild-XObjecte hinzu
Geändert
- Die JPEG-2000-Bilderzeugung validiert Qualitäts- und Verlustfrei-Optionen, stellt aufrufereigene Eingabestream-Positionen wieder her, entfernt unvollständige Ausgaben bei Fehlschlag, verlangt automatisch PDF 1.5 und behält die bestehende PDF/A-1-Kompatibilitätsprüfung bei
Version 3.465.0
Hinzugefügt
RenderPageTileToStreamundRenderPageTileToFilerendern beliebige Regionen in Gerätepixeln mit abgeschnittenen Überlappungen sowie weißem, transparentem Schlüsselfarb- oder benutzerdefiniertem HintergrundRenderPageTilesToFiles,RenderPageTiledToStreamundRenderPageTiledToFileerzeugen parallele Kachelraster oder nähen deren exakte Kerngrenzen zu einem nahtlosen Seitenbild zusammenSetRenderSurfaceCacheLimit,GetRenderSurfaceCacheInfoundClearRenderSurfaceCachebieten einen opt-in-, threadsicheren LRU-Cache mit getrennten Budgets für Einträge und Bytes für vollständig komponierte Kacheloberflächen
Geändert
- Die parallele Einzelseiten-Renderung wärmt jetzt eine gemeinsame Display-Liste vor dem Verteilen an Worker vor, sodass Inhalts-Streams nur einmal geparst werden; nicht unterstützte Compiler behalten einen deterministischen seriellen Pfad
Version 3.464.0
Hinzugefügt
GetXFARenderedPageCountund die Familie ausRenderXFAPageToStream,RenderXFAPageToStringundRenderXFAPageToFileerzeugen statische Rasterseiten aus XFA-Vorlagen, gebundenen Datensätzen und expliziten Seitenumbrüchen, ohne das Quelldokument zu verändernConvertXFAToAcroFormwandelt unterstützte Text-, Passwort-, Auswahl-, Kontrollkästchen-, Schaltflächen- und Signatur-Steuerelemente in bearbeitbare Felder um und bewahrt dabei Namen, Werte, Optionen, Flags, Seiten und Begrenzungen
Geändert
- Die große einmalige Flate-Komprimierung übergibt dem nativen Backend jetzt einen geschützten Eingabeschwanz und verhindert so ungültige Adler-Prüfsummen in PNG-Ausgaben hoher Auflösung, ohne die komprimierte Ausgabe aufzugeben
Version 3.463.0
Hinzugefügt
RenderPageLayerToStream,RenderPageLayerToStringundRenderPageLayerToFileexportieren den Basis-Inhalt, Annotationen, Formularfelder oder alle interaktiven Objekte einer Seite als unabhängig komponierbare PNG-EbenenFlattenFormFieldTaggedundFlattenFormFieldsTaggedOnPageRangebacken Felderscheinungen in statischen Seiteninhalt ein und bewahren oder erzeugen dabei zugänglicheForm-Struktursemantik
Geändert
- Das reine Interaktiv-Rendering überspringt den Interpreter für Basis-Inhalte, verwendet einen einzigen Durchlauf für Annotationserscheinungen und schreibt einen transparenten Hintergrund, ohne persistente Renderer-Einstellungen zu ändern
- Das getaggte Abflachen wandelt eine Widget-spezifische ParentTree-
OBJR-Verknüpfung in getaggten Seiteninhalt vom TypMCRum, bewahrt bestehenden Alternativ- und Ist-Text und lässt Felder unangetastet, wenn eine sichere Verknüpfung nicht nachweisbar ist
Version 3.462.0
Hinzugefügt
HitTestAnnotationundGetAnnotationHitsJSONfinden das oberste oder alle Annotationen an einem Seitenpunkt, mit subtype-bewusster Geometrie, Toleranz, Sichtbarkeit und Options für BegrenzungsrahmenMoveAnnotationZOrderordnet bestehende Annotationsverweise an Ort und Stelle neu an, undSimplifyInkAnnotationsreduziert Freihandstrich-Punkte mit begrenzter geometrischer Abweichung und detaillierten Statistiken
Geändert
- Die Annotations-Interaktion prüft jetzt Markierungs-Quadrilaterale, Vektorpfade, Ellipsengeometrie und gefüllte Bereiche, nachdem ein schneller Rechteck-Ausschluss griff, während veränderte Freihand-Erscheinungen automatisch neu aufgebaut werden, sofern nicht ausdrücklich aufgeschoben
Version 3.461.0
Hinzugefügt
RepairAnnotationAppearancesbaut fehlende, veraltete, ungültige, zustandsabweichende oder unsichtbare normale Erscheinungen über alle Seiten hinweg neu auf und liefert Statistiken zu Problemen und AnnotationskategorienGetAnnotationAppearanceAuditJSONmeldet Erscheinungsprobleme je Annotation und aggregierte Zähler, ohne das Dokument zu verändern
Geändert
- Die Erzeugung von Erscheinungen für Markierungen, Formen, Pfade, Freitext und Icons teilt sich jetzt einen Dokument-Scanner mit einzelnem Durchlauf, inkrementelle Ausgabe-Builder und kompakte Quell-Fingerabdrücke für deterministische Veraltungserkennung
Version 3.460.0
Hinzugefügt
ExecuteFormFieldScriptführt einen begrenzten lokalen Teilbestand an Validierungs-, Berechnungs- und Formatierungsaktionen für Formulare aus, ohne Datei-, Netzwerk-, Prozess-, UI- oder dynamische Codefähigkeiten preiszugebenRecalculateFormFieldsführt vollständige oder auf Abhängigkeiten begrenzte inkrementelle Berechnungen durch, undGetFormCalculationGraphJSONberichtet Feldabhängigkeiten, Positionen in der Berechnungsreihenfolge und Zyklen
Geändert
- Die Neuberechnung von Formularen wertet in eine private Wertmomentaufnahme aus, ordnet bereite Felder nach der AcroForm-Berechnungsreihenfolge, lehnt Abhängigkeitszyklen vor einer Veränderung ab und schreibt Werte erst fest, wenn der gewählte Graph vollständig abgearbeitet ist
Version 3.459.0
Hinzugefügt
MergeDocumentExergänzt explizite Richtlinien für doppelte Formularfelder: Zusammenführung ablehnen, einen gemeinsamen Namen mit synchronisierten Werten bewahren oder deterministische numerische Suffixe vergeben
Geändert
- Die Ablehnung doppelter Felder wird geprüft, bevor Objektnummern, Seitenbäume oder Formulararrays verändert werden, sodass Ziel- und Quelldokument nach einer abgelehnten Zusammenführung weiter verwendbar bleiben
Version 3.458.0
Hinzugefügt
DrawOpenTypeText,GetOpenTypeTextWidthundGetOpenTypeGlyphRunformen, vermessen, zeichnen und untersuchen Text direkt über ein bestehendes TrueType- oder OpenType-Schrift-Handle, ohne einen installierten Schriftnamen zu benötigen- Portable native OpenType-Shaping- und Subsetting-Module sind für 32-Bit- und 64-Bit-Windows enthalten, mit baubaren Linux- und macOS-Quellen und einer Umgebungsüberschreibung für eigene Bereitstellungspfade
Geändert
- Das Zeichnen komplexer Schriften bevorzugt jetzt Shaping über GSUB- und GPOS-Schriftbytes, einschließlich Substitutionen, Kerning, kursiver Verbindungen und Mark-Anbindungen, während ein begrenzter Pascal-Fallback arabische Joining-Formen und verbreitete OpenType-Layout-Lookup-Formate abdeckt, wenn das native Modul nicht verfügbar ist
- Das Subsetting geformter Schriften bewahrt jetzt Glyph-IDs und schließt Layout-, Variablen-Schrift- und Farb-Schrift-Abhängigkeiten ein, darunter COLR/CPAL- und fvar/gvar/HVAR-Daten
Version 3.457.0
Hinzugefügt
CreateOpenTypeFontVariationerzeugt wiederverwendbare statische CFF-Schriften aus angeforderten CFF2-Achsenkoordinaten einer Variablen-Schrift
Geändert
- Der OpenType-CFF2-Import wählt jetzt eine statische Standardinstanz zum unmittelbaren Zeichnen und Einbetten und bewahrt zugleich das Variablenprogramm für eine spätere Instanziierung
- Die CFF2-Instanziierung wertet Variation Stores,
vsindexundblendüber expandierte lokale und globale Subroutinen aus, wendet horizontale und globale Metrik-Variationen an und gibt eine begrenzte, prüfsummenkorrekte CFF1-OpenType-Schrift für die bestehenden CFF-Einbettungs- und Subsetting-Pfade aus
Version 3.456.0
Hinzugefügt
- WOFF2-Eingabe für die TrueType-, OpenType- und Collection-Dateieinstiegspunkte ab Windows 10 Version 1703, einschließlich transformierter TrueType-Konturen und Metriken, CFF-Schriften und Collection-Schnitte
Geändert
- Web-Schrift-Container werden einmal im Speicher entpackt, verwenden die beste verfügbare Unicode-cmap für die Zeichenzuordnung und betten die entstandene sfnt ein beziehungsweise exportieren sie, statt den komprimierten Container
Version 3.455.0
Hinzugefügt
GetFontVariationAxeslegt jede TrueType-Achse einer Variablen-Schrift mit ihrem lokalisierten Namen, Designbereich, Standardwert und versteckten Zustand offen, währendCreateTrueTypeFontVariationaus angeforderten Achsenkoordinaten eine wiederverwendbare statische Schrift erzeugt
Geändert
- Die TrueType-Instanziierung wendet
avar-,gvar-,HVAR- undMVAR-Daten an, vereinfacht zusammengesetzte Konturen, baut horizontale und globale Metriken neu auf, entfernt veraltete Variations- und Hinting-Tabellen und gibt eine prüfsummenkorrekte sfnt für Zeichnen, Einbetten, Subsetting und Glyph-Inspektion aus SaveFontToFilekann gehaltene TrueType-Programme im Speicher direkt exportieren, einschließlich neu erzeugter Instanzen von Variablen-Schriften, bevor ein PDF gespeichert wurde
Version 3.454.0
Hinzugefügt
GetFontColorGlyphundGetFontColorGlyphByIndexlegen COLR-v0- und -v1-Paint-Graphen, CPAL-Paletten, SVG-in-OT-Dokumente und eingebettete Bitmap-Strikes für direkte anwendungsseitige Inspektion und Renderung offen
Geändert
- Die Inspektion von Farb-Schrift-Tabellen nutzt verzögerten begrenzten sfnt-Zugriff und nimmt am gemeinsamen Byte-Budget des Schrift-Caches teil, um ein voreiliges Parsen von Konturen bei großen Farb-Schriften zu vermeiden
Version 3.453.0
Hinzugefügt
SetFontCacheLimit,GetFontCacheInfoundClearFontCachestellen ein gemeinsames Byte-Budget, Least-Recently-Used-Verdrängung sowie Treffer-, Fehl- und Belegungsstatistiken für gehaltene Schrift-Ressourcen, geformte Textläufe und geparste Konturprogramme bereitGetFontGlyphIndexordnet volle Unicode-Codepunkte über TrueType-cmap-Tabellen der Formate 4 und 12 zu, währendGetFontGlyphOutlineeinfache und transformierte zusammengesetzte Pfade mit roher Weite, linkem Seitenabstand, Begrenzungsrahmen und Units-per-em-Metriken zurückgibt
Geändert
- Wiederholte Messungen und Zeichnungen geformten Textes wiederverwenden tief kopierte geformte Läufe unter dem gemeinsamen Cache-Budget, und die wiederholte Glyph-Inspektion verwendet das geparste Schriftprogramm wieder, statt es für jedes Glyph erneut zu parsen
- Binäre Schriftprogramme, die aus Strings und WOFF-Containern geladen wurden, behalten einen eigenen Rohbyte-Stream und verhindern so Text-Rekodierung und abgelaufene Stream-Verweise beim verzögerten Tabellenzugriff
Version 3.452.0
Hinzugefügt
soCanonicalEquivalentlässt Textsuche, Stapelsuche und Ersetzungsworkflows kanonisch äquivalenten NFC- und NFD-Text treffen und meldet Offsets und Längen im ursprünglich extrahierten TextsoGraphemeClustersbeschränkt Treffer auf Grenzen erweiterter Graphem-Cluster und lässt den Platzhalter?genau einen vollständigen Cluster verbrauchen; das schützt Surrogatpaare, Kombinationssequenzen, Emoji-ZWJ-Sequenzen, Flaggen und indische Ligaturen
Geändert
- Unicode-Normalisierung und Graphem-Segmentierung verwenden kompakte generierte Unicode-15.1-Tabellen auf jeder unterstützten Plattform, ohne auf einen Textdienst des Betriebssystems angewiesen zu sein
Version 3.451.0
Hinzugefügt
ExternalizeInlineImagesersetzt wiederholte unterstützte Inline-Bilder über einen ausgewählten Seitenbereich hinweg durch ein gemeinsames Bild-XObject, wenn die geschätzte serialisierte Größe sinkt
Geändert
- Die Externalisierung von Inline-Bildern bewahrt Bildmasken, Interpolation, Decode-Arrays, Filter und Decode-Parameter und komprimiert ungefilterte Nutzdaten bei Bedarf mit Flate, wenn dies kleiner ausfällt
- Exaktes SHA-256-Gruppieren, deterministische Ressourcennamen, Beseitigung doppelter Seiten, Fortschrittsmeldung und kooperativer Abbruch halten Optimierungsergebnisse begrenzt und wiederholbar
- Unbekannte Inline-Dictionary-Einträge und Nicht-Device-Farbräume bleiben byteidentisch, statt ohne vollständige Semantik umgeschrieben zu werden
Version 3.450.0
Hinzugefügt
NormalizeContentStreamsnormalisiert Leerzeichen und numerische Token über einen ausgewählten Seitenbereich hinweg und bewahrt dabei Operatoren, Stringwerte und Inline-Bild-Nutzdaten
Geändert
- Die Inhaltskomprimierung gibt jetzt kanonische Token aus, selbst wenn die Peephole-Optimierung keine redundanten Anweisungen findet
Behoben
- PDF-Reelle Zahlen mit explizit vorangestelltem Pluszeichen behalten ihren Wert beim Parsen und Normalisieren jetzt bei
- Ersetzte Stream-Daten behalten keine veralteten Decode-Parameter aus ihrer früheren Filterpipeline mehr zurück
Version 3.449.0
Hinzugefügt
SetTempFileQuota,GetTempFileQuotaundCompactDocumentMemorystellen begrenztes festplattengestütztes Object-Spooling mit automatischem In-Memory-Fallback bereit
Geändert
- Temporäre Objektdaten verwenden jetzt eine generationsbewusste indizierte Suche und bleiben verfügbar, nachdem das Spool-Schreibhandle geschlossen wurde
Version 3.448.0
Hinzugefügt
SetRecoveryModeundGetRecoveryModewählen strengen trailerbasierten Reparaturmodus oder Best-Effort-Wiederherstellung, bevor beschädigte PDF-Eingaben geladen werden
Geändert
SaveToStreamschreibt jetzt direkt in nur schreibbare, nicht durchsuchbare Ziele und behält dabei den bestehenden seriellen Chunk-Ausgabepfad bei- Best-Effort-Wiederherstellung bleibt der Standard, während der strenge Modus die Roh-Rekonstruktion abschaltet und der Reparaturmodus einen erhaltenen Trailer verlangt, statt einen zu synthetisieren
Version 3.447.0
Hinzugefügt
SetOptimizationWorkersundGetOptimizationWorkerskonfigurieren begrenzte Worker-Batches für Bildoptimierung und Flate-Stream-Rekomprimierung, standardmäßig mit automatischer Prozessorauswahl und einem seriellen KompatibilitätsmodusOptimizeImages,RecompressStreams,MergeFileList,MergeFileListFastundMergeFileListStrictmelden jetzt verfolgten Fortschritt und beachten den kooperativen Abbruch überAbort
Geändert
- Flate-Rekomprimierung und eigenständige Bild-Transcodierung laufen in begrenzten parallelen Batches, während Dokumentveränderungen deterministisch und einfädig bleiben
- Die Bildoptimierung behält jetzt decodierte Bitmapdaten für die Neucodierung zurück, überspringt Schablonen- und Color-Key-Maskenbilder und entfernt veraltete Decode-Parameter beim Anwenden von JPEG-Ersetzungen
- Große Dateilisten-Zusammenführungen halten nur die aktiven Quell-Reader offen, melden den Fortschritt nach Eingabe- und Objektanzahl und entfernen unvollständige Ausgaben bei Abbruch oder Fehlschlag
Behoben
- Zusammenführungen mehrerer Dateien melden jetzt die erfolgreiche Fertigstellung, wenn mehr als eine Quelle zusammengeführt wurde
- Bild-Unterabtastung und -Optimierung behalten jetzt die decodierte Bitmap zurück, die ihre Neucodierungspfade benötigen
Version 3.446.0
Geändert
- Die zweiparametrige
SetDisplayListCacheLimit-Überladung begrenzt zurückgehaltenen Display-Listen-Speicher ebenso wie die Eintragsanzahl, während die bestehende Überladung das konfigurierte Byte-Budget bewahrt - Die Verdrängung von Display-Listen bevorzugt jetzt häufig wiederverwendeten Inhalt mit höherem Neuaufbauwert pro gehaltenem Byte, und einzeln übergroße Listen umgehen die Zurückhaltung, ohne das Rendering zu blockieren
- Aktive Aufnahme- und Replay-Operationen pinnen ihre Listen, gleichzeitige Suchen beobachten nie teilweise aufgebaute Aufzeichnungen, und abgebrochene oder fehlgeschlagene Aufnahmen werden verworfen
GetDisplayListCacheInfoundGetResourceUsageStatisticsJSONberichten über gehaltene Bytes, Limits, geschätzte Replay-Kosten, Verdrängungen, Umgehungen, abgelehnte Aufnahmen und Aufbaukonkurrenz
Behoben
- Das Display-Listen-Replay gibt jetzt ersetzte Operanden-Strings frei, statt von jedem früheren Operator eine Allokation zurückzuhalten
Version 3.445.0
Geändert
- Die dreiparametrige
SetMemoryBudget-Überladung ergänzt ein Decode-Byte-Budget für den komprimierten Objekt-Stream-Cache jedes Dokuments - Objekt-Stream-Cache-Einträge verwenden jetzt Least-Recently-Used-Verdrängung nach Eintragsanzahl und decodierter Nutzdatengröße, während übergroße Einträge das Caching umgehen, ohne den Objektzugriff zu blockieren
- Vor dem Laden konfigurierte Speicher-Budgets gelten jetzt für bestehende und künftige Dokumente und lassen sich über
GetMemoryBudgetabfragen GetResourceUsageStatisticsJSONberichtet jetzt über aktuelle Objekt-Stream-Cache-Bytes, Byte-Limits und Verdrängungszähler
Version 3.444.0
Hinzugefügt
- Die dreiparametrige
SetParserLimits-Überladung begrenzt tolerierte Parserfehler und stoppt die deterministische Wiederherstellung mitpdsErrorLimit, wenn das Budget erschöpft ist SetStreamDecodeLimitslehnt überlange Filterketten vor der Decoder-Allokation ab und erzwingt ein kumulatives Decode-Byte-Budget über Streams hinweg in einer verfolgten Operation- Streaming- und In-Memory-Decodierungspfade teilen dieselbe Filter- und Byte-Buchhaltung, einschließlich der Objekt-Stream-Decodierung beim Laden eines Dokuments
GetResourceUsageStatisticsJSONberichtet über Struktur- und Stream-Speicherschätzungen, Bild- und Schriftanzahlen, Decode-Byte-Spitzen, Fehlschläge sowie Treffer und Fehltreffer der Objekt-, Objekt-Stream- und Display-Listen-CachesResetResourceUsageStatisticssetzt Diagnosezähler zurück, ohne geladene Dokumente oder wiederverwendbare Caches zu verwerfen
Version 3.443.0
Hinzugefügt
SetParserLimitsundGetParserLimitskonfigurieren und prüfen harte Limits für verschachtelte PDF-Objekte und die Anzahl der Einträge in jedem direkt geparsten Array oder Dictionary- Parser-Limits greifen, bevor Datei-, Stream-, String-, Bearbeitungsjournal-, QDF- und Integritätsprüfungs-Ladepfade Objekte verbrauchen, während der Standard das bestehende Verschachtelungslimit und die unbegrenzte Containergröße beibehält
TPDFStructure.DecodeMaxContainerItemslehnt übergroße Arrays und Dictionaries mit dem eigenständigen StatuspdsContainerLimitab und bewahrt die FehlerpositionRegenerateFormAppearancesaktualisiert jedes AcroForm-Feld der obersten Ebene und jedes untergeordnete Feld in einem Durchlauf, bewahrt optional verwendbare Erscheinungen und löschtNeedAppearances
Version 3.442.0
Hinzugefügt
CheckFileComplianceakzeptiert Konformitätstest 3 für PDF/X und prüft ein fertiges Dokument gegen die Druckaustauschregeln von ISO 15930: pdfxid-Editionsidentifikation, teilibasierte Syntaxstufe, genau ein GTS_PDFX-Ausgabeziel mit eingebettetem Profil und Bedingungskennung, deklarierter Trapping-Zustand, TrimBox- und BleedBox-Geometrie je Seite, eingebettete Schriftprogramme, verbotene Annotationstypen, JavaScript auf Dokumentebene, eingebettete Dateien, Verschlüsselung und LZWDecode-Filter- Probleme erscheinen als Zeilen mit PDFX-Präfix über dasselbe String-Listen-Handle, das auch die PDF/A- und PDF/UA-Prüfungen verwenden
Version 3.441.0
Hinzugefügt
SetPDFXModewählt einen PDF/X-Konformitätsmodus (1 = PDF/X-1a:2003, 2 = PDF/X-3:2003, 3 = PDF/X-4), der die Druckaustauschregeln von ISO 15930 bereits bei der Erstellung durchsetzt und die pdfxid-XMP-Editionsidentifikation schreibt- Der Modus installiert ein GTS_PDFX-Ausgabeziel (CMYK-Druckstandard), deklariert den /Trapped-Zustand und legt die Speicherversion nach dem Teil fest (PDF 1.4 für X-1a / X-3, PDF 1.6 für X-4)
- Prüfschranken bei der Erstellung: DeviceRGB- und ICCBased-Farbräume werden unter X-1a abgelehnt (X-3 / X-4 verlangen ein RGB-Ausgabeziel für DeviceRGB), Transparenz und optionale Inhalte werden außerhalb von X-4 abgelehnt, JavaScript, Dateianlagen, Verschlüsselung, LZWDecode-Bilder und nicht eingebettete Schriften werden in jedem Modus abgelehnt
- Korrekturen beim Speichern: Jede Seite erhält eine TrimBox (standardmäßig die MediaBox), Print-Flags von Annotationen und AcroForm-NeedAppearances werden normalisiert und /Trapped wird deklariert
GetInformation(203)berichtet über den aktiven PDF/X-Modus
Version 3.440.0
Hinzugefügt
AddWatermarkAnnotationFromImageIDschreibt eine Annotation /Subtype /Watermark mit der Ablagematrix /FixedPrint /Matrix, sodass der Druck die Erscheinung mit der Seite skaliert (ISO 32000-1 12.5.6.17)AddPrinterMarkAnnotationFromImageIDschreibt eine Annotation /Subtype /PrinterMark, die den Druckstellenmarkennamen /PN trägt (ISO 32000-1 12.5.6.18)SetFillColorICCBasedundSetLineColorICCBasedzeichnen über inhaltsseitige /ICCBased-Farbräume, die von einer eingebetteten ICC-Profildatei getragen werden, wobei die Komponentenzahl aus dem Profilkopf gelesen wird und identische Profile eine gemeinsame Ressource teilen
Version 3.439.0
Hinzugefügt
- WOFF-1.0-Webschrift-Container importieren transparent über jeden TrueType-Einstiegspunkt (
AddTrueTypeFontFromFile, Stream-APIs); Tabellen werden aus ihren zlib-Streams entpackt und das vereinte sfnt-Verzeichnis wird vor dem Parsen neu aufgebaut - Dokumente betten das entpackte sfnt-Programm in FontFile2 ein, niemals den WOFF-Container, und halten eingebettete Schriften für alle Betrachter gültig
Version 3.438.0
Hinzugefügt
- Die Durchsetzung von Seed-Werten erstreckt sich auf
LegalAttestation, akzeptableIssuer-Einträge von Zertifikaten und positionaleKeyUsage-Muster (ISO 32000-2 Tabellen 237 und 238), mit passenden Erstellungs-APIs für Legal-Attestation-Werte überSetSignatureFieldSeedValuesowieAddSignatureFieldSeedIssuerundSetSignatureFieldSeedKeyUsage SetSignProcessLegalAttestationdeklariert die Unterzeichnerbestätigung, die zur Signaturzeit gegen eine erforderliche LegalAttestation-Bedingung geprüft wirdTPDFlibPKCS11Client.InitializeUserPINundChangeUserPINverwalten Token-PINs über eine dedizierte Lese-/Schreibsitzung mit Sicherheitsbeauftragten-Anmeldung fürC_InitPIN
Version 3.437.0
Hinzugefügt
SetSignProcessRSAPSSPaddingsigniert detachete RSA-Signaturen mit RSASSA-PSS-Padding und gibt den vollständigen RFC-4055-Parametersatz (MGF1 mit der Signatur-Prüfsumme, Salt-Länge gleich der Prüfsumme) im CMS-Signaturalgorithmusbezeichner aus- PSS-gepolsterte Signaturen durchlaufen den Bibliotheks-Verifizierer vollständig, der jetzt RFC-4055-Parameter parst (explizite und implizite Codierungen) und sie über CNG mit der deklarierten Salt-Länge prüft
Version 3.436.0
Behoben
- Die Textextraktion decodiert jetzt ergänzende AGL-Glyphennamen (Formen
uniXXXXunduXXXXXX), die in /Differences-Arrays von Schriften ohne ToUnicode-Zuordnung mitgeführt werden - Codierungsslots, deren Glyphenname zu nichts auflöst, fallen jetzt auf die Basis-Codierung der Schrift zurück, statt während der Extraktion rohe Codepunkte oder Ersetzungszeichen zu liefern
- Symbolische eingebettete TrueType-Schriften ohne ToUnicode-Zuordnung decodieren jetzt über die cmap-Tabellen des eingebetteten Schriftprogramms und gewinnen das echte Unicode hinter jedem Zeichencode zurück
Version 3.435.0
Hinzugefügt
AddTrueTypeCollectionFontFromFilebettet jeden Schnitt einer TrueType-Collection (.ttc) über einen nullbasierten Index ein; das vorherige Verhalten nahm immer den ersten SchnittGetJPEGFileOrientationliest den EXIF-Orientierungs-Tag (1..8, 0 wenn abwesend) einer JPEG-Datei, undGetJPEGFileICCProfileToFileextrahiert deren APP2-ICC-Profil, ohne das Bild zu importieren
Version 3.434.0
Hinzugefügt
- Render-Optionen 11..15 bilden die PDFium-Qualitätsflags ab: LCD-Textdarstellung an/aus, keine Textglättung, keine Bildglättung, keine Pfadglättung und erzwungenes Halftoning; die Standardeinstellungen bewahren die bisherige Ausgabe, und die GDI+/Cairo-Backends ignorieren die Flags
SetDisplayListCacheLimitbegrenzt den Display-Listen-Cache für einmal geparste Inhalts-Streams; ein positives Limit verdrängt vor dem Einfügen die am frühesten erstellten Einträge, null stellt das unbegrenzte Verhalten wieder her
Version 3.433.0
Hinzugefügt
- Die Auswahl des Prüfsummenverfahrens für Signatur-Zeitstempel akzeptiert die SHA-3-Familie (Codes 5..7 in
SetPAdESSignatureTimeStampDigestAlgorithm) und gleicht damit die Optionen der Unterzeichner-Prüfsumme ab SetTimeStampRetryCountkonfiguriert 0..10 zusätzliche TSA-Versuche nach Transportfehlern oder 5xx-Antworten mit linearem Backoff zwischen den VersuchenTPDFlibCertificateInfoerhältFriendlyName,ThumbprintSHA1undThumbprintSHA256, die währendEnumCertificatesaus den Eigenschaften des Zertifikatskontexts gelesen werden- Der AdES-Historisierungs-Validierungsbericht erhält
BaselineProfile: 0 für Nicht-PAdES-Subfilter, dann 1=B-B, 2=B-T, 3=B-LT, 4=B-LTA, abgeleitet aus Zeitstempel und DSS-Nachweisen
Version 3.432.0
Hinzugefügt
- Seitenbereichs-Strings akzeptieren die Schlüsselwörter
odd,also even,firstundlast, auch als Bereichsgrenzen (3-last), in jeder API, die einen Bereich entgegennimmt ReversePageskehrt die Seitenreihenfolge des geladenen Dokuments umFlattenAnnotsOnPageRangebackt jede Annotation eines Bereichs mit einem einzigen Aufruf in den Seiteninhalt einGetPageContentBoxmeldet die Vereinigungsgrenzen aller Text-, Bild- und Pfadelemente, undAutoCropPagessetzt die CropBox jeder Seite auf diese Box plus einen RandAddBatesNumberingstempelt fortlaufende nullgepolsterte Nummern mit Präfix und Suffix an neun tastaturartig angeordneten PositionenExtractDocumentRevisionschreibt den Dokumentzustand jeder früheren inkrementellen Revision durch Abschneiden der Revisionskette in eine neue DateiSplitDocumentByOutlineschneidet das Dokument an seinen Gliederungseinträgen bis zu einer Ebene in eine Datei je AbschnittComparePageTextsWithvergleicht zwei Dokumente Seite für Seite anhand des extrahierten Texts und meldet die Anzahl der Abweichungen und die erste UnstimmigkeitSanitizeDocumenterhältSANITIZE_XMP_PACKET(Wert 32), das den gesamten XMP-Metadaten-Stream und jedes/PieceInfo-Dictionary entfernt
Version 3.431.0
Hinzugefügt
- Extraktionsoption 19 (
SetTextExtractionOptionsund die Direktzugriffs-Variante) entfernt Text im Rendering-Modus 3 wie OCR-Ebenen aus der extrahierten Ausgabe, ohne sichtbaren Inhalt anzutasten - Extraktionsoption 20 ersetzt die Glyphen von
/Span-Marked-Content-Sequenzen während der Extraktion durch ihren/ActualText-Wert (ISO 32000-1 §14.9.4) und berücksichtigt dabei sowohl inline Eigenschaften-Dictionaries als auch benannte Eigenschaften-Ressourcen DAGetTextBlockCharBoxleitet achsenausgerichtete Boxen je Zeichen aus Block-Quads und Zeichenweiten ab, für Hervorhebungsrechtecke und Trefferbereichs-Berechnungen auf einzelnen ZeichenExportFormValuesToJSONserialisiert AcroForm-Feldwerte mit korrektem Escaping in ein JSON-Array und überspringt optional leere FelderGetPageTextStatisticszählt Zeichen, durch Leerzeichen getrennte Wörter und Blöcke für jede SeiteGetXMPPropertyliest einfache Werte aus dem XMP-Paket des Dokuments (absteigend durchrdf:Alt/rdf:Bag/rdf:Seq-Hüllen und XML-Entitäten auflösend), undSynchronizeXMPToInfokopiert XMP-Metadaten zurück in das Info-Dictionary- Schriftbestände melden eingebettete Programmgrößen:
TPDFlibDocumentFonterhältFontFileBytes, und der Diagnosedatensatz erhält eine summierte AngabeEmbeddedBytes
Version 3.430.0
Hinzugefügt
- Die Textsuche erhält vier neue Optionen:
soDiacriticInsensitivetrifft Suchbegriffe über eine 1:1-Unicode-Faltung, sodass einfache Buchstaben ihre akzentuierten Entsprechungen finden (Latin-1, Latin Extended-A, Griechisch und Kyrillisch, wobei die Groß-/Kleinschreibung in Kombination mitsoCaseSensitiveweiterhin gilt),soWildcardsinterpretiert*und?im Suchbegriff mit linkslängster Semantik, verträglich mitsoWholeWord,soAcrossLinestrifft Phrasen über Zeilen- und Blockumbrüche hinweg, indem es die extrahierten Blöcke jeder Seite verbindet, undsoPreserveStylelässtSearchAndReplaceTextErsetzungen in Textgröße und Farbe des ersetzten Blocks zeichnen statt mit den aktuellen Einstellungen des Aufrufers - Suchtreffer melden jetzt Position und Länge der Übereinstimmung im Blocktext (
MatchStart,MatchLength) sowie optionale Kontextfenster (ContextBefore,ContextAfter), gesteuert über die neue EigenschaftSearchContextChars AddTextMarkupFromSearchHitsundHighlightTextSearchHitswandeln Suchtreffer oder die von einer laufendenBeginTextSearch-Sitzung gehaltenen Treffer in Highlight-/Underline-/Squiggly-/StrikeOut-Markup-Annotationen auf ihren Seiten um- Wörtliche Suchbegriffe ab vier Zeichen verwenden jetzt eine Boyer-Moore-Horspool-Sprüngtabelle mit konservativer Breitzeichen-Kollation und beschleunigen damit Stapelsuchen über lange Seiten
Behoben
- Eingebettete TrueType-Schriften, die mit einer WinAnsi-Basiscodierung und einem Differences-Array geschrieben wurden, erzeugten eine
/ToUnicode-CMap, die nur die Differences-Einträge aufführte, sodass Betrachter, die sich darauf verlassen, jeden anderen akzentuierten WinAnsi-Code als Müll decodierten: Die Extraktion lieferte?als Ersatz, die Blocksammlung konnte an der betroffenen Zeile anhalten, und die diakritikempfindliche Suche verpasste diese Dokumente. Der CMap-Generator deckt jetzt die gesamte Basiscodierung mit Differences-Überschreibungen ab, gebündelt in normkonformen Abschnitten zu 100 Einträgen - Die Wortzusammenführungs-Buchhaltung in der Textsammlung fügte beim Anhängen von Läufen ohne Trennzeichen einen Phantom-Weiteneintrag ein, verschob jeden späteren Offset je Zeichen um eins und beschädigte abgeleitete Daten wie Teilrechtecke von Suchtreffern und aus Lücken erschlossene Leerzeichen
Version 3.429.0
Behoben
- Subsetting über
AddTrueTypeSubsettedFonterzeugte Dokumente, deren Text in jedem Betrachter leer blieb: Der CID-zu-GID-Zuordnungs-Stream wurde stillschweigend durch einen fest codierten/Identity-Eintrag überschrieben, sodass von Unicode abgeleitete CIDs die falschen Glyphenkonturen ansprachen. Der Stream ist jetzt maßgeblich, und/Identitybleibt nur als Fallback, wenn sich keine Zuordnung ableiten lässt; subsettierte Dokumente mit CJK und automatisch aktualisierten Glyphenmengen rendern wieder korrekt - Axiale und radiale Schattierungsfüllungen erschienen im internen GDI+-Renderer als solides Schwarz:
GdipCreateLineBrushlehntWrapModeClampab (ein nur für Texturpinsel gültiger Modus), und die fehlgeschlagene Pinselerzeugung fiel auf den schwarzen Solid-Fallback zurück. Verlaufspinsel werden jetzt mitWrapModeTileerzeugt, und Schattierungsfüllungen rendern identisch mit dem Cairo-Backend und externen Betrachtern - Das Erzeugen einer
TPDFlib-Instanz lösteEIntOverflowaus, wenn die Bibliothek mit aktivierter Überlaufprüfung kompiliert wurde (die Release-Flags der Befehlszeilen-Demo-Bauskripte): Der FNV-1a-Namens-Hash, die MD5-Zustandsakkumulation und die MD5-Bitzähler sind konstruktiv modulare Arithmetik und laufen jetzt mit lokal deaktivierter Überlaufprüfung. Die mitgelieferte Release-Ausgabe vonbuild-Win32-Demo/build-Win64-Demostürzt beim Start nicht mehr ab
Version 3.428.1
Hinzugefügt
- Neue Flaggschiff-Demo
Showcase(Demo\Delphi\Showcase): baut beim Start ein siebenseitiges Dokument — Titelblatt mit Verlauf, Vektorgrafiken mit Schattierungen und Mustern, eingebettete TrueType-Typografie, formatierte Tabellen, eine Barcode-Galerie, interaktive Verknüpfungen mit Prüfannotationen und Lesezeichen sowie eine Zusammenfassungsseite — und zeigt es live im eingebettetenTPDFlibViewer-Steuerelement in der Vorschau an - Die Showcase-Demo läuft auch ohne Benutzeroberfläche (
Showcase.exe <output.pdf>) mit einem optionalen Argumentrender, das jede Seite als PNG exportiert, sodass sich die komplette Dokumentpipeline aus Bauskripten heraus ausüben lässt
Behoben
- Das Parsen von Inhalts-Streams liest den Strichfarben-Operator
RGnicht mehr falsch: Die Vorausschau auf indirekte Referenzen im Objektdecoder verarbeitete0 0 0 RGals Zahl plus die Phantom-Referenz0 0 R, was Strichfarben nach der Inhaltsoptimierung beschädigte und in strengen Betrachtern Operatorsyntaxfehler erzeugte - Der Peephole-Optimierer verwirft keinen wiederholten
cs- (Farbraum-) Setter mehr, der auf einen beliebigen Farboperator folgt:rg/g/ksetzen den Farbraum implizit zurück, sodass Musterfüllungen (scn) nach Textfarbwechseln ihr/Pattern csbehielten und wieder korrekt rendern
Version 3.428.0
Hinzugefügt
- Neunzehn neue Free-Pascal-/Lazarus-Konsolendemos unter
Demo\Lazarus: OutlineBuilder, WatermarkDemo, NamedDestinations, EmbeddedFiles, XmpMetadata, TextBlockExtraction, AnnotationInspector, BarcodeGallery, TaggedPDF, SearchReplace, Redaction, LinearizeDemo, PatternShowcase, DocumentProperties, SecurityPermissionMatrix, PageStitch, OutputStream, MergePDF und PdfToImage - Ein
IOUtils-Kompatibilitätsshim (TPath / TDirectory / TFile) für FPC-Bauten hält die portierten Demos quellcodeidentisch mit ihren Delphi-Gegenstücken
Geändert
- Der NOVCL-Grafikeinsatz unter Windows materialisiert jetzt echte GDI-Objekte: TBitmap belegt eine Top-down-DIB-Section, TCanvas besitzt einen Speicher-DC und wählt GDI-Objekte für Pinsel, Stift und Schrift bei Eigenschaftsänderungen neu aus, und TBrush / TPen / TFont bauen ihre Handles neu auf, wenn Farben, Stile oder Schriftattribute sich ändern
- Das Seitenrendering unter FPC erzeugt jetzt eine Pixelausgabe, die dem Delphi-Bau entspricht (GDI+-Rasterisierung über den Ersatz-DC), was auch den JPEG- und BMP-Export von
PdfToImagewiederherstellt
Behoben
- Die verschlüsselte PDF-Erzeugung unter FPC beschädigte binäre Stringwerte (Zurücklesen des Trailer-
/ID, Verschlüsselungs-/U), sodass die Ausgabe die Nachlade-Prüfung nicht bestand; die FPC-Bauten übergeben-FcUTF8nicht mehr, dessen AnsiString-Codepage-Markierung bewirkte, dass die VerkettungAnsiString + AnsiCharjedes Byte über $7F durch ein Fragezeichen ersetzte
Version 3.427.0
Hinzugefügt
- Free-Pascal-/Lazarus-Unterstützung: Die Bibliothek kompiliert jetzt unter FPC 3.2 (Win64) aus denselben Quellen wie die Delphi-Bauten, mit den neuen Bauskripten
build-Lazarus-Lib,build-Lazarus-Lib-TRIAL,build-Lazarus-Testsundbuild-Win64-Demo-Lazsowie dem PaketPDFlibPasLaz - Flate-Komprimierung und -Dekomprimierung laufen unter FPC über die mitgelieferte statische zlib von FPC; die AES-Verschlüsselung bindet dasselbe Unity-Objekt wie die Delphi-Bauten; JPEG-Bilder decodieren über das GDI+-Backend
- Eine FPCUnit-Konsolentestreihe (
Tests\Lazarus) deckt Dokument-Durchläufe aus Erzeugen, Speichern und Laden, Deflate/Inflate, AES und Textextraktion ab, und zwei Lazarus-Konsolendemos (HelloWorld,TextExtract) liegen unterDemo\Lazarus
Geändert
- Unit-Scope-Präfixe (
System.SysUtils,Winapi.Windows, ...) wurden über die Bibliotheksquellen hinweg entfernt, sodass dieselben Units unter beiden Compilern auflösen; die Delphi-Befehlszeilen-Bibliotheksbauten übergeben die Unit-Scope-Liste jetzt explizit - Zwei
NO_VCL/NOVCL-Direktiventippfehler im Renderer und im Cairo-Bitmap-Export behoben, die erst sichtbar wurden, als die NOVCL-Windows-Konfiguration tatsächlich kompiliert wurde
Version 3.426.0
Hinzugefügt
- Das Seitenrendering kann jetzt Prozess- und Namensfarben-Überdrucken über konfigurierbare Delphi-, DLL- und ActiveX-APIs simulieren
Geändert
- Erweiterte Grafikzustände bewahren jetzt kumulative
/OP-,/op- und/OPM-Semantik, während die begrenzte Pixelkomposition überlappende Farbkanäle auf GDI+- und Cairo-Renderern erhält
Version 3.425.0
Hinzugefügt
- Die Bildextraktion bewahrt jetzt JBIG2-Seiten- und Globalsegmente in eigenständigen Dateien und behält CCITT-Fax-Nutzdaten in eigenständigen TIFF-Hüllen
- Ein schreibgeschütztes Bild-Deduplizierungsmanifest gruppiert exakt codierte Duplikate nach Prüfsumme, Objektidentität, Seitenverwendung und rückgewinnbaren Nutzdatenbytes über Delphi-, DLL- und ActiveX-Clients hinweg
Geändert
- Seitenbildlisten erkennen jetzt native JPX- und JBIG2-Nutzdaten, ohne eine Bitmap-Entfaltung zu erzwingen, einschließlich Bild-Streams, die über verschachtelte Form-XObjecte erreicht werden
Version 3.424.0
Hinzugefügt
- Zugeordnete-Datei-APIs auf Dokumentebene erstellen, zählen auf, ordnen zu, fügen hinzu und entfernen jetzt
/AF-Katalogmitgliedschaften über Delphi-, DLL- und ActiveX-Clients hinweg - RichMedia-Annotationen können jetzt eine bestehende eingebettete oder zugeordnete Datei wiederverwenden und halten so eine gemeinsame Medien-Nutzdatengemeinschaft zwischen Anlagenbereich und Annotations-Asset-Graphen aufrecht
Geändert
- Die Erzeugung zugeordneter Dateien akzeptiert Dateien, Delphi-Streams, binäre Strings, DLL-Puffer und ActiveX-Bytearrays und bewahrt dabei Prüfsummen, Beschreibungen, Beziehungsmetadaten und binäre Nullbytes
- Das Entfernen einer eingebetteten Datei entfernt jetzt auch passende Katalog-Verweise auf zugeordnete Dateien, sodass geladene Dokumente keine verwaisten
/AF-Einträge behalten können
Version 3.423.0
Hinzugefügt
- Optional-Content-APIs bauen jetzt verschachtelte Ebenenbereichs-Beschriftungen und Gruppenzweige über Delphi-, DLL- und ActiveX-Clients hinweg auf
- APIs zum Erstellen, Verwalten, Entfernen und Untersuchen von Optionsgruppen ergänzen sich gegenseitig ausschließende Ebenensteuerungen für CAD- und Kartenworkflows
Geändert
- Aktualisierungen gesperrter Ebenen melden jetzt Erfolg, alternative Konfigurationen verwenden ihre korrekten einsbasierten Bezeichner, und fehlerhafte Ebenenhierarchien werden mit begrenztem Zyklusschutz durchlaufen
- Das Löschen einer Optional-Content-Gruppe entfernt ihre Verweise aus Ebenenreihenfolge-, Zustands-, Sperr-, Optionsgruppen- und automatischen Zustandsstrukturen in jeder Konfiguration
Version 3.422.0
Hinzugefügt
- PRC-3D-Annotations-APIs betten Modelle aus Dateien, Streams, Speicherstrings, DLL-Puffern und ActiveX-Bytearrays mit benannten Standardansichten und expliziten Aktivierungsrichtlinien ein
- PRC-Annotationen unterstützen technische Dokumente nach PDF/A-4e und heben zugleich gewöhnliche Ausgaben automatisch auf PDF 2.0 an
Geändert
- PRC- und U3D-Annotationen enthalten jetzt eine vollständige 3D-Ansicht, Aktivierungs- und Deaktivierungs-Dictionaries, druckbare Annotations-Flags, alternative Namen und eine normale Erscheinung
- Das Legacy-U3D-Einbetten lehnt PDF/A-Profile ab, die keine 3D-Annotationen erlauben, und akzeptiert PDF/A-4e
Version 3.421.0
Hinzugefügt
- Dokumentteil-APIs ergänzen PDF-2.0-
/DPartRoot, hierarchische/DParts, Seitenbereichs-Blätter, Datensatzebenen, Ebenennamen und validierte/DPM-Metadaten über Delphi-, DLL- und ActiveX-Clients hinweg - Inspektions- und Lebenszyklus-APIs legen Hierarchievalidierung, erreichbare Teilanzahlen, Seiten-zu-Teil-Suche, Metadaten-Durchläufe und vollständige Hierarchieentfernung offen
Geändert
- Große Kindermengen verwenden begrenzte Arrayblöcke, während die Validierung Elternverknüpfungen, Zyklen, einheitliche Blatttiefe, geordnete vollständige Seitenabdeckung, Rückwärts-Seitenverknüpfungen, XML-Namens-Token und begrenzte Metadaten-Graphen prüft
- Das Erzeugen einer Dokumentteil-Hierarchie hebt die Ausgabe auf PDF 2.0 an und nimmt an der Funktionserkennung geladener Dokumente und der Speicherversions-Sperrung teil
Version 3.420.0
Hinzugefügt
DrawHTMLStoryergänzt formatierten HTML-Fluss auf hoher Ebene durch gleichbreite Spalten und automatisch erzeugte Seiten über Delphi-, DLL- und ActiveX-Clients hinweg- Endliche Seitengrenzen geben eine wiederverwendbare Fortsetzungs-Zeichenkette zurück, die die aktive Stylesheet-Kaskade, den verschachtelten Stilzustand, strukturierte Blöcke, Tabellen, Verknüpfungen, Schriftzuordnungen und Bildbindungen bewahrt
Geändert
- Erzeugte Story-Seiten erben die wirksamen Abmessungen der gewählten Startseite, und jede Spalte wiederverwendet zwischengespeicherte Layoutpläne aus Vermessen und Replay
- Das Story-Layout lehnt ungültige Geometrie ab, begrenzt Spalten und erzeugte Seiten und bricht ab, wenn aufeinanderfolgende Rahmen keinen Fortschritt erzielen können
Version 3.419.0
Hinzugefügt
TPDFlibPrinterergänzt eine VCL-Komponenten-Fassade mit den LebenszyklusmethodenBeginDoc,Canvas,NewPage,EndDocundAbortzur direkten PDF-Erzeugung- PDF-Druckaufträge unterstützen konfigurierbare Papiermaße, Hoch- oder Querformat, Canvas-DPI, Vektorimport-Optionen, Dokumenttitel und optionale direkte Dateiausgabe
Geändert
- Jeder Komponentenauftrag besitzt ein eigenständiges PDF-Dokument, übergibt die erste und alle folgenden Canvas mit konsistenter Seitensemantik und behält die fertige Ausgabe für die weitere Bibliotheksverarbeitung
- Die Komponente öffnet nie einen Drucken-Dialog und greift nicht auf den Spooler des Betriebssystems zu, sodass bestehender VCL-Canvas-Zeichnungscode ohne Abhängigkeit von einem physischen Drucker migriert werden kann
Version 3.418.0
Hinzugefügt
RenderPagesToPrintStream,RenderPagesToPrintString,RenderPagesToPrintFile,RenderPagesToPrintDataundRenderPagesToPrintBufferergänzen treiberunabhängige Druckausgabe über Delphi-, DLL- und ActiveX-Clients hinweg- Ausgewählte Seitenbereiche lassen sich als PostScript Level 3, Einzelseiten-EPS, PCL 5c oder PWG Raster ausgeben, mit optionalen Steuerungen für Monochrom, Duplex, Umdrehen und PCL-Auftragsrahmung
Geändert
- PostScript und EPS bewahren den Seiten-Vektorinhalt, während PCL und PWG Raster begrenzte Zeilen-Codierer für die direkte Auslieferung an Server und eingebettete Geräte verwenden
- Druck-Streams werden erzeugt, ohne einen Drucker zu öffnen, einen Drucken-Dialog anzuzeigen oder Arbeit an den Spooler des Betriebssystems zu übergeben
Version 3.417.0
Hinzugefügt
ExportPageSVGundExportPageSVGToFileergänzen skalierbaren Seitenexport über Delphi-, DLL- und ActiveX-Clients hinweg- Die SVG-Ausgabe kann unabhängig native gezeichnete Pfade, durchsuchbaren Text, eingebettete PNG-Bilder, klickbare Annotations-Verknüpfungen und einen transparenten Seitenhintergrund einbeziehen
Geändert
- Seitenpfade bewahren ihre Transformationen, Füll- und Strichdarstellung, Deckkraft, Linienstile, Gerade-Ungerade-Regeln und wirksamen Beschneidungsgrenzen, ohne die komplette Seite zu rastern
- Jede Seite wird in begrenzten Durchläufen verarbeitet und erzeugt ein in sich geschlossenes SVG-Dokument ohne externe Bildabhängigkeiten
Version 3.416.0
Hinzugefügt
DrawSVG,DrawSVGFromFile,GetSVGWidthundGetSVGHeightergänzen native SVG-Vektorplatzierung und -Vermessung über Delphi-, DLL- und ActiveX-Clients hinweg- Das SVG-Zeichnen unterstützt Viewboxen, Seitenverhältnis-Ausrichtung, Gruppen, Definitionen und Wiederverwendung, Transformationen, Beschneiden, einfaches CSS und Inline-Stile, Deckkraft, Pfade mit elliptischen Bögen sowie die Standardformen Rechteck, Kreis, Ellipse, Linie, Polylinie und Polygon
Geändert
- SVG-Geometrie wird als skalierbare PDF-Pfade ohne Rasterbild-XObjecte geschrieben, und wiederholtes Vermessen und Zeichnen wiederverwenden den zuletzt geparsten begrenzten SVG-Baum
- Nicht vertrauenswürdige SVG-Eingaben werden durch Quellgröße, Elementanzahl und Verschachtelungstiefe begrenzt, führen keinen externen Ressourcenzugriff aus und verwenden den ersten Farbstop als deterministischen Solid-Fallback für Verlaufs-Paint-Server
Version 3.415.0
Hinzugefügt
DrawFormula,GetFormulaWidthundGetFormulaHeightergänzen verschachteltes mathematisches Layout über Delphi-, DLL- und ActiveX-Clients hinweg- Formel-Markup unterstützt gestapelte Brüche, gleichzeitige Ober- und Unterzeichen, Quadratwurzeln mit optionalen Indizes, griechische Buchstaben, übliche mathematische Symbole, Escape-Zeichen, Textgruppen und begrenzte Verschachtelung
Geändert
- Formeltext verwendet die gewählte Schrift, Textgröße, Farbe, Schriftrumformung und Fallback-Kette, während Bruch- und Wurzelstriche Vektorinhalt bleiben
- Wiederholtes Vermessen und Zeichnen wiederverwenden den geparsten und vermessenen Boxbaum, solange Dokument, Vermessungsmaßstab und kompletter Zeichnungszustand unverändert bleiben
Version 3.414.0
Hinzugefügt
MarkdownToHTML,DrawMarkdownText,DrawMarkdownTextBox,GetMarkdownTextHeight,GetMarkdownTextWidthundGetMarkdownTextLineCountergänzen direkte Markdown-Konvertierung, Vermessung, Zeichnung und höhenbegrenzte Fortsetzung über Delphi-, DLL- und ActiveX-Clients hinweg- Markdown-Eingaben unterstützen ATX- und Setext-Überschriften, Absätze, Blockzitate, geordnete und ungeordnete Listen, Pipe-Tabellen mit Ausrichtung, umzäunten und eingerückten Code, Hervorhebung, fetten Text, Durchstreichen, Verknüpfungen, Bilder, automatische Weblinks, Escapes und harte Zeilenumbrüche
Geändert
- Wiederholtes Markdown-Vermessen und -Zeichnen wiederverwenden das konvertierte HTML und den begrenzten HTML-Layout-Cache, während rohe spitze Klammern escapeter Text bleiben
DrawMarkdownTextBoxgibt ein undurchsichtiges Fortsetzungs-Token zurück, das dieselbe Methode entgegennimmt, sodass teilweise gerenderter Inline-Zustand auf einer anderen Seite fortgesetzt werden kann
Version 3.413.0
Geändert
- HTML-Vermessung und -Zeichnung teilen jetzt begrenzte Layoutpläne, die Parsen, CSS-Auflösung, Zeilen- und Tabellengeometrie, Bilder, formatierte Hintergründe und Verknüpfungen zwischenspeichern
- Passende Aufrufe von
GetHTMLTextHeight,GetHTMLTextWidthoderGetHTMLTextLineCountkönnenDrawHTMLTextspeisen, ohne HTML-Parsen oder Layoutarbeit zu wiederholen
Behoben
- Das Vermessen von HTML mit formatierten Texthintergründen schreibt keine Rechteck-Operatoren mehr in den ausgewählten Seiten-Inhalts-Stream
Version 3.412.0
Hinzugefügt
BeginDeferredPageLayer,EndDeferredPageLayer,ComposeDeferredPageLayers,CancelDeferredPageLayersundGetDeferredPageLayerCountstellen aufgeschobene z-Index-Komposition über Delphi-, DLL- und ActiveX-Clients hinweg bereit- Negative Ebenen rendern unterhalb des bestehenden Seiteninhalts, während Null- und positive Ebenen darüber rendern, mit stabiler Aufzeichnungsreihenfolge für gleiche z-Index-Werte
Geändert
- Aufgeschobene Ebenen werden als Seitengroße Form-XObjecte zurückgehalten und komponieren über eine Platzierungsoperation je Ebene, ohne ihre Zeichenbefehle zu parsen oder wiederzugeben
Version 3.411.0
Hinzugefügt
SetPageHeaderFooterVariant,ApplyPageHeaderFooterSetundClearPageHeaderFooterSetstellen wiederverwendbare benannte Vorlagen für laufende Kopf- und Fußzeilen mit Varianten für Erstseite, ungerade Seite, gerade Seite und Standard bereit- Kopf- und Fußzeilenvarianten können einfachen Text mit der aktuellen Schrift oder reichhaltiges HTML mit automatischer Höhenvermessung, seitenspezifischer Variablenexpansion, Ausrichtung, Rändern und Deckkraft rendern, über Delphi-, DLL- und ActiveX-Clients hinweg
Geändert
- Erzeugte laufende Kopf- und Fußzeilen sind Paginierungs-Artefakte, bewahren den Seiten- und Zeichnungszustand des Aufrufers und unterstützen explizite leere Varianten, die den Fallback für Titel- oder abschnittseröffnende Seiten unterdrücken
Version 3.410.0
Hinzugefügt
StartPageNumberChapter,AddPageNumberPlaceholderundResolvePageNumberPlaceholdersstellen einen Zwei-Durchlauf-Workflow für endgültige Dokument- und Kapitelseitenzahlen im gewöhnlichen Fließtext bereit- Paginierungsvorlagen unterstützen physische Seitenzahlen, endgültige Dokumentsummen, Kapitelnamen, kapitelbezogene Seitenzahlen und endgültige Kapitelsummen über Delphi-, DLL- und ActiveX-Clients hinweg
Behoben
- Breitzeichen-Textboxen übergeben ihren gelieferten Text jetzt an die Umbruch-Engine, statt eine leere Box zu erzeugen
Version 3.409.0
Hinzugefügt
AutoFitTableColumnsweist Tabellenspaltenbreiten aus formatiertem Zellinhalt zu und beachtet dabei eine exakte Tabellenbreite und aufruferdefinierte Grenzen je Spalte- Delphi-, DLL- und ActiveX-Clients teilen dasselbe automatische Tabellengrößenverhalten, einschließlich der Bedingungen verbundener Zellen
Geändert
- Erfolgreiche automatische Größenanpassung erklärt zwischengespeicherte Zeilenvermessungen für ungültig, während undurchführbare Breitenbedingungen jede bestehende Spalte unverändert lassen
Version 3.408.0
Hinzugefügt
DrawTextFlowColumnsführt einen gehaltenen Textabschnitt durch ein bis 64 gleichbreite Spalten mit konfigurierbaren Stegen und optionalem Ausgleich des letzten Bereichs- DLL- und ActiveX-Clients können TextFlow-Handles jetzt über den vollständigen öffentlichen Lebenszyklus erstellen, zeichnen, vermessen, untersuchen, zurückspulen und freigeben
Geändert
- Ausgeglichene Spalten verwenden exakte Zeilenzahlen, wenn der verbleibende Abschnitt passt, während überlaufende Bereiche die volle Spaltenhöhe für maximale Seitenkapazität behalten
Version 3.407.0
Hinzugefügt
- Das HTML-Textrendering unterstützt jetzt eingebettete Stylesheets, Inline-CSS, Überschriften, strukturelle Blöcke, Tabellen mit Spaltenübergreifungen und dokumentgebundene Bilder
SetHTMLImageundClearHTMLImageslegen passende Delphi-, DLL- und ActiveX-Steuerungen für wiederverwendbare HTML-Bildquellen offen
Geändert
- HTML-Vermessung und -Zeichnung teilen jetzt aufgelöste Kaskaden- und Layoutentscheidungen, Tabellenzeilen setzen sich atomar über Textboxen hinweg fort, und der Fortsetzungszustand bewahrt verschachtelte CSS-Formatierung
Version 3.406.0
Hinzugefügt
- TextFlow unterstützt jetzt begrenzte sprachbewusste automatische Silbentrennung für Englisch, Deutsch, Niederländisch, Französisch, Spanisch, Italienisch, Portugiesisch, Russisch und Türkisch, einschließlich Sprachvererbung aus dem
/Lang-Wert des Dokumentkatalogs SetTextFlowLanguageundSetTextFlowHyphenationlegen passende Delphi-, DLL- und ActiveX-Steuerungen für Sprache und minimale Präfix- oder Suffixlängen offen
Geändert
- Der TextFlow-Zeilenumbruch vermisst jetzt vollständige Wörter, verwendet eine begrenzte Suche nur für übergroße Token und rendert bedingte weiche oder automatische Trennstriche nur, wenn der Umbruch gewählt wird
Version 3.405.0
Hinzugefügt
- Der automatische Schrift-Fallback löst jetzt fehlende CJK-, Symbol-, Mathematik-, komplexe-Skript- und Emoji-Cluster über zwischengespeicherte installierte Schriftschnitte auf und bewahrt dabei Schriftrumformung und bidirektionale Laufreihenfolge
SetAutomaticFontFallback,AddFontFallbackund die Inspektions-APIs der Fallback-Kette legen passende Delphi-, DLL- und ActiveX-Steuerungen offen
Geändert
- Textzeichnung und Breitenvermessung teilen jetzt dieselben clusterbewussten Fallback-Entscheidungen und betten nur für die Ausgabe gewählte Fallback-Schriften verzögert ein
Version 3.404.0
Hinzugefügt
- Fehlende Glyphen werden jetzt als Unicode-Skalare in einfachem und geformtem Text erkannt, in einem begrenzten JSON-Bericht festgehalten und über Delphi-, DLL- und ActiveX-Callbacks offengelegt
SetMissingGlyphPolicykann das kompatible Verwerfen-und-Melden-Verhalten bewahren oder eine Textoperation ablehnen, bevor Inhalt geschrieben wird, mitLastErrorCode 521
Version 3.403.0
Hinzugefügt
GetAPIScopeReportJSONundClearAPIScopeReportlegen deterministische Laufzeit- und Inhalts-Stream-Diagnosen über Delphi-, DLL- und ActiveX-APIs offen- Ungültige Pfad-, Grafikzustands-, Seitenaktualisierungs-, Marked-Content-, Formular-, Muster-, Seiten-, Dokument- und Ausgabefinalisierungsübergänge schlagen jetzt sofort mit
LastErrorCode 117fehl
Version 3.402.0
Hinzugefügt
AnalyzePageSkewJSON,DeskewPageundDeskewPageRangeerkennen und korrigieren die Drehung gescannter Seiten über Delphi-, DLL- und ActiveX-APIs- Die Entzerrungsanalyse verwendet begrenzte adaptiv aufgelöste Raster und eine Grob-zu-Fein-Bewertung von Linienprofilen, während die Korrektur den ursprünglichen PDF-Inhalt bewahrt und einen optionalen Ganzseitenmodus bietet
Version 3.401.0
Hinzugefügt
DetectPageBarcodesJSONerkennt eindimensionale und zweidimensionale Barcodes auf einer vollständigen PDF-Seite oder in einem begrenzten Seitenbereich und gibt Text, Symbologie, Orientierung, Gültigkeit, Eckpunkte und Grenzen als deterministisches JSON zurück- Bereichsscans rendern nur die angeforderten Pixel, bewahren die ausgewählte Seite, unterstützen Format- und Decoder-Optionsmasken und legen passende Delphi-, DLL- und ActiveX-APIs offen
Version 3.400.0
Hinzugefügt
SaveDOCXToStreamundSaveDOCXToFilewandeln PDF-Seitenbereiche in bearbeitbare WordprocessingML-Absätze, erschlossene Überschriften, native Aufzählungs- und Nummerierungslisten, erkannte Tabellen, Schriftformatierung, Seitenumbrüche und positionierte PNG-Bilder um- Der deterministische DOCX-Paket-Schreiber verwendet CRC-geprüfte rohe Deflate-Einträge ohne Office-Automatisierung, schreibt Bilddaten beim Verarbeiten jeder Seite, bewahrt die explizite Seitenreihenfolge und stellt die ausgewählte PDF-Seite wieder her
Version 3.399.0
Hinzugefügt
ExportPageMarkdownundExportDocumentMarkdownwandeln semantischen Seiteninhalt in escapete Markdown-Absätze, erschlossene Überschriften, geordnete oder ungeordnete Listen und Pipe-Tabellen mit optionalen Seitenmarkierungen und Schriftformatierung umSaveMarkdownToStreamundSaveMarkdownToFileschreiben UTF-8 seitenweise, ohne die komplette Dokumentausgabe zu puffern, während passende DLL- und ActiveX-Einstiegspunkte String- und Dateiexport-Workflows offenlegen
Version 3.398.0
Hinzugefügt
ExportPageHTMLundExportDocumentHTMLerzeugen in sich geschlossenes HTML5 mit positioniertem Text, eingebetteten PNG-Bildern, URI-Verknüpfungen und internen Seitenankern- Der Dokumentexport bewahrt die explizite Seitenbereichs-Reihenfolge, stellt die ausgewählte Seite wieder her, hält jeweils ein Seitenextraktionsmodell vor und legt passende Delphi-, DLL- und ActiveX-APIs offen
Version 3.397.0
Hinzugefügt
ExtractStructuredPageundExtractStructuredDocumentwandeln Seitentext in Absatz-, Zeilen-, Span-, Tabellen-, Zeilen- und Zellen-Hierarchien um und exportieren dasselbe Modell als JSON, semantisches XHTML oder CSV erkannter Tabellen- Die Dokumentextraktion hält jeweils eine Seitenhierarchie vor, stellt die ausgewählte Seite wieder her und legt passende Delphi-, DLL- und ActiveX-Einstiegspunkte offen
Version 3.396.0
Hinzugefügt
ApplyOCRTextLayernimmt anbieterneutrales OCR-JSON entgegen und hängt nach Konfidenz gefilterten, in Begrenzungsrahmen eingepassten unsichtbaren Text an, der gescannte Seiten durchsuchbar macht, ohne gerenderte Pixel zu verändernOCRPage,OCRDocumentundOnOCRPagestellen eine steckbare Seite-für-Seite-OCR-Pipeline mit begrenztem Rasterspeicher bereit, während DLL- und ActiveX-Aufrufer das bestehende Seitenrendering mitApplyOCRTextLayerkombinieren können
Version 3.395.0
Hinzugefügt
AddImageFromFileundAddImageFromStreamakzeptieren jetzt WebP-Bilder; die Bibliothek erkennt den RIFF/WEBP-Container und decodiert über GDI+, das ab Windows 10 1809 einen eingebauten WebP-Codec mitbringt
Version 3.394.0
Hinzugefügt
SetRenderTargetICCerlaubt dem Aufrufer die Angabe eines Ziel-ICC-Profils, sodass die ICC-Transformationen des Renderers Quellfarben durch ein CMYK-Proofprofil statt durch das Standard-sRGB abbilden und CMYK-Weichbeweis und Farbraumvorschau möglich werden
Version 3.393.0
Hinzugefügt
OptimizeImagesdurchsucht jedes eingebettete Bild, decodiert es, codiert es mit aufruferdefinierter Qualität als JPEG neu und ersetzt den ursprünglichen Stream nur dann an Ort und Stelle, wenn das JPEG echt kleiner ist — gescannte Dokumente und unkomprimierte Bilder schrumpfen automatisch, während Bilder, die wachsen würden, geschützt bleiben
Version 3.392.0
Hinzugefügt
GetImageInfoJSONdurchsucht jedes Bild-XObject im Dokument und gibt Metadaten je Bild (Objektnummer, Pixelmaße, Farbraum, Bits je Komponente, Filter) als JSON zurück, ohne Pixeldaten zu decodieren, sodass die Prüfung von Bildbeständen im Speicher bei O(Bildanzahl) bleibt statt bei O(gesamte Bildbytes)
Version 3.391.0
Hinzugefügt
- JPEG2000-Bilder (JPXDecode) werden jetzt mit nativer Byte-Durchreichung extrahiert, wenn der Extraktionsmodus dies unterstützt, und bewahren dabei den ursprünglichen komprimierten Stream ohne Decodieren-und-Neucodieren, entsprechend dem bestehenden JPEG-Durchreichungsverhalten
Version 3.390.0
Hinzugefügt
NewMultiStopAxialShaderundNewMultiStopRadialShadererzeugen Verläufe mit beliebig vielen inneren Farbstops in jedem PDF-Farbraum (DeviceRGB, DeviceCMYK, DeviceGray, ICCBased) und verketten über Typ-3-Verkettungsfunktionen je Segment eine exponentielle Typ-2-Interpolation- Der neue Datensatz
TPDFGradientStopträgt eine Position in[0,1]und farbkomponentenbezogene Werte je Stop
Version 3.389.2
Geändert
- Die Schriftrumformung komplexer Texte hält jetzt die Uniscribe-SCRIPT_CACHE-, HFONT- und DC-Handles je Schrift für die Lebensdauer des Dokuments im Cache, sodass die geparsten cmap/GSUB/GPOS-Tabellen der Schrift über
DrawShapedText-Aufrufe hinweg erhalten bleiben, statt jedes Mal neu erzeugt und freigegeben zu werden
Version 3.389.1
Geändert
- Die Float-in-String-Umwandlung beim Schreiben von Inhalts-Streams verwendet jetzt eine inline Ziffernschleife mit vorberechneter Zehnerpotenzen-Tabelle statt des generischen Pfads aus
Power+IntToStr+Insert, was den CPU-Aufwand bei der Erzeugung dichter Grafiken deutlich senkt und zugleich byteidentische Ausgabe erzeugt
Version 3.389.0
Hinzugefügt
SetMemoryBudgetbegrenzt den Speicherverbrauch großer Dokumente durch Deckelung der Größenschwelle für decodierte Streams und des Caches für komprimierte Objekt-Streams und hält so die Speicherspitze innerhalb eines aufrufergesetzten Budgets
Geändert
- Der Cache für komprimierte Objekt-Streams des Direktzugriffs-Lesers ist jetzt standardmäßig auf 50 Einträge begrenzt statt unbegrenzt zu wachsen, sodass das Anfassen vieler ObjStm-Streams nicht mehr unbegrenzt decodierten Inhalt ansammelt
Version 3.388.1
Geändert
- Beim Laden eines Dokuments geparste PDF-Namen-Token werden jetzt in einen Hash-Pool je Struktur internalisiert, sodass die Millionen doppelter Namen in großen Dokumenten jeweils einen referenzgezählten Puffer teilen, statt neue Strings zu belegen; Dictionary-Schlüsselsuchen kürzen auf Zeigervergleiche ab
Version 3.388.0
Hinzugefügt
- CFF-, OpenType-CFF- und CID-keyed-Schriften werden jetzt beim Speichern über denselben
CreateFontPackage-Dienst subsettiert, den auch das TrueType-Subsetting verwendet, betten nur die Glyphen ein, die der Inhalts-Stream tatsächlich gezeichnet hat, und verkleinern CJK- und OTF-Dokumente deutlich - Subsettierte CIDFontType0-Ausgaben tragen jetzt einen
/CIDSet-Stream, der angibt, welche CIDs eingebettet sind, und erfüllen damit die PDF/A-Regel 00032 und die Erwartungen konformer Leser
Version 3.387.0
Hinzugefügt
SetRenderBandingrendert eine Seite horizontal bandweise in eine niedrige Bitmap und komponiert die Bänder zu einer Ausgabe in voller Größe, sodass Seiten mit hoher DPI und großem Format eine begrenzte Speicherspitze behalten, statt eine einzige riesige Bitmap zu belegenGetRenderBandHeightmeldet die aktive Bandhöhe oder 0, wenn Bänderung deaktiviert ist- Neue Delphi-, DLL- und ActiveX-APIs für bandweises Rendern legen den Workflow auf jeder öffentlichen Oberfläche offen
Version 3.386.0
Hinzugefügt
SetDisplayListCachingzeichnet den Inhalts-Stream einer Seite einmal in eine wiedergebbare Display-Liste auf, sodass spätere Renderings bei jedem Zoom oder jeder DPI das erneute Tokenisieren überspringen; Form-XObjecte und Typ-3-Glyphenprozeduren cachen je eine ListeGetDisplayListCacheInfomeldet als JSON, ob Caching aktiv ist, dazu Eintragsanzahl und Treffer-/Fehltrefferzähler, undClearDisplayListCacheverwirft die Aufzeichnungen und gibt ihren Speicher frei- Neue Delphi-, DLL- und ActiveX-Display-Listen-APIs legen den Workflow auf jeder öffentlichen Oberfläche offen
Version 3.385.0
Hinzugefügt
StartRenderPageJobrendert eine Seite über eine isolierte Instanz in einer Hintergrundaufgabe, sodass eine große Seite den Host-Thread beim Rendern nicht mehr blockieren kannPauseRenderJob,ResumeRenderJobundCancelRenderJobunterbrechen eine einzelne laufende Seite an Operatorgrenzen des Inhalts-Streams über ein kooperatives Abbruch-Flag und ein in den Renderer eingefädeltes PausentorWaitForRenderJob,GetRenderJobStateundGetRenderJobResultmelden Fortschritt und Ergebnis des Auftrags über dieRENDER_JOB_STATE_*-Codes- Neue Delphi-, DLL- und ActiveX-Render-Auftrags-APIs legen den Workflow auf jeder öffentlichen Oberfläche offen
Version 3.384.0
Hinzugefügt
DAOpenFromURLöffnet ein entferntes PDF über HTTP mit Byte-Bereichsanforderungen, holt nur die Objekte, die der Leser tatsächlich antastet, und lädt den Erstseiten-Abschnitt linearisierter Dokumente vor, sodass Seite 1 zuerst rendertGetLinearizedURLAccessPlantestet eine entfernte URL mit einer einzelnen kleinen Bereichsanforderung und gibt einen JSON-Bericht über Gesamtlänge, Byte-Bereichs-Unterstützung, Linearisierung, Seitenanzahl, Erstseiten-Objekt und Abschnittsende, Hint-Stream-Spannweite und die vereinigte Liste der Byte-Bereiche zurück, die Seite 1 benötigt- Die neue Option
PDF_NET_OPT_NO_WARMINGund die FehlercodesPDFLIB_ERROR_NET_OPEN,PDFLIB_ERROR_NET_RANGE_UNSUPPORTEDundPDFLIB_ERROR_NET_HTTPlegen das Netzwerklesen über Delphi, DLL und ActiveX offen
Version 3.383.0
Hinzugefügt
SaveQDFToFileundConvertFileToQDFerzeugen menscheneditierbare Diagnose-PDFs mit lesbarer Objektformatierung, Kommentaren zur ursprünglichen Objektidentität, expandierten gemeinsamen Inhalts-Streams und indirekten reparierbaren Stream-LängenRepairQDFFileberechnet editierte Stream-Längen neu und baut Querverweisdaten, Trailer undstartxrefwieder auf, einschließlich Reparatur an Ort und Stelle- Neue Delphi-, DLL- und ActiveX-QDF-APIs und die Option
PDF_QDF_OMIT_ORIGINAL_OBJECT_IDSlegen den Workflow auf jeder öffentlichen Oberfläche offen
Version 3.382.0
Hinzugefügt
PDF_LINEARIZE_OBJECT_STREAMSaktiviert begrenzte Objekt-Stream-Packung und einen komprimierten Haupt-xref-Stream und bewahrt dabei direkt lesbare Querverweisdaten der Erstseite
Geändert
SaveToFileOptionsbewahrt jetzt die Objekt-Stream-Packung, wennLinearizeundPackObjectStreamsgemeinsam aktiviert sind
Behoben
LinearizeFileunterstützt jetzt identische Eingabe- und Ausgabepfade, ohne Quellbytes abzuschneiden, bevor der Linearisierungsdurchlauf sie liest
Version 3.381.0
Hinzugefügt
ValidateLinearizationFileundGetLinearizationValidationReportprüfen unabhängig Fast-Web-View-Dictionaries, Hint-Bereiche und Bittabellen, Erstseiten-Abhängigkeiten und Bytegrenzen, Seitenanzahlen und den Haupt-Querverweiseintrag
Behoben
- Linearisierte Ausgaben schreiben jetzt deterministische MSB-first-Tabellen für Seitenversätze und gemeinsame Objekte mit byte-ausgerichteten Vektoren, genauen Seitenlängen und hint-relativen Versätzen
- Erzeugte Hint-Tabellen enthalten keine zufälligen Bitbreiten, Little-Endian-Felder, unvollständigen gemeinsamen Gruppenzeilen oder Platzhalter-Inhaltsversätze mehr, die konforme Leser zur Ablehnung von Fast-Web-View-Daten bringen könnten
Version 3.380.0
Hinzugefügt
- Große Flate-Streams lassen sich jetzt durch begrenzte Chunks komprimieren und dekomprimieren, einschließlich direkter Stream-Extraktion über
GetEmbeddedFileContentToStreamundGetEmbeddedFileContentToFile
Geändert
- Das Speichern großer RC4-, AES-CBC- und AES-GCM-verschlüsselter Streams schreibt jetzt Chiffretext mit exakt vorberechneten Längen direkt ins Ziel, statt vollständige temporäre Kopien zu materialisieren und dann zu entschlüsseln
- Große eingebettete Dateiimporte komprimieren schrittweise in ihren gespeicherten Stream, und wiederholte verschlüsselte Speicherungen bewahren die Quellbytes im Speicher und die Stream-Metadaten
Version 3.379.0
Hinzugefügt
StartEditJournal, explizite Transaktionsgrenzen, Zurückrollen, Undo, Redo, Historienzurücksetzung, Statusabfragen und Absturzwiederherstellung stehen Delphi-, DLL- und ActiveX-Aufrufern zur Verfügung- Persistente Journale hängen unabhängig geprüfte PDF-Zustands- und Cursor-Datensätze an, schreiben vollständige Datensätze auf den Speicher und stellen den letzten vollständigen Commit wieder her, wenn ein abschließender Schreibvorgang unvollständig oder beschädigt ist
Geändert
- Undo, Redo, Zurückrollen und Wiederherstellung bewahren das ausgewählte Dokument-Handle und erklären flüchtige Handles für ungültig, deren zugrunde liegende Dokumentobjekte ersetzt wurden
- Der Undo-Speicher ist durch die konfigurierte Schrittanzahl begrenzt, Snapshots werden nur an Transaktionsgrenzen serialisiert, und Dokumentkennwörter werden nie in Wiederherstellungsjournale geschrieben
Version 3.378.0
Hinzugefügt
ConvertTextToPathswandelt Konturschrift-Text und Typ-3-Glyphenprogramme über ausgewählte Seiten und verschachtelte Formulare hinweg in wiederverwendbare Vektor-Form-XObjecte um- Delphi-, DLL- und ActiveX-Aufrufer können rekursive Form-Konvertierung und automatisches Aufräumen der Quell-Schriftressourcen wählen
Geändert
- Konvertierter Inhalt bewahrt Textpositionierung, Abstände, Schreibrichtung, Transformationen, Farben und Stricheinstellungen und entfernt zugleich die ursprünglichen Textanzeige-Operatoren
- Text-Beschneidungs-Rendering-Modi und mehrdeutige gemeinsame Ressourcenbereiche werden abgelehnt, bevor ein Dokumentobjekt verändert wird
Version 3.377.0
Hinzugefügt
CopyPageRangesExakzeptiertPDF_COPY_PAGE_SMART_RESOURCES, um gleichwertige Schriften, Bilder, Farbräume, Muster, Schattierungen und Grafikzustände wiederzuverwenden, die im Zieldokument bereits vorhanden sindPDF_COPY_PAGE_KEEP_ORDERbenennt die bestehende Option für geordnetes Duplizieren von Seiten und lässt sich mit der intelligenten Ressourcenkopie kombinieren
Geändert
- Das intelligente Seitenkopieren normalisiert Objektnummern, Dictionary-Schlüsselreihenfolge, numerische Schreibweise und Stream-Längen vor dem Hashen, bestätigt jede Übereinstimmung strukturell und überspringt zyklische oder identitätsempfindliche Graphen
CollateDocumentsExwendet jetzt semantische Ressourcenwiederverwendung über seine Quelldokumente hinweg an, ohne zuerst doppelte Ressourcen-Graphen zu belegen
Version 3.376.0
Hinzugefügt
TrimPageContentToCropBoxentfernt vollständige Textläufe der obersten Ebene, gezeichnete Pfade, Bildplatzierungen und Form-XObject-Aufrufe, die vollständig außerhalb der CropBox einer Seite liegenTPDFContentProgram.TraceGraphicsStatePairserfasst Vorher-Nachher-Zustände von Anweisungen in einem Replay und führt einen aufrufereigenen Tracker über Inhaltsschichten hinweg fort- Delphi-, DLL- und ActiveX-Aufrufer können vorzeichenbehaftete Ränder anwenden, während sie Seitenbeschnitt beschneiden und zurückgehaltenen Inhalt reduzieren
Geändert
- Das CropBox-Beschneiden bewahrt schneidende oder unaufgelöste Objekte, Beschneidungspfade, Text-Beschneidungsmodi und gemeinsame Form-Internas und hält relative Textweiten nach entfernten Strings aufrecht
Version 3.375.0
Hinzugefügt
TPDFStructurelegtDecodeMaxDepth,LastDecodeStatusundLastDecodePositionfür begrenztes Low-Level-Objekt-Parsen und präzise Limit-Diagnosen offen
Geändert
- PDF-Arrays und -Dictionaries parsen jetzt über einen expliziten begrenzten Zustandsstapel, einschließlich verschachtelter Operanden in Seiten-Inhalts-Streams
Sicherheit
- Nicht vertrauenswürdige direkte Objekte, die tiefer als das Standard-Limit von 256 Containern liegen, werden abgelehnt, bevor sie den Thread-Stapel erschöpfen können
Version 3.374.0
Hinzugefügt
AddType3Fonterzeugt programmierbare Typ-3-Schriften mit aufruferdefinierten Matrizen und SchriftgrenzenAddType3Glyphschreibt bytecodierte Glyphen-Grafikprogramme mit automatischen Metriken, Codierung, Weiten und Unicode-ExtraktionszuordnungenAddType3FontResourcestellt Glyphenprogrammen Schriften, Bilder, Grafikzustände, Schattierungen und andere indirekte Ressourcen bereit- Delphi-, DLL- und ActiveX-Aufrufer können Typ-3-Symbol-, Stempel- und Sonderzweckschriften erstellen, ohne ein externes Schriftprogramm zu installieren oder einzubetten
Geändert
- Typ-3-Glyphenaktualisierungen bauen kompakte abgeleitete Schrifttabellen an Ort und Stelle neu auf und behalten das Schrift-Handle, das bestehende Seitenressourcen verwenden
Version 3.373.0
Hinzugefügt
- Strukturbaum-Cursor navigieren zu Eltern, Kindern und Geschwistern und bewahren dabei die Elementidentität über Reparaturen und Neuordnungen hinweg
ReparentStructTreeCursorverschiebt oder ordnet Strukturelemente neu und lehnt Selbst-Verpflanzung oder Nachfahren-Zyklen abNormalizeStructTreenormalisiert Kindersammlungen, repariert Elternverknüpfungen, hebt direkte Elemente hoch und entfernt ungültige, doppelte oder zyklische Kanten
Geändert
- Die Strukturbaum-Reparatur bewahrt Marked-Content-Eigentum und ParentTree-Zuordnungen und macht Hierarchiebearbeitungen für folgende Speicherungen sicher
Version 3.372.0
Hinzugefügt
EnumeratePageElementsgibt stabile kurzlebige Handles für bearbeitbaren Text-, Bild- und Pfadinhalt zurückDeletePageElemententfernt ein aufgezähltes Objekt und bewahrt dabei die spätere relative TextpositionierungTransformPageElementschreibt eine affine Matrix um das ausgewählte Objekt, ohne unverwandten Inhalt zu verändern
Geändert
- Bearbeitbare Element-Handles prüfen den ursprünglichen Inhalts-Fingerabdruck und lehnen veraltete oder mehrdeutige Veränderungen ab
Version 3.371.0
Hinzugefügt
ExportObjectJSONstreamt den vollständigen Trailer und den indirekten Objekt-Graphen in deterministisches, umkehrbares typisiertes JSONImportObjectJSONvalidiert und führt Objekt-Graphen zusammen oder ersetzt die vollständige indirekte ObjektmengeGetObjectJSONundSetObjectJSONlegen atomare Inspektion und Aktualisierung je Objekt über Delphi, DLL und ActiveX offen
Geändert
- Objekt-Graph-JSON bewahrt binäre Namen, Dictionary-Schlüssel, Strings, Streams, Referenzgenerationen, skalare Typen und Objektnummer-Reihenfolge ohne mehrdeutige JSON-Umwandlungen
Version 3.370.0
Hinzugefügt
- Ein kompilierter Arlington-TSV-Modell-Lader stellt stabile wiederverwendbare Handles sowie Definitions- und Regelanzahlen bereit
- Die modellgetriebene Syntaxvalidierung prüft Objektschlüssel, erforderliche Einträge, Typen, PDF-Version-Verfügbarkeit, direkte und indirekte Referenzen, erlaubte Werte und verknüpfte Objekt-Graphen
- Delphi-, DLL- und ActiveX-APIs validieren Dateien oder bestehende gemeinsame Validierungspipelines und geben strukturierte Diagnoselisten zurück
Geändert
- Die Syntaxvalidierung wiederverwendet gemeinsame Parse- und Objekt-Caches, wählt mehrdeutige Verknüpfungen nach Objekt-Diskriminatoren und unterdrückt wiederholte Besuche von Objektdefinitionen
Version 3.369.0
Hinzugefügt
- Wiederverwendbare Validierungspipelines öffnen und parsen ein PDF einmal und führen dann PDF/A- und PDF/UA-Aufgaben aus oder bauen kombinierte Berichte gegen den gemeinsamen Leser und Objekt-Cache
- Delphi-, DLL- und ActiveX-APIs legen Pipeline-Erzeugung, Aufgabenausführung, Berichterzeugung, Prüfung der Parse-Anzahl und explizite Freigabe offen
Geändert
CreatePreflightReportundCreateValidationReportteilen sich ein Parsen und einen verzögerten Objekt-Cache, wenn mehrere Konformitätsprüfungen gewählt sind
Version 3.368.0
Hinzugefügt
AddStructureNamespaceregistriert PDF-2.0-Struktur-Namensräume und schreibt gemeinsame/Namespace-Dictionaries überStructTreeRoot/NamespacesAddRoleMapNSbildet eigene Strukturtypen innerhalb eines Namensraums oder über registrierte Namensräume hinweg ab- Standard- und elementbezogene Namensraum-Auswahlen, Namensraum-Abfragen, DLL-Exporte und ActiveX-Methoden legen den vollständigen Workflow offen
Geändert
- Die Barrierefreiheitsmodi PDF/UA-2 und WTPDF weisen bestehenden und künftigen nicht zugewiesenen Strukturelementen automatisch den PDF-2.0-Standard-Struktur-Namensraum zu
GetStructTreeItemTextlöst/RoleMapNS-Ketten auf und gibt die Namensraum-URI des Elements über InfoID 9 zurück
Version 3.367.0
Hinzugefügt
SetPDFUA2Modeaktiviert PDF/UA-2-Metadaten, PDF-2.0-Versionierung, Dokumentsprache, Marked-Content-Schutzmaßnahmen und Titelanzeige-EinstellungenSetWTPDFModedeklariert die WTPDF-1.0-Zugänglichkeitsstufe, die Wiederverwendungsstufe oder beide und bewahrt dabei unverwandte PDF-Deklarationen- Delphi-, DLL- und ActiveX-Getter legen den aktiven PDF/UA-Teil und die WTPDF-Deklarationsmaske offen
Geändert
- Die PDF/UA-Diagnose erkennt Teil 2, verlangt
pdfuaid:rev=2024und erzwingt die Mindestversion PDF 2.0
Version 3.366.0
Hinzugefügt
SetCryptFilterConfigurationwählt die Verschlüsselung für PDF-Strings, gewöhnliche Streams und eingebettete Datei-Streams unabhängig über/StrF,/StmFund/EFF- Delphi-, DLL- und ActiveX-Getter legen jedes ausstehende Verschlüsselungsziel offen, während die etablierte Einstellung „nur eingebettete Dateien" kompatibel bleibt
Geändert
- AES-Kennwort-, öffentliche-Schlüssel- und Fingerabdruck-Verschlüsselung verwenden eine gemeinsame Kryptfilter-Richtlinie, lehnen Konfigurationen ohne geschütztes Ziel ab und verhindern, dass selektive Richtlinien auf RC4-Handler angewendet werden
Behoben
- Verschlüsselungs-Fingerabdrücke stellen jetzt ihren vollständigen Verschlüsselungsdatensatz wieder her und speichern über den normalen Objekt-Schreiber, ohne das Fingerabdruck-Präfix abzuschneiden oder Objektinhalt doppelt zu verschlüsseln
Version 3.365.0
Hinzugefügt
- Unverschlüsselte PDF-2.0-Hüllen können ein vollständiges verschlüsseltes PDF als verborgenes anfängliches Sammlungsdokument mit standardmäßigen verschlüsselten-Nutzdaten-Metadaten tragen
- Delphi-, DLL- und ActiveX-APIs erzeugen, identifizieren, untersuchen und extrahieren verschlüsselte Nutzdaten aus Datei-, binären String-, Stream- oder Bytearray-Daten
Geändert
- Die Hüllen-Erzeugung verhindert äußere Verschlüsselung und PDF MAC, validiert Handlernamen, vermeidet die Offenlegung von Quellpfaden und bewahrt Nutzdatenbytes exakt
Version 3.364.0
Hinzugefügt
TPDFlibEUTSLTrustSourceprüft XML-Signaturen der EU-LOTL und nationaler TSLs, legt Snapshots vertrauenswürdiger Dienste offen und stellt zeitbewusste CA- und TSA-Anker bereitTPDFlibSignatureVerifiernimmt externe Vertrauensquellen entgegen und meldet den Status qualifizierter Zertifikate, elektronischer Signaturen, elektronischer Siegel und QSCDs samt Dienstherkunft
Geändert
- Das Laden vertrauenswürdiger Listen schlägt geschlossen fehl bei nicht angehefteten Unterzeichnern, detacheten oder mehrdeutigen Signaturen, schwachen Algorithmen, Prüfsummenänderungen, Gebietsabweichungen, veralteten Listen, fehlerhaften Kriterien sowie unbegrenzter Netzwerk- oder XML-Eingabe
- Vollständige TSL-Aktualisierungen sind transaktional, während Zertifikatsketten-Engines manuelle und Quell-Anker kombinieren und sie nach Listenrevision und Prüfungszeit wiederverwenden
Version 3.363.0
Hinzugefügt
TPDFlibPKCS11Clientlädt PKCS-#11-2.x- und -3.x-Module, zählt Tokens auf, authentifiziert Benutzer, paart Zertifikate mit privaten Schlüsseln und signiert PDF-Prüfsummen ohne CSP- oder KSP-Registrierung- Token-, Slot-, Mechanismus-, Funktionstabellen- und Callback-Typen unterstützen direktes Modulladen wie auch anwendungsverwaltete Funktionslisten
Geändert
- Die RSA-Signatur baut die erforderliche DER-
DigestInfovor rohemCKM_RSA_PKCSauf, während die ECDSA-Signatur die P1363-Ausgabe des Tokens auf Anfrage in DER umwandelt - Geteilte Modul-Lebenszyklen, persistente Sitzungen, geschützte Authentifizierungspfade, Authentifizierung je Operation, begrenzte Hot-Plug-Wiederholungen und Sitzungswiederherstellung vor der Operation verbessern HSM-Zuverlässigkeit und Durchsatz
Version 3.362.0
Hinzugefügt
TPDFlibCSCClientfindet entfernte Signaturberechtigungen, bezieht hash-gebundene oder vorab geholte Signaturaktivierungsdaten und übermittelt einzelne oder gestapelte Prüfsummensignaturen über die CSC-API- Der Client steckt sich direkt in
OnExternalDigestSignein, sodass entfernte RSA- und DER-ECDSA-Signaturen die bestehende CMS-Konstruktion, Signatur-Bemessung und den Public-Key-Prüfpfad wiederverwenden
Geändert
- Der eingebaute HTTP-Transport akzeptiert aufrufergelieferte Anforderungs-Header für OAuth-Bearer-Authentifizierung und behält dabei Grenzen für Antwortgröße und Phasen-Timeouts bei
- Berechtigungs-, Autorisierungs- und Signaturantworten lehnen jetzt doppelte oder fehlerhafte JSON-Felder, ungültige X.509- oder Base64-Daten, nicht unterstützte Algorithmen, inkonsistente Stapelgrößen, veraltete Aktivierungsdaten und SCAL-Hash-Bindungs-Verstöße ab
Version 3.361.0
Hinzugefügt
VerifyAdESHistoricalundVerifyAdESHistoricalByNameleiten vertrauenswürdige historische Kontrollzeiten automatisch aus Signatur-Zeitstempeln und überdeckenden Dokument-Zeitstempeln abTPDFlibAdESHistoricalValidationReportlegt angeforderte und wirksame Kettenergebnisse, Nachweisquelle und -zeit, Archivabdeckung, Zeitstempelanzahlen und fehlerspezifischen Status offen
Geändert
- Die historische Sperrvalidierung schlägt geschlossen fehl, sofern kein vertrauenswürdiger Zeitstempel des gesamten Dokuments die aktuellen DSS- und VRI-Nachweise versiegelt
- Zertifikat- und OCSP-Prüfungszeiten wandeln jetzt mit exakter ganzzahliger Millisekunden-Arithmetik in die Windows-Dateizeit um und vermeiden Grenzdrift bei Gültigkeitsübergängen von Zertifikaten
Version 3.360.0
Hinzugefügt
SetSignatureFieldSeedValue,AddSignatureFieldSeedCertificateundClearSignatureFieldSeedValueerzeugen und verwalten Standard-/SV-Bedingungen für unsignierte SignaturfelderGetSignProcessSeedValueErrormeldet den genauen erforderlichen Filter, SubFilter, Prüfsumme, Grund, Sperrinformation, Zertifikat, Version oder die nicht unterstützte Bedingung, die das Signieren verhindert hat
Geändert
- Das Signieren setzt erforderliche Signaturfeld-Seed-Werte jetzt durch, nachdem die gewählte Identität geöffnet und bevor das Feld oder das Ausgabeziel verändert wird
- Nicht unterstützte erforderliche Seed-Wert-Bedingungen schlagen geschlossen fehl, während Semikolon-getrennte erlaubte Werte und exakte DER-Unterzeichnerzertifikate über Delphi-, DLL- und ActiveX-APIs hinweg konsistent durchgesetzt werden
Version 3.359.0
Hinzugefügt
AddSignProcessRevocationCRLundAddSignProcessRevocationOCSPbetten Validierungsmaterial im signierten Attributadbe-revocationInfoArchivalfür herkömmlicheadbe.pkcs7.detached-Signaturen einClearSignProcessRevocationInfoentfernt vor der Erzeugung der Signatur das gesamte archivierte Sperrmaterial aus einem Signaturprozess
Geändert
- Nackte
BasicOCSPResponse-Werte werden zu erfolgreichenOCSPResponse-Strukturen normalisiert, und byteidentische CRLs sowie normalisierte OCSP-Antworten werden dedupliziert - Archivierte Adobe-Sperrattribute werden sowohl von der Windows-CryptoAPI als auch von modernen RSA-, ECDSA-, Ed25519-, CNG- und externen Prüfsummen-Signaturpfaden unterstützt
Version 3.358.0
Hinzugefügt
SetSignProcessContentsEstimatebemisst Signatur-Platzhalter aus dem Basis-CMS, der zwischengespeicherten Zertifikatskette, geplantem CRL- und OCSP-Material, einem erwarteten RFC-3161-Token und einem konfigurierbaren SicherheitsrandGetSignProcessEstimatedContentsBytesmeldet die ausgerichtete Rohbyte-Kapazität, die für den letzten Signaturversuch gewählt wurde
Geändert
- Neue Signaturprozesse entdecken automatisch zusätzlichen Zertifikatsketten-Speicher aus lokalen Caches und wenden einen Rand von 15 Prozent an, bevor sie die
/Contents-Kapazität auf 256 Bytes ausrichten - CNG-, HSM- und externe Prüfsummen-Signaturen leiten RSA-, ECDSA- und Ed25519-Signaturgrößen jetzt vom öffentlichen Zertifikat ab, statt eine feste 16-KiB-Provider-Nutzdatengröße vorzubehalten
- Die automatische Schätzung führt keinen Netzwerkabruf aus und ruft keinen privaten Schlüssel oder externen Signatur-Callback auf
Version 3.357.0
Hinzugefügt
SetSignProcessAppearanceTemplatebaut wiederverwendbare sichtbare Signaturlayouts aus Platzhaltern für Unterzeichner, Grund, Ort, Kontakt, Datum, Feld, Seite und anwendungsdefinierte Werte aufSetSignProcessAppearanceVariablefügt einem einzelnen Signaturprozess groß-/kleinschreibungsunabhängige eigene Werte hinzu und kann sie entfernen, ohne den Prozess neu zu erzeugen
Geändert
- Sichtbare Signaturvorlagen unterstützen konfigurierbare Zeitformate für den Signaturzeitpunkt und escapete literale geschweifte Klammern und bewahren dabei die bestehenden Vorrangregeln für Bild und Dokument-Zeitstempel
- Die Vorlagen-Expansion verwendet begrenzte Eingabegrößen und einen amortisiert linearen Ausgabepuffer, sodass große wiederverwendbare Layouts keine wiederholten Ganz-String-Kopien verursachen
Version 3.356.0
Hinzugefügt
TPDFlibSignatureVerifierkann DER- oder dateibasierte X.509-Vertrauensanker hinzufügen, deren duplikatfreie Anzahl melden und sie löschen, ohne die Windows-Zertifikatsspeicher zu verändern
Geändert
- Eine nicht leere eigene Vertrauensankermenge steuert jetzt sowohl die Unterzeichnerzertifikat- als auch die RFC-3161-Zeitstempel-Prüfung über eine exklusive In-Memory-Root-Engine
- Das Löschen der eigenen Menge stellt die Standard-Systemvertrauens-Engine für folgende Prüfungen wieder her
Sicherheit
- Die eigene Vertrauensprüfung schließt die Windows-Speicher
RootundTrustedPeopleaus, während eingebettete PDF- und DSS-Zertifikate unvertrauenswürdiges Kettenbaumaterial bleiben
Version 3.355.0
Hinzugefügt
SetSignProcessExternalDigestSignerund seine Dateivariante bauen detachete CMS-Signaturen um RSA- oder ECDSA-Ergebnisse, die ein externer Unterzeichner liefertOnExternalDigestSign,DLSetExternalDigestSignCallbackundSetExternalDigestSignCallbackstellen synchrone Delphi-, DLL- und ActiveX-Callback-Flächen für HSM- und Fernsignatur-Integrationen bereit- Externe ECDSA-Callbacks können entweder DER-Signaturen oder P1363-Werte
r || sfester Breite zurückgeben
Geändert
- Externe Unterzeichner empfangen nur die endgültige Prüfsumme der authentifizierten CMS-Attribute und werden einmal aufgerufen, nachdem die PDF-Bytebereiche und Attribute vollständig sind
- Die Platzhalter-Bemessung verwendet die konfigurierte Signatur-Reserve, ohne den externen Unterzeichner aufzurufen
- Leere oder übergroße Nicht-Durchreiche-Signaturen lassen den Signaturprozess jetzt fehlschlagen, statt einen leeren oder abgeschnittenen
/Contents-Wert zu schreiben
Sicherheit
- Jede extern zurückgegebene Signatur wird gegen das konfigurierte X.509-Zertifikat geprüft, bevor sie in das PDF geschrieben werden kann
Version 3.354.0
Hinzugefügt
SetSignProcessCNGKeyundSetSignProcessCNGKeyFromFilesignieren mit benannten NCrypt-Schlüsseln aus Software-, TPM-, Hardware-Token- oder Cloud-Schlüsselspeicher-Anbietern, ohne privates Schlüsselmaterial zu exportierenSetSignProcessCNGKeyByHandlenimmt ein aufrufereigenesNCRYPT_KEY_HANDLEfür anwendungsverwaltete Schlüsselsuche und Richtlinien-Workflows entgegenSetSignProcessPrivateKeyUIsteuert, ob zertifikatsgebundene Anbieter PIN-, Zustimmungs-, Token- oder Cloud-Genehmigungsoberflächen anzeigen dürfen
Geändert
- Benannte und geliehene CNG-Schlüssel verwenden einen direkten NCrypt-Signaturpfad für detachete RSA- und ECDSA-Signaturen über die Prüfsummen-Familien SHA-1, SHA-2 und SHA-3
- Die CNG-Platzhalter-Bemessung führt keine vorläufige private Schlüsseloperation mehr aus und vermeidet doppelte Token-Eingaben, Ferngenehmigungen, Prüfeinträge oder Anbietergebühren
- Stilles Signieren bleibt der Standard, während der interaktive Modus die stillen Beschaffungs- und Signatur-Flags entfernt, damit externe Anbieter ihren Authentifizierungsfluss abschließen können
Sicherheit
- Explizite CNG-Identitäten werden auf zertifikatkompatible Algorithmusgruppen geprüft, und die fertige CMS-Signatur wird gegen das gelieferte Zertifikat verifiziert, bevor sie akzeptiert wird
Version 3.353.0
Hinzugefügt
- Detachete PDF-Signaturen lassen sich mit ECDSA-P-256-, P-384- und P-521-Zertifikaten über die Prüfsummen-Familien SHA-1, SHA-2 oder SHA-3 erzeugen und prüfen
- Die Ed25519-Signatur nimmt ein DER-X.509-Zertifikat mit rohem Seed oder unverschlüsseltem PKCS-#8-Privatschlüssel über Delphi-, DLL- und ActiveX-Schnittstellen entgegen
SetSignProcessDigestAlgorithmakzeptiert SHA3-256, SHA3-384 und SHA3-512 als Algorithmus-Codes 5, 6 und 7
Geändert
- Moderne detachete Signaturen verwenden einen kanonischen CMS-Builder mit normausgerichteten Prüfsummen- und Signaturalgorithmus-Bezeichnern, statt sich auf anbietergewählte Bezeichner zu verlassen
- Die Prüfung moderner Signaturen validiert die detachete Inhalts-Prüfsumme, kanonische signierte Attribute, eingebettete Unterzeichneridentität und die Public-Key-Signatur, ohne traditionelle CryptoAPI-Algorithmus-Unterstützung zu verlangen
Sicherheit
- Die Ed25519-Prüfung lehnt nicht-kanonische Skalare, nicht-kanonische Punktcodierungen, Schlüssel kleiner Ordnung, abweichende Zertifikatsidentitäten und veränderte signierte Attribute ab
Version 3.352.0
Hinzugefügt
EncryptPublicKeyerzeugt AES-128- oder AES-256-Adobe.PubSec-Dokumente für mehrere X.509-Zertifikatsempfänger ohne gemeinsames Kennwort- Empfänger lassen sich aus DER, PEM, PKCS-#12-PFX, Zertifikatsspeichern des aktuellen Benutzers oder des lokalen Computers laden und können unabhängige PDF-Berechtigungsmasken erhalten
- PFX- und Zertifikatsspeicher-Zugangsdaten öffnen öffentlich verschlüsselte Dokumente über die normalen Datei-, Stream- und String-Lade-APIs
- Empfängeranzahlen, Berechtigungsgruppenanzahlen, Authentifizierungsstatus und Steuerungen des Zugangsdaten-Lebenszyklus stehen über Delphi-, DLL- und ActiveX-Schnittstellen zur Verfügung
Behoben
- Die ActiveX-Typbibliothek-Erzeugung bewahrt jetzt die bestehenden PDF/UA-, Tagged-PDF-, Artefakt-, Dokumentsprach- und zugeordnete-Datei-Methoden und hängt die Public-Key-APIs an, ohne etablierte binäre Schnittstellenplätze zu verschieben
DecryptFileerreicht den direkten AES-256-Neuschreibpfad ohne einen Vorab-Test mit vollem Leser für gewöhnliche verschlüsselte Dokumente und validiert dennoch PDF-MAC-Signale, bevor geschützter Inhalt neu geschrieben wird
Sicherheit
- CMS-EnvelopedData wird mit begrenztem DER-Parsen validiert, Empfänger-Berechtigungsgruppen werden mit ihrer verschlüsselten Seed-Nutzdaten authentifiziert, und mehrdeutige oder fehlerhafte Umschläge werden mit eigenen Fehlercodes abgelehnt
- Empfänger mit denselben Berechtigungen werden in einen Umschlag gruppiert, um Ausgabegröße und Schlüsselableitungsaufwand zu senken, während der zertifikatspezifische Schlüsseltransport erhalten bleibt
Version 3.351.0
Hinzugefügt
SetPDFMACEnablederzeugt eigenständige PDF-MAC-Integritätstoken für AES-256-Revision-6- und AES-GCM-verschlüsselte Dokumente, einschließlich des erforderlichen Schlüsselableitungs-Salzes, des Berechtigungssignals, der Bytebereiche und der CMS-AuthentifizierungsdatenGetPDFMACStatusundValidatePDFMAClegen Prüfergebnisse über Delphi-, DLL- und ActiveX-Schnittstellen offen
Sicherheit
- Geschützte Dokumente werden nach der Kennwortauthentifizierung und vor dem Bereitstellen von Seiten automatisch geprüft; fehlende Token, fehlerhaftes DER, nicht unterstützte Algorithmen, unvollständige Abdeckung, Fehler beim Entpacken des Schlüssels und veränderte Authentifizierungswerte werden mit eigenen Fehlercodes abgelehnt
EncryptFile,EncryptFileExundDecryptFilebewahren jetzt PDF-MAC-Garantien über Verschlüsselungs-Workflows auf Dateiebene und validierte Entschlüsselungs-Workflows hinweg
Version 3.350.0
Hinzugefügt
Encrypt,EncryptFileundEncryptFileExakzeptieren Stärke 5, um PDF-2.0-Dokumente mit authentifizierter 256-Bit-AES-GCM-Verschlüsselung, Sicherheits-Dictionaries der Revision 7 und der ISO-TS-32003-Erweiterungsdeklaration zu erzeugen- Die Lese- und Dateientschlüsselungspfade öffnen AES-GCM-Dokumente und legen den neuen Modus über
EncryptionAlgorithm,GetEncryptionLevelundSecurityInfooffen
Sicherheit
- AES-GCM-Authentifizierungsfehler lehnen jetzt veränderte Strings oder Streams ab und veranlassen
DecryptFile, unvollständige Ausgaben zu entfernen
Version 3.349.0
Geändert
LinearizeFileordnet große Objekt-Graphen jetzt mit einem stabilenO(n log n)-Zusammenführungsdurchlauf und durchläuft indirekte Abhängigkeiten mit einem expliziten Arbeitsstapel, was quadratische Ordnungsarbeit und einen Aufrufrahmen je erreichbarem Objekt vermeidet
Behoben
- Der Erstseiten-Abschnitt umfasst jetzt Annotations-Dictionaries und ihre erreichbaren Erscheinungen, Aktionen und Ressourcen, sodass Fast-Web-View-Clients Erstseiten-Annotationen anzeigen können, ohne Objekte von jenseits der Erstseitengrenze zu holen
Version 3.348.2
Behoben
- Die Bibliothek kompiliert jetzt ohne Warnungen und Hinweise im Win64-Bau. Der FNV-1a-String-Hash-Initialisator überschritt den
Integer-Bereich, daher wanderte sein Akkumulator mit byte-identischem maskiertem Ergebnis zuCardinal, und zehn Zuweisungen, die der Compiler als nie gelesen nachwies — plus eine unbenutzte Variable — wurden entfernt. Das Laufzeitverhalten änderte sich nicht
Version 3.348.1
Behoben
- Das Betrachtungs-Steuerelement kompiliert wieder unter Delphi XE5 und XE6. Sein Pro-Monitor-DPI-Handler verwendete
WM_DPICHANGED, eine Nachrichtenkonstante, dieWinapi.Messagesvor XE7 nicht enthielt, sodass die Trial-Baumatrix — die weiterhin die älteren Werkzeugketten ansteuert — beiPDFlibViewer.pasmit einem Fehler für einen undeklarierten Bezeichner anhielt. Die Konstante wird jetzt nur lokal auf Compilern deklariert, die sie nicht bereits mitbringen, wodurch die DPI-Behandlung zur Laufzeit unverändert bleibt
Version 3.348.0
Hinzugefügt
ConvertToPDFAverwandelt ein gewöhnliches Dokument mit einem einzigen Aufruf in ein archivfähiges: Es entfernt, was der gewählte Teil verbietet, fügt hinzu, was der Teil verlangt, nennt den Teil, den das Dokument beansprucht, und prüft danach das Ergebnis.- Der Anspruch wird nur dann als erfüllt gemeldet, wenn die Prüfung besteht. Eine Datei, die behauptet, archivfähig zu sein, und es nicht ist, passiert genau die Systeme, die sie sonst abgefangen hätten, deshalb kommt das Urteil aus der Prüfung und nicht aus dem Versuch.
GetPDFAConversionReportlistet auf, was getan wurde, und wo das Dokument noch zurückbleibt, was dem im Wege steht.
Version 3.347.1
Behoben
SanitizeDocumententfernt jetzt wirklich das JavaScript, dessen Entfernung es meldet. Es fragte die Paketliste nach einem Eintrag vor dem ersten ab, erhielt nichts und hielt an, bevor ein einziges Skript entfernt war — ein bereinigtes Dokument führte seine Skripte beim Öffnen also weiterhin aus.- Das Entfernen des letzten Skripts beseitigt jetzt auch den leeren Namensbaum, den es zurücklässt und der einem Betrachter sonst weiterhin meldete, dass das Dokument Skripte trägt.
Version 3.347.0
Hinzugefügt
RepairDocumentMetadatabringt die beiden Stellen, an denen ein PDF sagt, wer es geschrieben hat, in Übereinstimmung. Ein Prüfer liest sowohl die Dokumentinformationen als auch das XMP-Paket und lehnt eine Datei ab, in der beide voneinander abweichen; die meisten Dateien, die an diesem Punkt scheitern, hatten die XMP-Hälfte schlicht nie geschrieben bekommen.- Wo nur eine Hälfte einen Wert trägt, wird die andere aus ihr gefüllt, sodass nichts bereits Aufgezeichnetes verworfen wird.
- Ein Dokument, das auf einen PDF/A-Modus eingestellt ist, erhält seine Norm-Identifikation zurück, falls sie verloren ging, was immer dann geschieht, wenn ein Aufrufer ein eigenes Paket liefert. Ohne sie liest ein Prüfer die Datei als gewöhnliches PDF und meldet jede Regel des beanspruchten Teils als unerfüllt.
- Gibt zurück, wie viele Einträge repariert wurden.
Version 3.346.0
Hinzugefügt
RecolorDocumentwandelt jetzt auch die Verläufe um, die ein Dokument zeichnet. Der Farbraum des Verlaufs und die Farbstops dahinter wandern gemeinsam, sodass ein umgewandelter Verlauf als eine Farbe gelesen wird und nicht als ein Kanal, der für eine Graustufe gehalten wird.- Verläufe, die innerhalb des Musters liegen, das sie zeichnet, oder innerhalb der Schattierungs-Ressourcen einer Seite, werden ebenso gefunden wie solche mit einem eigenen Objekt.
Geändert
- Ein Verlauf, der aus einer abgetasteten oder PostScript-Funktion aufgebaut ist, bleibt unverändert, ebenso die Mesh-Typen, die ihre Farben in einem Stream statt in einer Funktion tragen. Diese neu zu schreiben ist eine andere Operation als das Umwandeln einer Farbe.
Version 3.345.0
Hinzugefügt
RecolorDocumentwandelt ein indiziertes Bild jetzt um, indem es seine Farbtabelle umwandelt, und lässt jedes Sample den Index halten, den es ohnehin hielt. Ein solches Bild konvertiert, egal wie seine Samples gepackt oder komprimiert sind, einschließlich der Palettenbilder, mit denen ein Screenshot oder ein Diagramm üblicherweise gespeichert wird.
Version 3.344.0
Hinzugefügt
RecolorDocumentwandelt jetzt auch die Bilder um, die eine Seite zeichnet, und nicht nur die Farben, die sie setzt, sodass ein grau gewandeltes Dokument keine Farbbilder mehr auf grauen Seiten zeigt.- Weichmasken und Schablonenmasken bleiben unangetastet. Beide werden als Abdeckung statt als Farbe gelesen, und eine davon umzuwandeln hätte zur Folge, dass die Seite die Maske als Bild zeigt.
Geändert
- Ein Bild wird umgewandelt, wenn es acht Bits je Komponente, einen Device-Farbraum sowie entweder keine Komprimierung oder schlichtes Flate trägt. Ein JPEG- oder Faxbild müsste neu codiert werden, was eine andere Operation ist als das Umwandeln seiner Farben, deshalb behalten diese ihre eigenen Bytes.
Version 3.343.0
Hinzugefügt
- Ein ganzes Dokument oder eine einzelne Seite in einen Farbraum überführen.
RecolorDocumentundRecolorPagenehmen 1 für Grau, 2 für RGB und 3 für CMYK entgegen und geben zurück, wie viele Farben umgewandelt wurden. - Nützlich, bevor Arbeit an eine Druckerei geht, die einen Raum erwartet, oder um ein Farbdokument ohne Neuzeichnen in ein graues zu verwandeln. Geometrie, Text und Bilder bleiben exakt, wie sie waren; nur die Farboperatoren ändern sich.
- Eine bereits im Zielraum gesetzte Farbe bleibt unangetastet, sodass eine Seite, deren Farben keiner Änderung bedürfen, ihre ursprünglichen Bytes behält.
- Farben, die über einen ICCBased-, Separation-, Indexed- oder Pattern-Raum gesetzt sind, bleiben, wie sie stehen. Diese ohne das Lesen ihrer Profile umzuwandeln würde verändern, wie die Seite aussieht, statt sie zu bewahren.
Version 3.342.0
Hinzugefügt
- PDF/A-4-Archivierung, der auf PDF 2.0 aufgebaute Teil der Norm.
SetPDFAModenimmt drei neue Modi entgegen: 9 für PDF/A-4, 10 für PDF/A-4e, das zusätzlich 3D und Rich Media erlaubt, und 11 für PDF/A-4f, das eine eingebettete Datei jedes Formats erlaubt. - Ein Teil-4-Dokument wird so identifiziert, wie die Norm es verlangt: nach Teilnummer und dem Jahr, in dem der Teil veröffentlicht wurde, ohne Konformitätsbuchstaben für reines PDF/A-4 und mit dem Buchstaben E oder F für die beiden Erweiterungen.
- Jede eingebettete Datei in einem Teil-4-Dokument benennt, wie sie sich zum Dokument verhält, wie die Teile 3 und 4 beide verlangen.
Geändert
- Die PDF/A-Prüfung erkennt Teil 4, beurteilt seine Dateien gegen PDF 2.0 statt gegen 1.7 und meldet eine Teil-4-Datei, die ihr Revisionsjahr nicht angibt.
Version 3.341.2
Behoben
- PDF/A-3- und PDF/UA-Dokumente benennen jetzt, wie sich jede eingebettete Datei zum Dokument verhält. Die Beziehung wurde nur für Anhänge nach dem ersten und niemals für den letzten geschrieben, sodass ein Dokument mit einem einzelnen Anhang — der gewöhnliche Fall — gar keine trug und an diesem Punkt die Validierung verfehlte.
- Der PDF/UA-Bericht übersieht die letzte eingebettete Datei nicht mehr, wenn er prüft, dass die Beziehung vorhanden ist.
Version 3.341.1
Behoben
- Die PDF/A-Prüfung liest jetzt die Norm-Kennzeichnung, die eine Datei trägt. Sie konnte es nicht, sodass jede Datei gegen Teil 1 geurteilt wurde, was immer sie deklarierte: Ein gültiges PDF/A-2- oder PDF/A-3-Dokument wurde als ohne Kennzeichnung und als von zu hoher Version gemeldet, was das Gegenteil der Wahrheit ist.
- Die Kennzeichnung wird gelesen, egal ob der Erzeuger sie als Element oder als Attribut schrieb. Beides ist gewöhnliches XMP, sodass das Akzeptieren nur einer Form Dateien anderer Erzeuger als ungekennzeichnet dastehen ließ.
Version 3.341.0
Behoben
- Vertikaler Text verwendet jetzt die vertikale Form jedes Zeichens. Klammern, das lange Vokalzeichen und die kleinen Kana werden anders gezeichnet, wenn Text die Seite hinabläuft, und eine Schrift benennt diese Formen selbst; bislang wurden die horizontalen gezeichnet, was Klammern quer über die Spalte liegen ließ, statt entlang ihr zu stehen.
- Die Formen stammen aus der vertikalen Funktion der Schrift selbst, sodass jeder Schnitt liefert, was sein Designer zeichnete, statt einer aus dem Zeichen geratenen Ersetzung.
GetVerticalTextHeightvermisst die Formen, die gezeichnet werden, sodass eine Spalte, deren Zeichen die Gestalt wechseln, weiterhin richtig vermessen wird.- Ein Schnitt, der keine vertikalen Formen benennt, wird exakt wie zuvor gezeichnet.
Version 3.340.0
Hinzugefügt
- Vertikales Schreiben für japanischen und chinesischen Text, der die Seite hinabgesetzt wird.
SetVerticalWritingModeschaltet es ein, und gewöhnlicheDrawText-Aufrufe laufen dann nach unten;GetVerticalWritingModemeldet es. Text vertikal zu setzen hieß zuvor, jedes Zeichen von Hand zu platzieren. - So gezeichneter Text läuft über eine Typ-0-Schrift im vertikalen Schreibmodus, die die eigenen vertikalen Metriken des Schnitts trägt, sodass ein Betrachter jedes Zeichen um die Distanz weiterrückt, die sein Designer vorsah, statt um einen gleichförmigen Schritt, und das Herauskopieren des Texts die ursprünglichen Zeichen zurückgibt.
- Ein Schnitt ohne eigene vertikale Metriken rückt ein Geviert je Zeichen weiter, was ein Betrachter auch mit der Voreinstellung täte.
GetVerticalTextHeightmeldet, wie weit eine Zeichenkette die Seite hinablaufen wird, bevor sie gezeichnet ist, undDrawVerticalTextzeichnet einen Lauf vertikal, ohne den Modus zu wechseln.- Die horizontalen und vertikalen Formen eines Schnitts werden getrennt gehalten, sodass eine Seite beide tragen kann, ohne dass eines das andere stört.
Version 3.339.0
Hinzugefügt
- Das automatische Tagging deckt jetzt Tabellen ab. Mit dem neuen Tabellen-Bit führt
DrawTableRowsdie Tabelle, ihre Zeilen und ihre Zellen in den Strukturbaum, sodass ein Betrachter sagen kann, in welcher Spalte ein Wert liegt, statt die ganze Tabelle als Lauf zusammenhangslosen Textes vorzulesen. SetTableHeaderRowCountbenennt, wie viele führende Zeilen Kopfzeilen sind, undGetTableHeaderRowCountmeldet es. Diese Zeilen werden als Kopfzellen mit Spalten-Bindung geschrieben, was einem Betrachter erlaubt, die Überschrift des Werts zu nennen, auf dem er steht.- Auf diese Weise benannte Kopfzeilen bleiben, wo sie sind. Sie oben auf jeder Seite zu wiederholen bleibt eine Layout-Entscheidung, die mit
DrawTaggedTableRowsgetroffen wird.
Geändert
AUTOTAG_DEFAULTdeckt jetzt neben Text, Seitenschmuck und Abbildungen auch Tabellen ab. Wer den Modus als Zahl übergibt, behält, was er immer bedeutete.
Version 3.338.0
Hinzugefügt
- Das automatische Tagging deckt jetzt Bilder ab. Mit dem neuen Abbildungs-Bit wird ein gezeichnetes Bild zu einer Abbildung im Strukturbaum, sodass ein Betrachter sie erreicht, statt schweigend über sie hinwegzugehen.
RegisterFiguregibt die Beschreibung mit, die das nächste Bild trägt. Ein Betrachter liest diese Beschreibung anstelle des Bildes, und das ist alles, was ein nicht sehender Betrachter daraus erhält.RegisterDecorationsagt, dass das nächste Bild eine Linie, ein Rahmen oder ein Hintergrund ohne Bedeutung ist, und es wird innerhalb eines Layout-Artefakts gezeichnet, sodass ein Betrachter es überspringt, statt ein Bild anzukündigen, das nichts sagt.- Beide Einstellungen werden an einem Bild verbraucht, sodass ein späteres nie eine Beschreibung erbt, die für ein früheres bestimmt war.
Geändert
AUTOTAG_DEFAULTdeckt jetzt neben Text und Seitenschmuck auch Abbildungen ab, sodass die Voreinstellung alle drei verlangt. Wer den Modus als Zahl übergibt, behält, was er immer bedeutete.- Eine mit
RegisterHeadingregistrierte Überschrift wartet jetzt auf den Text, den sie benennt. Ein dazwischen gezeichnetes Bild wird zur Abbildung und lässt die Überschrift dem folgenden Text, statt die Überschriftenebene selbst zu übernehmen.
Version 3.337.1
Behoben
- Ein Dokument, das allein mit
BeginTagaufgebaut wurde, wird jetzt als getagged markiert. Bislang trug so eine Datei einen vollständigen Strukturbaum, den kein Betrachter ansah, weil ein Betrachter ein Dokument als ungetagged betrachtet, sofern der Katalog nichts anderes sagt (ISO 32000-1 §14.7.1); unterstützende Technologie kündigte die Seite an, als hätte sie gar keine Struktur. - Die Markierung wird nur hinzugefügt, wenn tatsächlich ein Strukturbaum geschrieben wird, sodass ein Dokument ohne Tags weiterhin als ungetagged gemeldet wird und eine
SetMarkInfo-Einstellung des Aufrufers unangetastet bleibt.
Version 3.337.0
Hinzugefügt
- Automatisches Struktur-Tagging.
SetAutoTagModeschaltet einen Modus ein, in dem gewöhnliches Zeichnen seine eigene Struktur trägt: Text wird zu einem Absatz, direkt nachRegisterHeadinggezeichneter Text wird zu einer Überschrift dieser Ebene, und laufende Kopf- und Fußzeilen werden zu Artefakten, die ein Betrachter überspringt. Ein zugängliches Dokument zu erzeugen hieß zuvor, jeden Zeichnungsaufruf von Hand inBeginTagundEndTagzu hüllen - Das Einschalten des Modus markiert das Dokument zugleich als getagged, was ein Betrachter braucht, bevor er die Struktur überhaupt als vorhanden behandelt
- Das automatische Tagging tritt innerhalb eines von Hand geöffneten Tags zurück, sodass ein Teil des Dokuments vom Aufrufer beschrieben werden kann und der Rest der Bibliothek überlassen bleibt, ohne dass beide ineinander schachteln
- Nichts wird innerhalb eines Artefakts getagged, und leerer Text öffnet kein Element, sodass keines von beiden ein Strukturelement erzeugen kann, das ein Betrachter als leer ankündigen würde
Version 3.336.0
Hinzugefügt
- Textfluss, um eine Passage über mehrere Boxen, Spalten oder Seiten laufen zu lassen.
NewTextFlownimmt den Text entgegen, undDrawTextFlowfüllt eine Box mit so viel, wie hineinpasst, und lässt den Fluss am ersten Wort stehen, das er nicht nehmen konnte, sodass die nächste Box genau dort fortfährt MeasureTextFlowmeldet, wie viele Zeilen der verbleibende Text bei einer gegebenen Breite benötigt, ohne etwas zu zeichnen, sodass ein Layout bemessen werden kann, bevor es festgeschrieben wird- Eine Box ohne Raum für eine Zeile nimmt nichts und lässt den Fluss unberührt, sodass das Anbieten einer niemals Text verliert
SetTextFlowMinLineshält eine feste Anzahl Zeilen zusammen: Eine Box, die nur weniger fassen könnte, nimmt keine und schiebt sie weiter, statt eine einzelne Zeile am Fuß einer Spalte zu strandenGetTextFlowRemaining,TextFlowFinishedundRewindTextFlowmelden und setzen den Fortschritt zurück; das Zeichnen einer Box verwarf zuvor alles, was überlief, ohne zu erfahren, was verloren ging
Version 3.335.0
Hinzugefügt
- Automatisches Inhaltsverzeichnis. Überschriften werden mit
RegisterHeadingregistriert, während der Haupttext geschrieben wird, undDrawTOClayoutet sie danach: jeder Eintrag nach seiner Ebene eingerückt, eine Punktreihe hinüber zu einer rechtsbündigen Seitenzahl und die ganze Zeile verknüpft mit der Überschrift - Eine Überschrift merkt sich, wohin sie zeigt, statt welche Seitenzahl sie hatte, sodass das Einfügen der Inhaltsseite vor den fertigen Haupttext - der jede Seite neu nummeriert, auf die er sich bezieht - jeden Eintrag und jede Verknüpfung korrekt lässt
MeasureTOCmeldet, wie viele Seiten die Liste benötigt, bevor etwas gezeichnet wird, undDrawTOCgibt zurück, wie viele Einträge er platzierte, sodass eine Liste länger als eine Seite gezeichnet wird, indem man mit der bereits platzierten Anzahl erneut aufruftPopulateOutlineFromHeadingsverwandelt dieselben Überschriften in Dokument-Lesezeichen, nach Ebene geschachtelt- Ein Titel, der zu breit für den Raum ist, den seine Seitenzahl lässt, wird Zeichen für Zeichen gekürzt und erhält ein Auslassungszeichen, statt unter die Zahl laufen zu dürfen
Version 3.334.1
Behoben
- Die Auswahl einer Seite, nachdem davor Seiten eingefügt wurden, erreichte die Seite, die diese Nummer vor dem Einfügen trug, sodass das Zeichnen von Vorsatzseiten in ein bestehendes Dokument auf die falsche Haupttextseite schreiben konnte. Die Seitenauswahl folgt jetzt der neuen Nummerierung
Version 3.334.0
Hinzugefügt
GetSignatureModificationVerdictbeantwortet die Frage, die ein Betrachter an ein signiertes Dokument tatsächlich hat: Waren die nach dieser Signatur angehängten Aktualisierungen solche, die ihre Zertifizierungsstufe erlaubt? Eine zertifizierende Signatur trägt eine Berechtigungsstufe, und das Urteil prüft jede spätere Revision gegen sie, sodass das Hinzufügen von Validierungsmaterial als erlaubt liest, eine Seiten-Neuschreibung dagegen nichtGetSignatureEffectiveMDPLevelmeldet die geltende Stufe, undGetSignatureModificationDetailbenennt die Revision und die Art der Änderung hinter der Antwort- Das Urteil unterscheidet "es wurde nichts angehängt", "nur erlaubte Änderungen", "etwas nicht Erlaubtes", "konnte nicht bestimmt werden" und "die Signatur endet nicht auf einer Revisionsgrenze". Das Letzte bedeutet, dass Bytes innerhalb des Bereichs liegen, den die Signatur zu decken beansprucht
- Zweifel wird nie als Zustimmung gemeldet: eine Zertifizierung, deren Struktur nicht verifiziert werden konnte, eine Feldsperre, deren betroffene Felder sich nicht nachverfolgen lassen, eine Revision mit etwas Unlesbarem oder Bytes jenseits des signierten Bereichs, die keine erkennbare Revision bilden, melden alle als unbestimmt statt als erlaubt
Geändert
- Ein indirektes Array, für das nichts spricht, wird jetzt als unbestimmt gemeldet statt als Buchführung. Die Annotations- oder Inhaltsliste einer Seite ist ein Array, und eine davon neu zu schreiben verändert, was das Dokument zeigt, während jedes Dictionary unberührt bleibt
Version 3.333.0
Hinzugefügt
- Inspektion inkrementeller Revisionen. Eine Signatur deckt die Bytes der Revision ab, in die sie geschrieben wurde, und alles danach Angehängte ist eine separate Aktualisierung, deren Inhalt entscheidet, ob die Signatur noch für das Dokument in seinem jetzigen Stand steht.
GetDocumentRevisionCount,GetDocumentRevisionStartundGetDocumentRevisionEndlegen diese Revisionen aus, undGetSignatureRevisionIndexsagt, an welcher eine Signatur endet GetDocumentRevisionKindmeldet, was eine Aktualisierung bewirkt hat, als das weitreichendste der von ihr berührten Objekte: Buchführung, Validierungsmaterial, ein Dokumentenzeitstempel, eine Signatur, ein Formularfeld, eine Annotation oder Dokumentinhalt. Das Hinzufügen von Validierungsmaterial für die Langzeitvalidierung erscheint daher nicht mehr wie eine Bearbeitung des DokumentsGetDocumentRevisionChangeslistet jedes Objekt auf, das eine Aktualisierung hinzugefügt, geändert oder gelöscht hat, zusammen damit, was jedes ist und, bei einem geänderten Dictionary, welche Schlüssel tatsächlich abweichenGetDocumentRevisionsCompletemeldet, ob die gesamte Historie wiederherstellbar war. Eine Kette, die unterbrochen, zyklisch oder länger ist, als der Reader folgt, lässt die ältesten Aktualisierungen ungesehen, und die Zähler sind dann eine Untergrenze statt einer Antwort- Ein Objekt, dessen frühere Version nicht gelesen werden kann oder dessen Stream-Körper nie verglichen wurde, wird als unbestimmt statt als unbedenklich gemeldet: eine Aktualisierung, die eine Seite umschreibt, während ihr Dictionary unangetastet bleibt, wird nicht mit einem Neupacken verwechselt
Version 3.332.0
Hinzugefügt
ApplyPAdESLongTermValidationhebt ein bereits signiertes PDF in einem Aufruf auf PAdES-B-LT an. Es erstellt den Signaturgeber-Zertifikatspfad aus der Signatur selbst, sammelt OCSP- und CRL-Material für jedes Glied über die von den Zertifikaten genannten Adressen und schreibt die Zertifikate und Sperrdaten in einer einzigen inkrementellen Aktualisierung mit einem VRI-Eintrag für die Signatur in den Document Security Store.ApplyPAdESLongTermValidationToStreamschreibt das Ergebnis in einen Stream statt in eine Datei- Das Verhalten ist über eine
PADES_LTV_*-Optionsmaske konfigurierbar: ob der VRI-Eintrag geschrieben wird, ob OCSP-Responder angefragt werden, ob auf CRLs zurückgegriffen wird, ob Ausstelleradressen zur Vervollständigung des Pfads gefolgt wird und ob die Sperrprüfung für eine selbst ausgestellte Root übersprungen wird - Ein leerer Feldname verarbeitet jede Signatur zu einer Revision; ein benanntes Feld verarbeitet nur dieses eine
GetPAdESLTVCertificateCount,GetPAdESLTVCRLCount,GetPAdESLTVOCSPCountundGetPAdESLTVErrormelden, was der letzte Aufruf gesammelt hat und warum er vorzeitig abbrach, sodass ein Teilergebnis über einem unerreichbaren Responder sichtbar statt still ist- Material, das mit bereits Bereitgestelltem identisch ist, wird einmal geschrieben und von jeder Signatur, die es benötigt, referenziert, und eine Signatur ohne lesbares Zertifikat wird gemeldet, statt als erfolgreiche Anhebung ausgegeben zu werden
Version 3.331.0
Hinzugefügt
- Eine Signatur bringt ihren eigenen Zertifizierungspfad mit, sodass das Material, das ein Langzeitvalidierungsprofil benötigt, allein aus der signierten Datei gelesen werden kann.
GetSignatureSignerCertificateDER,GetSignatureEmbeddedCertificateCountundGetSignatureEmbeddedCertificateDERgeben die Zertifikate zurück, die eine Signatur einbettet, undGetSignatureCertificateChainLengthsowieGetSignatureCertificateChainDERordnen sie zu einem vom Signaturgeber ausgehenden Pfad GetSignatureContentsHashHexgibt den Schlüssel zurück, unter dem einAddPAdESDSSVRI-Eintrag angesprochen wird, berechnet aus der Signatur selbst- Das Signaturgeberzertifikat wird erkannt, gleich ob die Signatur es über Aussteller und Seriennummer oder über die Subject-Key-Identifikation benennt, und ein Pfad endet beim letzten Aussteller, den die Signatur tatsächlich enthält, anstatt vorzutäuschen, vollständig zu sein
Behoben
- Der DER-Reader lehnt eine deklarierte Elementlänge zurück, die größer als die Daten ist, anstatt einen fast-maximalen Wert seine Bereichsprüfung umschlingen zu lassen, und das Durchlaufen der Zertifikatserweiterungen liest nicht mehr über das Ende eines abgeschnittenen oder zu langen Zertifikats hinaus. Beides ist über ein präpariertes Dokument erreichbar, daher bleiben die obigen Zugriffsfunktionen bei nicht vertrauenswürdiger Eingabe sicher
- Die Signaturzugriffsfunktionen lesen das Dokument mit einem gemeinsamen Handle, sodass sie antworten, während ein Prüfprogramm oder Viewer die Datei bereits geöffnet hat, anstatt so zu versagen, als sei die Signatur nicht vorhanden
Version 3.330.0
Hinzugefügt
- OCSP-Statusanfragen:
BuildOCSPRequestkodiert eine RFC-6960-Anfrage für ein Zertifikat und dessen Aussteller,FetchOCSPResponsesendet sie an den Responder und gibt die Antwort zurück, undAddPAdESDSSOCSPFromCertificatesführt beide Schritte aus und legt das Ergebnis im Dokumentensicherheitsspeicher ab - Die Responder-Adresse ist optional: Wird sie ausgelassen, verwendet die Bibliothek die im Zertifikat selbst angegebene Adresse, sodass ein Aufrufer mit der Zertifikatskette keine weitere Konfiguration benötigt
- Ein Zertifikatspaar, das nicht tatsächlich zusammengehört, wird abgelehnt, bevor Daten gesendet werden, anstatt beim Responder die Antwort "unknown" auszulösen, die wie ein Widerrufsproblem wirken würde
- Nur eine erfolgreiche Antwort wird gespeichert; antwortet ein Responder mit
tryLateroderunauthorized, wird dies überGetTimeStampErrorgemeldet und nicht wie eine Statusantwort abgelegt
Version 3.329.0
Behoben
- Die Wiederverwendung eines Ergebnisarrays über mehrere aufeinanderfolgende Aufzählungsaufrufe hinweg verliert nicht mehr die Zeichenfolgen in Arrayelementen, die ein späterer Aufruf nicht befüllt. Dies betraf das dokumentierte Muster "einmal für die Anzahl aufrufen, Größe ändern, erneut aufrufen", wenn ein späterer Aufruf weniger Elemente zurückgab, als das Array aufnehmen konnte; der zurückgelassene Text sammelte sich während der gesamten Prozesslaufzeit an
- Zu den betroffenen Einstiegspunkten gehören
EnumPageContentStates,EnumPageContentStatesEx,EnumAttachments,EnumDocumentFonts,EnumPageElements,EnumNamedDestinations,EnumSignatures,EnumFormFields,GetFormValues,GetTextInAreaExsowie die Aufzählungsaufrufe für Textsuche, Formularfeldaktionen und Zertifikate
Geändert
- Der Ergebnisarray-Parameter dieser Aufrufe wird nun als
varstatt alsoutübergeben. Vorhandener Delphi- und C++Builder-Code lässt sich unverändert kompilieren und linken; der einzige sichtbare Unterschied besteht darin, dass Arrayelemente hinter der zurückgegebenen Anzahl ihren vorherigen Inhalt behalten, anstatt stillschweigend geleert zu werden
Version 3.328.0
Hinzugefügt
- Zertifikate teilen der Bibliothek nun mit, wo ihr Status geprüft werden kann:
GetCertificateOCSPURLs,GetCertificateIssuerURLsundGetCertificateCRLURLslesen die Adressen für Responder, Ausstellerzertifikat und CRL aus einem Zertifikat, sodass zum Zusammenstellen von Material für die Langzeitvalidierung nicht mehr bekannt sein muss, wo eine bestimmte Zertifizierungsstelle veröffentlicht FetchRevocationMateriallädt Material von diesen Adressen herunter;AddPAdESDSSCRLFromURLundAddPAdESDSSCertificateFromURLladen es in einem Schritt herunter und legen es im Dokumentensicherheitsspeicher ab- Adressen, die keine abrufbare Ressource bezeichnen, etwa ein Verzeichnisname oder eine E-Mail-Adresse, werden übersprungen, anstatt als herunterladbar gemeldet zu werden
Version 3.327.0
Hinzugefügt
- Integrierter RFC-3161-Zeitstempelclient:
SetTimeStampServerundSetTimeStampOptionskonfigurieren Zertifizierungsstelle, Hashalgorithmus, angeforderte Richtlinie, Nonce-Verwendung und Zeitüberschreitung;FetchTimeStampTokenliefert für einen beliebigen Digest ein TimeStampToken zurück ApplyPAdESSignatureTimeStampvervollständigt eine PAdES-B-T-Signatur in einem Aufruf: Die Funktion bildet den Hash des Signaturwerts, ruft das Token von der konfigurierten Zertifizierungsstelle ab und fügt es als Signaturzeitstempelattribut an. Damit ersetzt sie den bisherigen dreistufigen Austausch, den der Aufrufer selbst verbinden musste- Bei Verwendung einer Nonce wird geprüft, ob das Token denselben Wert zurückliefert, sodass eine wiederholte oder ausgetauschte Antwort abgelehnt und nicht in das Dokument eingebettet wird
GetTimeStampStatusundGetTimeStampErrormelden den eigenen Status und Fehlertext der Zertifizierungsstelle, sodass eine abgelehnte Anfrage ihre Ursache erklärt
Version 3.326.0
Hinzugefügt
- Der PDFium-Renderer schreibt nun dieselben Bildformate wie die GDI+- und Cairo-Renderer.
RenderPageToFile,RenderPageToStreamundRenderPagesToFilesakzeptieren nachSelectRenderer(3) BMP (Option 0), JPEG (1), PNG (5), GIF (6), TIFF (7) und G4-TIFF (10), statt ausschließlich BMP zu unterstützen - Die über
SetJPEGQualityfestgelegte JPEG-Qualität und die aktiven TIFF-Komprimierungseinstellungen gelten nun auch für die PDFium-Ausgabe, sodass ein Wechsel des Renderers die Kodierung der erzeugten Datei nicht mehr verändert
Behoben
- Die Anforderung von PNG oder einem anderen Nicht-BMP-Format beim PDFium-Renderer gab bisher 0 zurück und hinterließ eine leere Datei. Anwendungen mit Renderer-Auswahl erzeugten dadurch unbemerkt unlesbare Ausgaben, sobald PDFium ausgewählt war
- Wird vom PDFium-Renderer ein nicht unterstütztes Metadateiformat angefordert (WMF, EMF, EPS, EMF+, HTML5), meldet
LastRenderErrornun die verfügbaren Formate, anstatt BMP als einzige Möglichkeit zu nennen
Version 3.324.0
Geändert
- Der PDFium-Renderer übergibt das Dokument nun über eine Streaming-Datenquelle an die Engine, statt einen einzigen speicherresidenten Puffer zu verwenden. Rendering und Drucken serialisierten das Dokument zuvor und kopierten es anschließend erneut in eine Zeichenfolge, sodass jede Seite das Doppelte der Dokumentgröße im Speicher beanspruchte; diese Kopie entfällt, und PDFium liest nur die benötigten Blöcke
- Beim Rendern eines Seitenbereichs in Dateien wird das Dokument nun einmal für den gesamten Stapel statt einmal pro Seite analysiert, sodass bei einem langen Bereich nicht mehr für jedes geschriebene Bild die gesamte Datei erneut gelesen wird
- Ältere PDFium-Versionen, die den Streaming-Einstiegspunkt nicht exportieren, funktionieren über den speicherinternen Pfad unverändert weiter
Behoben
- Der Renderer-Smoke-Test suchte die optionalen PDFium- und Cairo-Bibliotheken ein Verzeichnis zu hoch und übersprang beide Engines stillschweigend; nun findet er sie und prüft die tatsächlichen Renderingpfade
Version 3.323.0
Hinzugefügt
CreateValidationReportundSaveValidationReporterzeugen einen strukturierten PDF/A- und PDF/UA-1-Validierungsbericht in XML oder JSON. Jeder Befund trägt die Regel-ID, den Standard, der sie besitzt, einen kurzen Regelnamen, die ISO-Klausel, die sie durchsetzt, einen Schweregrad und die Anzahl der betroffenen Objekte, und der Report schließt mit pro-Standard- und Dokumentebenen-Pass/Fail-Statistiken- Ein Standard, der nicht angefordert wurde, wird als
not-checkedgemeldet und nicht als stiller Bestanden-Eintrag, sodass ein teilweiser Lauf nicht für eine fehlerfreie Bescheinigung gehalten werden kann - Build-Pipelines können nun auf eine Regel-ID oder eine ISO-Klausel filtern statt Teilstrings in Prosa zu vergleichen: die Preflight-Report-Familie erzeugt zuerst einen menschenlesbaren Report und wandelt diesen Text in JSON, HTML oder CSV um, während der Validierungsreport aus der rohen Prüfausgabe zusammengestellt wird und die maschinenlesbaren Felder intakt hält
Version 3.322.0
Hinzugefügt
- Die Referenz dokumentiert nun die vier extern deklarierten öffentlichen Typen, die auf der
TPDFlib-Oberfläche verwendet werden und zuvor keine eigene Seite hatten:TPDFlibProgressEvent,TPDFlibLogger,TPDFlibCertificateInfoundTPDFlibWatermarkBase, womit die Abdeckung öffentlicher Ereignis-, Logger-, Enumerations-Ergebnis- und Wasserzeichen-Typen vervollständigt wird
Version 3.321.0
Hinzugefügt
CheckDocumentPolicywertet deklarative Hausregeln wieFonts.NotEmbedded = 0,Security.Encrypted = nooderDocument.Pages <= 500gegen das Dokument aus und meldet jede Regel als bestanden oder fehlgeschlagen mit dem tatsächlichen Wert, was eine Aufnahme-Schranke für Verlage, Archive und Druckereien zu Konfiguration statt handgeschriebenem Inspektionscode macht
Version 3.320.1
Behoben
- Das Zeichnen von Text in einem PDF/A-Modus ohne vorheriges Laden einer Schriftart führt nicht mehr zu einem Fehler: PDF/A fordert, dass jedes Schriftprogramm eingebettet ist, daher wurde der implizite Shortcut zu einer eingebauten Schriftart verweigert und keine Schriftart ausgewählt, und
DrawTextund die anderen Textaufrufe stürzten ab statt zu zeichnen - Der implizite Schriftartpfad löst nun eine echte einbettbare Schriftart auf, während ein PDF/A-Modus aktiv ist, sodass Text, der ohne einen expliziten
AddTrueTypeFont-Aufruf gezeichnet wird, eingebettet wird und konform bleibt; ein direkterAddStandardFont-Aufruf wird unter PDF/A weiterhin verweigert - Auf Rechnern, auf denen keine einbettbare Schriftart aufgelöst werden kann, fällt das Zeichnen auf die eingebauten Metriken zurück statt abzustürzen und meldet die Konformitätslücke über
LastErrorCode605, sodass die Datei abgefangen werden kann, bevor sie als konform veröffentlicht wird
Version 3.320.0
Hinzugefügt
GetDocumentFeatureReportgibt in einem Aufruf einen strukturierten Eigenschafts-Report zurück — Dokumentmetadaten, Seiten- und Objektanzahlen, Verschlüsselungsstatus, Schriftart- und Bildbestände, Tagging und Inhaltsverzeichnisse, Formularfelder, Signaturen, Anhänge und die Byte-Aufschlüsselung nach Kategorie — und ersetzt die guten zwölf separaten Abfragen, die ein Katalogisierungs- oder Aufnahme-Pipeline zuvor zusammenstellen musste
Version 3.319.0
Hinzugefügt
SetCollectionView,AddCollectionField,SetCollectionSortundSetCollectionItemValuebauen PDF-Portfolios auf den vorhandenen Anhängen auf, sodass eine Reihe eingebetteter Dateien als durchsuchbares Paket mit eigenen Spalten, Sortierreihenfolge und Pro-Datei-Werten präsentiert wird statt als einfache AnhangslisteGetCollectionViewundGetCollectionFieldCountmelden den Präsentationsmodus und die Anzahl der deklarierten Spalten eines geladenen Portfolios
Version 3.318.1
Behoben
- Die Textextraktionsoption 12 (rotierten Text ignorieren) verwirft nun rotierte Textfolgen, egal wohin sie drehen: eine Vierteldrehung im Uhrzeigersinn und eine Vierteldrehung gegen den Uhrzeigersinn wurden früher unterschiedlich behandelt, sodass seitliche Randnotizen in einer Richtung verworfen und in der anderen zurückgegeben wurden
- Die gleiche Option behält schräg gestellten Text, der nur geschert ist, etwa einen synthetischen Kursivdruck, und die Toleranz skaliert nun mit der Textgröße und der Seitentransformation, sodass große schräge Überschriften nicht länger verworfen werden, als wären sie rotiert
Version 3.318.0
Hinzugefügt
DecodeAllStreamsexpandiert die komprimierten Streams eines Dokuments an Ort und Stelle, sodass das Speichern eine Kopie erzeugt, deren Inhalts-Streams, Metadaten und Struktur direkt von Diff-Werkzeugen, forensischer Prüfung und Support-Workflows gelesen werden können; Bilder, Prädiktions-Streams und Querverweis-Streams behalten ihre Kodierung, und Objekt-Streams werden zuerst materialisiert, sodass nichts verloren geht
Version 3.317.0
Hinzugefügt
SetTrappedundGetTrappeddeklarieren und lesen den Dokument-Überfüllzustand, den PDF/X erfordert, geschrieben als der/Trapped-Name, den die Spezifikation verlangt, statt als TextzeichenketteSetOutputIntentSubtypeundGetOutputIntentSubtypestufen die Ausgabeabsicht neu ein, sodass ein geladenes Farbprofil eineGTS_PDFX-Druckbedingung beschreiben kann statt derGTS_PDFA1-Archivierungsbedingung, die die PDF/A-Modi erzeugen
Version 3.316.0
Hinzugefügt
SetEncryptEmbeddedFilesOnlyundGetEncryptEmbeddedFilesOnlybeschränken die AES-Verschlüsselung auf eingebettete Dateien: das Dokument öffnet und rendert in jedem Reader ohne Passwortabfrage, während seine Anhänge verschlüsselt bleiben, die Standardanordnung für Rechnungen, Patientenakten und Akten, deren Deckblätter öffentlich sind, deren Nutzdaten aber nicht
Version 3.315.0
Hinzugefügt
- Die Textextraktionsoption 18 dreht Textfolgen, die bei 90, 180 oder 270 Grad gezeichnet wurden, in den horizontalen Leserahmen und gruppiert jede Vierteldrehung separat, sodass rotierte Randnotizen, Tabellenköpfe und Diagramm-Achsenbeschriftungen als lesbare Zeilen extrahiert werden, anstatt sich mit dem aufrechten Text zu überlappen oder verworfen zu werden
Behoben
DASetTextExtractionOptionsakzeptiert Option 16 (Trennstrichentfernung) und Option 17 (Zeichenabstand-Worttrennung), statt sie abzuweisen, und der Direktzugriffs-Extraktionspfad leitet nun die Optionen 15, 16 und 17 an den Extraktor weiter, sodass Unterstrich-Regel-Entfernung, Trennstrichentfernung und Zeichenabstand-Trennung für Datei-Handles genauso gelten wie für ein geladenes Dokument
Version 3.314.0
Hinzugefügt
GetFontHasToUnicodemeldet, ob die ausgewählte Schriftart eine Unicode-Abbildung enthält, und der Schriftartbestand erhält ein passendes Pro-Schriftart-FeldHasToUnicodesowie eineNoToUnicodeCount-Zusammenfassung, sodass Dokumente vor der Verarbeitung auf extraktionssichere und PDF/A-*u- oder PDF/UA-konvertierbare Schriftarten geprüft werden können
Version 3.313.0
Hinzugefügt
SetPDFAModeerhält den Modus 8 für PDF/A-2u (ISO 19005-2 Level U), die Konformitätsstufe, die Unicode-Textabbildungen deklariert, ohne eingebettete Dateien zuzulassen, und damit die PDF/A-2-Familie neben den vorhandenen 2b- und 2a-Modi vervollständigt
Version 3.312.0
Hinzugefügt
GetObjectByPathundGetObjectByPathCountlesen jeden Knoten des Objektbaums über Pfadausdrücke wieRoot/Pages/Kids[0]/MediaBox[2]oderpages[0]/Type— Typen, Skalarwerte, serialisierte Formen und Elementanzahlen in einem Aufruf, was handgeschriebenes Objekt-Walking für Metadaten-Prüfungen, Konformitäts-Stichproben und Support-Diagnosen ersetzt
Version 3.311.0
Hinzugefügt
SetBlackPointCompensationdeklariert die Schwarzpunktkompensation (ON, OFF oder Default) für das nachfolgende Zeichnen über den PDF-2.0-/UseBlackPtComp-Grafikzustand, wodurch Druckvorstufen- und Proofing-Ausgaben Dunkelton-ICC-Konvertierungen festlegen können, die bisher nur beim Betrachter bekannt waren; die Dokumentversion wird automatisch angehoben und PDF/A-Modi weisen den Zustand zurück
Version 3.310.0
Hinzugefügt
SetCompressionLevelundGetCompressionLevellegen die Deflate-Stufe für jede Komprimierung offen, die die Bibliothek durchführt: 0 behält das Standard-SIMD-beschleunigte Modul, 1 bevorzugt Durchsatz und 9 quetscht Archive am kleinstenRecompressStreamsdeflatiert jeden einfachen FlateDecode-Stream des ausgewählten Dokuments auf der aktuellen Stufe neu und behält die kleinere Kodierung pro Stream, wodurch Dokumente, die ursprünglich mit einer schnellen Komprimierungseinstellung geschrieben wurden, verkleinert werden, ohne ihren Inhalt zu berühren
Version 3.309.0
Hinzugefügt
SetObjectStreamModeundGetObjectStreamModefügen eine drei-zuständige Objekt-Stream-Steuerung hinzu: deaktivieren, erzeugen (Standard) oder erhalten, wobei erhalten die ursprüngliche komprimierte Gruppierung der geladenen Datei's beibehält und die Container wörtlich schreibt, was Umwandlungen bestehender PDF-1.5+-Dateien günstiger macht, weil nichts ausgepackt oder neu gruppiert wird
Geändert
- Im Erhalten-Modus werden Elemente, die seit dem Laden bearbeitet wurden, zu Objekten der obersten Ebene befördert, damit ihre Änderungen gespeichert werden, und jedes verbleibende komprimierte Element wählt automatisch die binäre Querverweis-Stream-Form
Version 3.308.0
Hinzugefügt
CheckDocumentStructureführt eine ein-Aufruf-strukturelle Gesundheitsprüfung durch: jedes Objekt und jeder Stream wird durch seinen Dekoder gezwungen, einfache Flate-Streams werden streng gegen die zlib-Endmarkierung verifiziert, sodass abgeschnittene Daten erkannt werden, und der Report kennzeichnet fehlende Trailer, nicht auflösbare Kataloge und Seiten, nicht unterstützte Verschlüsselungs-Handler und per Byte-Scan reparierte Dateien mit Pro-Objekt-Befunden und einer Zusammenfassungszeile
Version 3.307.0
Behoben
- Beschädigte Dokumente, die Querverweis-Streams verwenden, werden nun erfolgreich repariert: die Roh-Rekonstruktion stellt die Mitglieder komprimierter Objekt-Streams wieder her und, wenn nirgendwo in der Datei ein Trailer-Schlüsselwort existiert, synthetisiert den Trailer aus dem neuesten erreichbaren Dokumentkatalog, sodass eine defekte startxref-Position solche Dateien nicht mehr unöffbar macht
Version 3.306.0
Hinzugefügt
ExportDocumentDataschreibt die Dokument-Informations-Schlüssel, den gesamten Lesezeichen-Baum und die Seitenbeschriftungs-Bereiche als bearbeitbaren Klartext im klassischen dump_data-ZeilenformatImportDocumentDatawendet das gleiche Format zurück an — Informations-Schlüssel werden aktualisiert, der Lesezeichen-Baum wird mit Verschachtelungsebenen und Zielseiten neu aufgebaut und Seitenbeschriftungs-Bereiche werden ersetzt — und ermöglicht Massen-Lesezeichen-Bearbeitung und Metadaten-Migration zwischen Dokumenten in jeweils einem Aufruf in jede Richtung
Version 3.305.0
Hinzugefügt
AuditDocumentSpacebricht die Byte-Nutzung des Dokuments's nach Kategorie auf — Bilder, Schriftprogramme und Wörterbücher, Inhalts-Streams, Form-XObjects, Objekt-Streams, eingebettete Dateien, Metadaten, Strukturbaum, Anmerkungen, Seitenbaum und sonstiges — mit Objektanzahlen, Byte-Summen und Prozenten, und beantwortet, warum eine Datei so groß ist, wie sie ist, und welche Optimierung sich am meisten auszahlt
Version 3.304.0
Hinzugefügt
StructTreeItemCount,GetStructTreeItemTextundGetStructTreeItemIntPropertylesen den Strukturbaum eines getaggten Dokuments als abgeflachte Tiefenfolge-Elementliste — Elementtypen (roh und rollenabgebildet), alternativer und tatsächlicher Text, Sprache, Titel, Marked-Content-IDs, Seitenzahlen und Eltern/Kind-Beziehungen
Geändert
- Der Strukturbaum-Leser schützt vor beschädigten Dokumenten: Referenz-Zyklen, außerhalb des Bereichs liegende Objektnummern und Bäume, die tiefer als 64 Ebenen verschachtelt sind, werden abgeschnitten, statt zu schleifen
Version 3.303.1
Behoben
- Durchscheinende Unterlage-Stempel, die von
StampTextundStampImageerzeugt werden, übertragen ihre Deckkraft nicht mehr in den ursprünglichen Seiteninhalt — der Transparenz-Zustand ist nun auf den Stempel selbst beschränkt, sodass die Seite ihre volle Deckkraft behält
Version 3.303.0
Hinzugefügt
OverlayDocumentPagesstempelt die Seiten eines anderen geöffneten Dokuments auf die Seiten des ausgewählten Dokuments, eine Quellseite pro Zielseite, über oder unter dem vorhandenen Inhalt — Briefkopfpapier, durchgehende Seitenhintergründe und gescannte Formularvorlagen in einem Aufruf- Die Quell-Erschöpfung ist konfigurierbar: anhalten, durch die Quellseiten kreisen oder die letzte Quellseite wiederholt fortsetzen; eine weitere Option verhindert, dass der Stempel über seine natürliche Größe hinaus vergrößert wird
Geändert
- Dokument-Stempel werden an die CropBox der Zielseite's angepasst und aufrecht auf Seiten platziert, die einen
/Rotate-Eintrag tragen, und jede Quellseite wird einmal als gemeinsames Form-XObject importiert, sodass wiederholte Vorlagen niemals ihre Ressourcen duplizieren
Version 3.302.0
Behoben
- AES-256-Passwörter werden nun vor dem Hashen mit SASLprep (RFC 4013) verarbeitet, sodass Passwörter, die Nicht-ASCII-Leerzeichen, bedingte Bindestriche, Kompatibilitätszeichen oder Kombinationsfolgen enthalten, in Acrobat und anderen konformen Readern korrekt geöffnet werden
- Das Öffnen von AES-256-Dokumenten versucht zuerst das vorbereitete Standard-Passwort und fällt auf die ältere Byte-Form zurück, sodass Dateien, die von früheren Versionen mit Nicht-ASCII-Passwörtern geschrieben wurden, weiterhin geöffnet werden
Hinzugefügt
- Der Fehlercode 604 meldet ein AES-256-Passwort, das von SASLprep zurückgewiesen wurde, weil es verbotene Codepunkte enthält oder die bidirektionalen Regeln verletzt
Version 3.301.0
Hinzugefügt
SplitDocumentToFileszerlegt das ausgewählte Dokument in einen Stapel von Ausgabedateien mit jeweils einer festen Anzahl von Seiten, unter Verwendung eines%p-Dateinamen-Platzhalters
Geändert
- Die Stapelaufteilung parst das Quelldokument einmal und kopiert jeden Block aus derselben Speicher-internen Struktur und ersetzt das wiederholte vollständige Neu-Parsen, das eine Schleife über
ExtractFilePagesfür jeden Bereich durchführt
Version 3.300.0
Hinzugefügt
CollateDocumentsführt Seiten aus mehreren geöffneten Dokumenten in Rotation in das ausgewählte Dokument zusammen und nimmt eine konfigurierbare Anzahl von Seiten von jeder Quelle pro Runde (A1, B1, A2, B2, …)CollateDocumentsExakzeptiert eine Pro-Quelle-Seitenbereichsliste, in der absteigende Bereiche wie3-1eine Quelle umkehren, sodass Vorwärts- und umgekehrte Rückseiten-Scanner-Durchläufe in einem Aufruf in Lesereihenfolge zusammengeführt werden
Geändert
- Zusammengeführte Kollationen importieren jede Quelle über eine einzige Objekt-Abbildung und verschachteln per Seiten-Neuanordnung, sodass Schriftarten und Bilder, die innerhalb einer Quelle geteilt werden, unabhängig von der Gruppengröße nur einmal geschrieben werden
Version 3.299.0
Hinzugefügt
SetDeterministicDocumentIDundGetDeterministicDocumentIDschalten die Datei-ID im Trailer auf einen reproduzierbaren Wert um, sodass identische Eingaben identische Ausgabe-Bytes für Build-Caching, inhaltsadressierbaren Speicher und Byte-Ebenen-Regressionsvergleich erzeugenSetDocumentIDSeedliefert einen expliziten Seed für die reproduzierbare Datei-ID; ohne einen Seed wird die ID aus den Dokumentmetadaten, dem Versions-Header und der Seitenanzahl abgeleitet
Geändert
- Reproduzierbare Datei-IDs werden nur bei vollständigen Speicherungen aktualisiert; inkrementelle Aktualisierungen und verschlüsselte Dokumente behalten ihre vorhandene ID, sodass Signaturen und passwortgeschützte Dateien weiterhin korrekt geöffnet werden
Version 3.298.0
Hinzugefügt
AddLinkToArticleThreadundSetOutlineArticleThreadverbinden Seiten-Hotspots und Gliederungen mit einem Artikel-Thread oder einer Bead über Standard-Thread-AktionenAddActionNextArticleThreadundPDF_ACTION_BUILDER_THREADfügen Thread-Aktionen zu verketteten, Formular-, Seiten- und Dokumentaktions-Workflows hinzu
Geändert
- Thread-Aktionsziele verwenden stabile indirekte Thread- und Bead-Referenzen und lehnen ungültige Indizes ab, ohne den Zielcontainer zu ändern
- Formularfeld-Aktionskonstruktoren lehnen zusätzliche Aktionen ab, während der PDF/A-Modus aktiv ist, und wahren damit das PDF/A-Verbot von Feld- und Widget-
/AA-Wörterbüchern
Version 3.297.0
Hinzugefügt
- Die
DLFlat-DLL-Referenz dokumentiert nun jedenA-Suffix-ANSI-(char)-Einstiegspunkt und fügt 353 Referenzseiten hinzu, die ihren Unicode-Gegenstücken mit exaktenPAnsiCharDelphi- undconst char *C-Signaturen entsprechen BufferUtilities,DirectAccessFunctionalityundMiscellaneousFunctionswurden als saubere Funktionsgruppen-Indexseiten neu aufgebaut, gesteuert durch das gemeinsame Kategorie-Schema, wobei fehlerhafte Auszeichnung, falsch beschriftete Abschnitte und fehlende Chips korrigiert wurden- Der Navigationsindex und der gemeinsame Suchindex erfassen nun die gesamte DLL-Oberfläche für sowohl Unicode- als auch ANSI-Aufrufer
Behoben
- Der veraltete
SetLogger-Eintrag wurde entfernt, da er kein entsprechendes Symbol im Quelltext besaß; die dokumentierte Eigenschaft istLogger
Version 3.296.0
Hinzugefügt
AddAlternateImage,AlternateImageCount,GetAlternateImageInfoundRemoveAlternateImagebieten typisierte Erstellung und Inspektion von Anzeige- und Druckbildvarianten- Alternativbilder können mit einer Optional-Content-Gruppe oder einer Membership-Dictionary verknüpft werden, während eine Variante pro Basisbild als Druckstandard ausgewählt werden kann
Geändert
- Der integrierte Renderer wählt nun Optional-Content-Alternativbilder aus, wenn ein Basisbild ausgeblendet ist, und berücksichtigt den Druckstandard bei Drucker-Zielen
FindImagesregistriert nun Alternativbild-XObjects, die aus Seitenressourcen erreichbar sind, sodass importierte Varianten verwendbare Bild-Handles erhalten
Version 3.295.0
Hinzugefügt
AddArticleThreaderstellt standardkonforme Artikelnavigation mit typisierten Metadaten, geordneten Seitenrechtecken, zirkulären Bead-Verknüpfungen und seitenweisen Bead-ArraysArticleThreadCount,GetArticleThreadInfoundGetArticleThreadBeadinspizieren erstellte oder importierte Artikel-Threads mit begrenzter Traversierung beschädigter Verknüpfungszyklen
Geändert
DeletePagesentfernt nun Artikel-Threads, die alle Beads verlieren, und repariert die zirkulären Verknüpfungen verbleibender Threads- Die Nachverfolgung gelöschter Seiten behält nun stabile indirekte Seitenreferenzen bei, sodass die Outline- und Artikel-Bereinigung beim Bewegen des Seitenstruktur-Cursors nicht abweichen kann
Version 3.294.0
Hinzugefügt
SearchTextBatchdurchsucht mehrere Textabfragen, während jede Seitenextraktion resident ist, und gibt bei jedem Treffer den nullbasierten Ursprungs-Abfrageindex zurückSearchTextBatchEachbietet dieselbe einstufige Suche über einen Streaming-Callback mit Fortschrittsanzeige und Abbruchmöglichkeit
Geändert
- Einzelabfrage- und Batch-Textsuche nutzen nun einen gemeinsamen Matching-Kern und bewahren die Semantik für Groß-/Kleinschreibung, ganze Wörter und Seitenbereiche, während wiederholte Seitenextraktion, Text-Folding und Treffergeometrie vermieden werden
Version 3.293.1
Behoben
- Die Mesh-Shading-Rasterisierung lässt sich nun auf allen Delphi-Versionen kompilieren und behebt
E2089 Invalid typecastbei Real-zu-Fließkomma-Umwandlungen im GDI+-Painter - Das parallele Batch-Seitenrendering lässt sich nun auf Delphi XE5 und XE6 kompilieren, wo
System.Threadingnicht verfügbar ist; ältere Toolchains greifen wie unter Nicht-Windows auf den seriellen Renderpfad zurück - Die Abfrage der Druckerfähigkeiten löst auf älteren Delphi-Versionen keinen Fehler wegen inkompatibler Typen mehr aus, indem der
SetPrinter-Aufruf an den restlichen Druckcode angeglichen wurde - Die Zertifikatsspeicher-Enumeration lässt sich nun unter RAD Studio 10.3 Rio erstellen, das zuvor mit einem internen Compilerfehler beim Optimieren der Enumerationsroutine abbrach
Version 3.293.0
Hinzugefügt
- Optional-Content-Membership-Dictionaries lassen sich nun mit den Kompatibilitätsrichtlinien
AnyOn,AllOn,AnyOffundAllOfferstellen, aktualisieren und enumerieren - Verschachtelte PDF 1.6-
/VE-Sichtbarkeitsausdrücke unterstützenAnd,OrundNotüber eine kompakte Präfix-Darstellung, die von Delphi und C++Builder gemeinsam genutzt wird
Geändert
- Optional-Content-Scopes, Content-Streams, erfasste Seiten, Bilder, Formularfelder und Annotationen akzeptieren nun wahlweise ein Gruppen-Handle oder ein Membership-Handle
- Das Rendering wertet zuerst gültige
/VE-Ausdrücke aus und greift bei fehlerhaften oder nicht unterstützten Ausdrücken auf/OCGsplus/Pzurück
Behoben
- Verschachtelter Optional-Content kann Inhalt nicht mehr sichtbar machen, wenn eine umschließende Gruppe oder Membership ausgeblendet ist
- Membership-Dictionaries ohne wirksame Optional-Content-Gruppen lassen die Sichtbarkeit nun unverändert, wie von der PDF-Spezifikation gefordert
Version 3.292.0
Hinzugefügt
EnumAttachmentsmeldet nun Erstellungs- und Änderungsdaten, hexadezimale Prüfsummen, Associated-File-Beziehungen und Dateispezifikations-Objektnummern für sowohl Dokument- als auch AnnotationsanhängeValidateAttachmentChecksumprüft eine Anhang-Nutzlast bei Bedarf gegen ihre gespeicherte Prüfsumme, während neu eingebettete Dateien nun automatisch Prüfsummen-Metadaten erhalten
Behoben
SetEmbeddedFileAFRelationshipakzeptiert nun dieselben 1-basierten Embedded-File-Indizes wie der restliche Anhang-API, einschließlich Dokumenten mit einem einzelnen Anhang
Version 3.291.0
Hinzugefügt
DeduplicateResourceskonsolidiert nun exakt duplizierte Image-, Form-, Pattern-, Shading-, Function-, ICC-Profile-, Font-Program-, CMap-, Type 3 CharProc-, Embedded-File-, Metadata- und PostScript-Streams über ein geladenes Dokument hinweg- Die Ressourcen-Deduplizierung bietet unabhängige Typ-Flags, Dry-Run-Analyse, optionale Orphan-Sammlung sowie detaillierte Hashing-, Vergleichs-, Nutzlast-, Referenz- und Pro-Kategorie-Statistiken
Geändert
- Die Duplikaterkennung kanonisiert vollständige Stream-Dictionaries unabhängig von der Schlüsselreihenfolge, hasht jede Kandidaten-Nutzlast einmal mit SHA-256 und bestätigt passende Buckets Byte für Byte, bevor Referenzen umgeleitet werden
- Exakte-Äquivalenz-Gruppen behalten die niedrigste Objektnummer und -generation für deterministische Ausgabe bei, während fehlerhafte Direct-Object-Zyklen und semantische Dictionary-Unterschiede unzusammengeführt bleiben
Version 3.290.0
Geändert
PurgeUnusedResourcesberechnet nun einen transitiven Abhängigkeits-Abschluss über Tiling-Patterns, Type 3-Glyphen, Annotations-Appearance-States, ExtGState-Soft-Mask-Gruppen, Bilder, Shadings und verschachtelte Farbräume- Die Standard-Bereinigungsoptionen aktivieren nun Pattern-, Type 3-, Appearance-, Soft-Mask- und Bild-Abhängigkeitsanalyse mit unabhängigen Flags für Aufrufer, die einen engeren Scan benötigen
- Verschachtelte Content-Programme und Abhängigkeitseinträge werden zwischengespeichert, gemeinsam genutzte Ressourcen-Scopes werden vor dem Beschneiden privatisiert und fehlerhafte Zyklen werden durch Active-Stream- und Tiefen-Wächter begrenzt
Behoben
- Seitenressourcen, die nur über Bildfarbräume, Indexed-Basen, Separation- oder DeviceN-Alternativen, Pattern-Underlying-Spaces, ICCBased-Alternativen oder Shading-Dictionaries genutzt werden, werden nicht mehr als ungenutzt entfernt
- Ressourcen, die nur von Type-3-CharProcs, Tiling-Pattern-Zellen, Annotations-Appearances oder Transparenz-Soft-Mask-Gruppen genutzt werden, werden nicht mehr aus ihrem eigenen oder geerbten Scope entfernt
Version 3.289.0
Hinzugefügt
PurgeUnusedResourcesentfernt nun benannte Seitenressourcen, die von ausgewählten Content-Layern nicht referenziert werden, und kann detaillierte Pro-Kategorie-Statistiken zurückgeben- Die Ressourcenbereinigung unterstützt nun Seitenbereiche, Dry-Run-Reporting, Fortschritt und Abbruch, rekursive Form-XObject-Analyse, Entfernung veralteter ProcSets und optionale Orphan-Object-Sammlung
Geändert
- Die Ressourcenanalyse folgt nun der PDF-Namens-Groß-/Kleinschreibung, geerbten Form-Ressourcen, benutzerdefinierten Inline-Image-Farbräumen und allen sieben Standard-Ressourcenkategorien
- Wiederholte Form-Programme werden zwischengespeichert, genutzte Ressourcen-Sets verwenden sortierte Nachschlagevorgänge und Dictionary-Einträge werden in absteigender Reihenfolge entfernt, für vorhersagbare Performance bei großen Dokumenten
Behoben
- Das Entfernen von Dictionary-Einträgen invalidiert nun Schlüsselindizes großer Dictionaries, sodass spätere Nachschlagevorgänge keine veralteten Einträge zurückgeben können
- Fehlerhafte Streams und unbekannte Operatoren bewahren standardmäßig ihren vollständigen Ressourcen-Scope, während gemeinsam genutzte oder geerbte Ressourcen-Dictionaries vor der Mutation geklont werden
Version 3.288.0
Hinzugefügt
- Digitale Signaturen können nun vollständige DocMDP-Zertifizierungs- und FieldMDP-Field-Lock-Strukturen ausgeben, mit strukturellen Berechtigungsberichten für jede ausgewählte Signatur
- RFC-3161-Dokument-Zeitstempel, Signatur-Zeitstempel, PAdES-B-T-Token-Injektion, Zertifikatsketten-Validierung, OCSP-Evidenz und DSS- oder VRI-Validierungsmaterial verfügen nun über vollständige Erstellungs- und Verifizierungs-Workflows
- RichMedia-Annotationen unterstützen nun eingebettete Assets, Aktivierungs- und Deaktivierungseinstellungen, Poster-Appearances, Enumeration, Extraktion und Entfernung
- Das Poster-Drucken unterstützt nun Vektor-Seiten-Ausschießen, Überdeckungs- und Schnittmarken, Hard-Margin-bewusste Platzierung und wiederverwendbare Tile-Pläne
- Getaggte Tabellen geben nun semantische Table-, TR-, TH- und TD-Struktur mit stabilen Bezeichnern, Header-Zuordnungen, Spans, wiederholten Headern und als Artefakt markierter Dekoration aus
- Der Viewer bietet nun tastaturzugängliche AcroForm-Bearbeitung für Text-, Choice-, Check-Box-, Radio- und Push-Button-Felder und leitet dabei Aktionen an die Host-Anwendung weiter
Geändert
- Type-1-funktionsbasierte und Type-4-bis-7-Mesh-Shadings rendern nun durch native Funktionsauswertung und begrenzte Mesh-Tesselierung
- Das ICCBased-Farbrendering teilt nun zwischengespeicherte Transformationen über Bilder und Shadings hinweg und bewahrt dabei das kalibrierte Farbraum-Verhalten
- Inkrementelle Speichervorgänge erstellen nun Object-Streams und Cross-Reference-Streams konsistent neu, und ausgewählte Signaturen werden gegen ihre eigene signierte Revision verifiziert
Behoben
- SHA-1-Signatur-Zeitstellanforderungen hashen nun den Signaturwert des Signierers mit SHA-1, statt auf SHA-256 zurückzugreifen
- Abgelehnte Field-Lock-Ersetzungen verwerfen nicht mehr eine zuvor gültige Field-Lock-Konfiguration
- Radio-Widgets mit doppelten Appearance-State-Namen bewahren nun das ausgewählte Widget und lassen Geschwister-Widgets aus
Version 3.287.0
Geändert
- Inline-Image-Dictionaries folgen nun PDF-Kommentar-, Trennzeichen-, Literal-, Hexadezimal-, Array- und Dictionary-Grenzen mit begrenzter Schachtelung
- Inline-Image-Nutzlasten verwenden nun formatbewusste Terminierung für Raw-, DCT-, ASCII85-, ASCIIHex-, RunLength- und Flate-Daten
- Die Flate-Nutzlastsuche führt nun ein begrenztes Inflate ab dem Content-Stream-Offset mit exakter komprimierter Byte-Buchführung durch, während verkettete verlustfreie Filter sich eine End-to-End-Ausgabeobergrenze teilen
- ASCII85-, ASCIIHex-, LZW-, Prädikator-, Farbprofil- und Hilfsbild-Streams erzwingen nun begrenzte Zwischenausgabe ohne übergroße temporäre Zuweisungen
Behoben
- Fehlerhafte oder abgeschnittene Inline-Images lesen nicht mehr über Quelldaten hinaus, schleifen nicht mehr über nicht terminierte Werte und behalten veralteten Zustand bei Decoder-Wiederverwendung nicht mehr bei
- Gepackte Bildzeilen berechnen nun Komponentenbits vor der Byte-Rundung und verhindern so fehlerhafte Längen bei Low-Bit-RGB- und Mehrzeilen-Bildern
- Ressourcen-Farbräume bewahren nun ihre ursprünglichen Namen, während sie Lab-, indirekte ICCBased- und DeviceN-Komponentenanzahlen ableiten und Indexed-Paletten-Streams unter strengen Grenzen dekodieren
- Inline-Image-Grenzen lehnen nun konsistent ungültige Abmessungen, Bittiefen, nicht unterstützte Filter, unsichere Filterketten, komprimierte Streams und mehrdeutige Endmarkierungen ab
- Das Indexed-Farbrendering validiert nun jeden Palettenzugriff und lehnt abgeschnittene Nachschlagedaten ab, statt über die dekodierte Tabelle hinaus zu lesen
- PNG-Prädiktoren 10 bis 15 dekodieren nun korrekt für Flate- und LZW-Streams, lehnen ungültige Zeilenfilter ab und validieren alle Zeilen- und State-Größen vor der Zuweisung
- JPEG- und JPEG-2000-Nutzlasten verifizieren nun ihre kodierten Abmessungen, Komponenten, Präzision, Marker-Struktur, Box-Längen und dekodierten Speicherbedarf vor der Bildzuweisung
- Die Inline-Image-Validierung begrenzt nun sowohl gepackten als auch erweiterten Bitmap-Speicher und schränkt ICC-Profile, JBIG2-Globals und terminale Filterparameter ein
- Binäre Filter-Nutzlasten, die eingebetteten Endmarkierungs-Text enthalten, setzen nun beim ersten Kandidaten fort, der die begrenzte Formatvalidierung besteht
Version 3.286.0
Geändert
- Die Tokenisierung von Inhaltsströmen folgt nun den PDF-Grenzen für Leerraum, Kommentare, Trennzeichen, Literalzeichenfolgen, Hexadezimalzeichenfolgen und Namen
- Textaufteilung und Ressourcenaustausch verwenden nun geometrisch wachsende Ausgabepuffer, um große Inhaltsströme in linearer Zeit zu verarbeiten
- Wiederverwendbare Inhaltsstromprozessoren setzen den abgeleiteten Ausgabe- und Parserzustand nun vor jedem Aufruf von
Processzurück
Behoben
- Fehlerhafte oder abgeschnittene Literal- und Hexadezimalzeichenfolgen lesen nicht mehr über den Quellpuffer hinaus und erzeugen kein zusätzliches leeres Token mehr
- Der Ressourcenaustausch bewahrt nun die Groß-/Kleinschreibung von PDF-Namen, akzeptiert optionale führende Schrägstriche und aktualisiert doppelte Zuordnungen deterministisch
- XObject- und Shading-Operanden am Anfang eines Stroms werden nun von der Textausgabe ausgeschlossen, während nicht zugeordnete Wiederherstellungsoperatoren später gespeicherte Grafikzustände nicht mehr aufheben
Version 3.285.0
Geändert
- Die LZW-Kodierung verwendet nun Wörterbuchsuchen mit konstanter Laufzeit und gepufferte Stream-Schreibvorgänge; die Dekodierung nutzt kompakte Präfix- und Suffixtabellen mit geometrischem Ausgabewachstum
- Die Flate-Prädiktordekodierung verarbeitet Zeilen nun direkt im Ausgabepuffer und unterstützt gepackte sowie 8-Bit- und 16-Bit-TIFF-Abtastwerte mit beliebig vielen Farbkomponenten
- Gespeicherte Deflate-Ströme schreiben nun in ein exakt vorab dimensioniertes Ergebnis, und zlib-Wrapper geben temporäre Puffer sicher frei, wenn Komprimierung oder Dekomprimierung fehlschlägt
Behoben
- Änderungen der LZW-Codebreite folgen nun für 9- bis 12-Bit-Codes der PDF-Semantik von
EarlyChange, einschließlich Wörterbuchrücksetzungen undEarlyChange=0 - Die LZW-Dekodierung lehnt nun ungültige zukünftige Codes und abgeschnittene Bitströme ab, ohne über den Quellpuffer hinauszulesen
- PNG-Prädiktoren verwenden nun die aufgerundete Bytebreite eines Pixels, bewahren zuvor dekodierte Zeilen und füllen eine unvollständige letzte Zeile sicher auf
- Die TIFF-Prädiktordekodierung behandelt Komponenten mit 1, 2, 4, 8 und 16 Bit nun sowohl im LZW- als auch im Flate-Pfad einheitlich
Version 3.284.0
Geändert
- Puffersuchen prüfen nun feste Blöcke von 64 KiB, verwenden Byte-Nachschlagetabellen für die Mengenzugehörigkeit und bewahren die Position des Aufrufers in allen Suchpfaden
- Konvertierungen für Unicode, Latin-1, hexadezimale Digests und ARC4 reservieren die begrenzte Ausgabe nun einmalig, statt Zeichenfolgen oder temporäre Arrays wiederholt zu vergrößern
- Die ASCII85-Kodierung liest Eingabeströme nun in Blöcken von 32 KiB; die Dekodierung verwendet exakte Ganzzahlarithmetik und schreibt direkt in einen vorab dimensionierten Ausgabepuffer
- Das MD5-Hashing von Zeichenfolgen vermeidet nun einen temporären Speicherstream, der Digestvergleich prüft jedes Byte, und die ARC4-Schlüsselplanung legt kein erweitertes Schlüsselarray mehr an
Behoben
DistanceToAnyBytegibt nun hinter dem ersten Block den richtigen Versatz zurück, statt dasselbe Präfix erneut zu lesen und übersprungene Bytes doppelt zu zählen- Pufferlesevorgänge aus Streams berücksichtigen nun die von benutzerdefinierten Streams tatsächlich zurückgegebene Byteanzahl, verkleinern die Ergebnisse und verschieben Positionen nur um die empfangenen Bytes
- Beim Verkürzen eines Puffers wird die aktuelle Position nun begrenzt; nil-Zeiger und nil-Streams verhalten sich wie leere Eingaben, statt ungültigen Speicher offenzulegen
- Die Latin-1-Dekodierung ordnet nun den vollständigen Bytebereich 0x00-0xFF zu, statt die Bytes 0x7F-0xFF zu ersetzen
- Die ASCII85-Dekodierung bewahrt nun die gültige maximale 32-Bit-Gruppe
s8W-!und stoppt ohne Gleitkomma-Grenzverlust an der ersten Endmarkierung
Version 3.283.0
Hinzugefügt
TPDFlibSignatureVerifierkann nun Signaturfelder und CMS-Signierer aufzählen, Dateien, Streams oder Zeichenfolgen öffnen und ein ausgewähltes Feld sowie einen ausgewählten Signierer anhand von Index oder Feldname prüfen- Detaillierte Prüfberichte trennen nun kryptografische Integrität, Abdeckung der signierten Revision, Abdeckung der aktuellen Datei, spätere Revisionen, strikte Prüfung der Contents-Lücke und native Kryptografiefehler
Geändert
- Die Prüfung abgetrennter CMS-Signaturen streamt nun beide ByteRange-Segmente in begrenzten Blöcken durch die Windows CryptoAPI, statt die vollständige PDF-Datei im Speicher abzubilden
- Signaturfelder in verschachtelten AcroForm-Kids-Arrays und geerbte
/FT /Sig-Einträge werden nun mit vollständig qualifizierten Namen aufgezählt; direkte Wörterbücher für Signaturwerte werden ebenfalls unterstützt
Behoben
- Die ByteRange-Prüfung lehnt nun Überlauf, Überlappung, Abschneidung, eine Lücke, die nicht exakt dem ausgewählten hexadezimalen
/Contents-Token entspricht, sowie eine signierte Revision ab, die nicht an ihrem eigenen%%EOFendet - Die Zertifikatssuche fällt nicht mehr auf ein unbeteiligtes eingebettetes Zertifikat zurück, wenn die Kennung des ausgewählten CMS-Signierers keine exakte Übereinstimmung von Aussteller und Seriennummer besitzt
- Inkrementelle Aktualisierungen mit Querverweisströmen enthalten nun den eigenen Typ-1-Eintrag des Querverweisstromobjekts, sodass strikte PDF-Prüfer nach dem Signieren keinen fehlenden Selbsteintrag mehr melden
Version 3.282.1
Geändert
- Vollständige Speichervorgänge bauen importierte Objektströme nun aus dem aktuellen Objektgraphen neu auf, bewahren private Trailer-Wurzeln und behalten Generationen freier Objekte bei, ohne strukturelle Objektnummern wiederzuverwenden
- Querverweisströme dimensionieren ihre Versatzfelder nun für große Dateien, reservieren ihre Nutzlast vorab, enthalten ihren eigenen Eintrag und bewahren Trailer-Erweiterungsschlüssel
Behoben
- Die Objektstrompaketierung schreibt nun echte
/ObjStm-Container und Typ-2-Mitgliedseinträge, statt lediglich auf einen xref-Strom umzuschalten - Die Speicherbereinigung schreibt fehlende Objektnummern nicht mehr als verwendete Einträge mit Versatz null und erzeugt nun sowohl in Klartext- als auch in Stream-Querverweisen eine verkettete Liste freier Objekte
- Geladene gepackte PDF-Dateien können nun wiederholt mit aktivierter oder deaktivierter Paketierung gespeichert werden, ohne veraltete Objektströme beizubehalten, aktive Mitglieder zu verlieren oder eine Querverweisreparatur zu erfordern
Version 3.282.0
Hinzugefügt
- Importierte ICCBased-Farben verwenden nun das eingebettete ICC-Profil für Vektormalerei, Funktions- und Mesh-Shadings, indizierte Paletten, rohe Bitmap-, CCITT- und JBIG2-Bilder, CMYK-JPEG-Bilder sowie JPEG-2000-Bilder
Geändert
- ICC-Transformationen verwenden nun eine begrenzte Nachschlagetabelle des Windows Color System mit multilinearer Interpolation und ersetzen damit den temporären PNG-Rundweg, der beim Bildrendering verwendet wurde
- Der Renderer berücksichtigt nun Rendering-Intents aus Inhaltsströmen und Grafikzuständen, ICCBased-
/Range, Bild-/Decodeund Farbschlüsselmasken im ursprünglichen Wertebereich, während er die Kanalanzahl des Profils gegen das PDF-Farbraumwörterbuch prüft - Wiederholte Verwendungen desselben Profils und Rendering-Intents teilen sich nun eine Nachschlagetabelle für Vektorfarben, Muster, Shadings und Bilder
Behoben
- Verschlüsselte ICC-Profilströme werden nun nur während der Dekodierung entschlüsselt und danach wiederhergestellt; eingebettete Profile werden beim Schreiben der Bildausgabe nicht mehr doppelt komprimiert
Version 3.281.0
Hinzugefügt
- Der integrierte GDI+-Renderer zeichnet nun importierte funktionsbasierte PDF-Shadings sowie Freiform-, Gitter-, Coons- und Tensor-Mesh-Shadings der Typen 1 und 4-7, einschließlich Transparenz und Beschneidung
- Shading-Wörterbücher unterstützen nun Komponenten-Function-Arrays, kalibrierte Lab-, CalGray- und CalRGB-Farbräume, Separation- und DeviceN-Farbtontransformationen, PatternType-2-Hintergrundfüllungen sowie BBox-Beschneidung in den GDI+- und Cairo-Renderern
Geändert
- Shading-Funktionen vom Typ 1 verwenden nun eine begrenzte adaptive Farbabtastung mit zusätzlichen Prüfungen an Zellviertelpunkten, um schmale Merkmale genauer und konstante oder gleichmäßige Bereiche mit weniger Aufwand zu verarbeiten
- PatternType-2-Matrizen um Mesh-Shadings werden nun sowohl in GDI+ als auch in Cairo genau einmal zusammengesetzt, sodass verschobene, skalierte und gedrehte Muster korrekt platziert bleiben
- Mesh-Farbkomponenten werden nun vor der Function-Auswertung und der Konvertierung nach RGB in ihrem Quellfarbraum interpoliert; dadurch bleiben nichtlineare Funktionen, DeviceCMYK-Verläufe und die richtige Reihenfolge für verwaltete Farbtransformationen erhalten
- Coons- und Tensorflächen verwenden nun eine anhand des Gerätepixelfehlers begrenzte Unterteilung, um bei großen Renderinggrößen glattere Ausgaben mit hoher Krümmung zu erzeugen
- Verschlüsselte Shading- und Function-Ströme werden über die Kryptografie-Rückruffunktionen des Dokuments dekodiert, und Typ-5-Scheiteldatensätze berücksichtigen ihre erforderliche Byteausrichtung
Version 3.280.1
Behoben
MergeFileList/MergeFileListFast/MergeFileListStrictverloren ein Paar ausTSmartPDFReaderundTSmartPDFDocumentsamt aller zugehörigen Objekte, wenn die Zusammenführungsliste eine Nicht-PDF-Datei enthielt: Reader und Dokument wurden vor demtry-Block erzeugt, der sie freigibt, sodass ein Analysefehler im Inhalt der fehlerhaften Datei den bereits erzeugten Reader verwaisen ließ, statt ihn durch die umgebende Ausnahmebehandlung zu bereinigen. Die Erzeugung erfolgt nun sowohl in der Vorabprüfung einzelner als auch mehrerer Dateien innerhalb des schützendentry-Blocks- Bei der Analyse von Mesh-Shadings (
TPLMeshShading.Parse, Shading-Typen 1 und 4-7) ging das dekodierte/Function-Objekt bei jeder Analyse verloren, da weder die vorzeitigen Ausstiegspfade noch der normale Abschluss es freigaben. Die Funktion wird nun unabhängig vom Ausstieg ausParsein einemfinally-Block freigegeben TPDFlibSignDoc.Closesetzt seine Felder für Smart-Reader, Dokument und Informationen nach deren Freigabe nun auf nil. Die Ausnahmepfade inOpen,OpenStreamundOpenStringgeben nun teilweise erzeugte Smart-Objekte frei, statt nur die Stream-Referenz zu löschen; dadurch entsteht bei einem teilweise fehlgeschlagenen Öffnen des Signaturziels kein Speicherverlust mehr
Version 3.280.0
Hinzugefügt
- Die Fehlerkategorieaufzählung
TPDFlibErrorCategorymit ecSuccess/ecStructure/ecSave/ecCrypto/ecGeneric/ecCompliance/ecAcroForm ergänzt die vorhandene numerischeLastErrorCode-Systematik, sodass Aufrufer Fehler klassifizieren können, ohne Codebereiche auswendig zu kennen. Sie wird überTPDFlib.LastErrorCategory,TPDFlib.ErrorCategory(Code)undTPDFlib.ErrorMessage(Code)bereitgestellt - Die Formularfeld-Fehlercodes 701-704 für Feld nicht gefunden, schreibgeschütztes Feld, fehlendes AcroForm und ungültigen Wert enthalten verständliche Meldungen, sodass Aufrufer "Feld ist gesperrt" von "Feld ist nicht vorhanden" unterscheiden können, statt nur einen allgemeinen Fehler zu erhalten
- Die erzwungene Schreibvariante
SetFormFieldValueForcedumgeht die Schreibschutzprüfung und wird intern vonSetFormValues(SkipReadOnly=False)verwendet, damit Massenimporte gesperrte Felder überschreiben können, wenn der Aufrufer dies ausdrücklich zulässt
Geändert
SetFormFieldValuesetztLastErrorCodebei einem Fehler nun auf 701, 702 oder 703 für Feld nicht gefunden, schreibgeschützt oder fehlendes AcroForm, statt stillschweigend 0 zurückzugeben.LastErrorCategoryist ein nicht verbrauchender Lesezugriff, sodass der Aufrufer die Kategorie vor dem Abrufen des numerischen Codes prüfen kann
Version 3.279.0
Hinzugefügt
ReplacePageRangesersetzt den sichtbaren Seiteninhalt aus einem anderen geöffneten Dokument, ohne die Seitenzahl oder die Identitäten der Zielseitenobjekte zu ändern; vorhandene Lesezeichen, Links, Anmerkungen und Formular-Widgets dieser Seiten bleiben erhalten
Geändert
- Beim dokumentübergreifenden Kopieren von Seiten wird vor dem Importieren des angeforderten Bereichs keine zusätzliche Platzhalterseite mehr erzeugt und entfernt
Version 3.278.0
Hinzugefügt
PrintPagesAdvancedwendet Anzahl, Sortierung, Duplex, Ausrichtung, Farbe, Qualität, Papierformat und Einzugseinstellungen auf beliebige Bereichsausdrücke vonPrintPagesan und behält dabei ein Druckerprofil und einen Druckauftrag bei
Geändert
- Erweiterte Druckeinstellungen werden vor dem Auftragsstart geprüft; positive Druckqualitätswerte oberhalb der vier benannten Voreinstellungen werden als DPI angewendet, und Papier- oder Einzugskennungen dürfen den gesamten positiven Bereich der entsprechenden
DEVMODE-Felder nutzen
Behoben
- Die Wiederherstellung beschädigter Querverweise leitet ihre begrenzten Blocklesevorgänge unter Win64 nun durch die herkömmliche Überschreibung
TStream.Read, sodass Instrumentierung und das Verhalten benutzerdefinierter Streams bei sequenzieller Ein-/Ausgabe in 64-KiB-Blöcken erhalten bleiben
Version 3.277.0
Geändert
- Die Wiederherstellung beschädigter Querverweise durchsucht Quelldaten nun in sequenziellen Blöcken von 64 KiB, statt für jedes passende Zeichen einen Suchlauf auszuführen; dadurch bleibt der Zusatzspeicher begrenzt und die Verarbeitung skaliert für große PDF-Dateien und Nicht-Speicherstreams
- Die Wiederherstellung prüft vollständige indirekte Objekttokens, überspringt objektähnliche Daten in Kommentaren, Zeichenfolgen und Streams, bestätigt Stream-Enden anhand eines folgenden
endobj-Tokens, bewahrt über Lesegrenzen aufgeteilte Header und wählt das letzte gültige Trailer-Wörterbuch
Behoben
- Die Trailer-Rekonstruktion unterstützt nun verschachtelte Wörterbücher und Trennzeichentext in Literalzeichenfolgen und wird nicht mehr nach den ersten 2048 Bytes oder beim ersten vermeintlichen
>>-Paar abgeschnitten
Version 3.276.0
Hinzugefügt
ActivateWebLinksundActivateWebLinksExdurchsuchen vorhandenen Seitentext einmal pro Seite und erstellen eindeutige URI-Linkanmerkungen für HTTP-, HTTPS-,www.-, FTP-,mailto:- und reine E-Mail-Ziele mit auswählbaren Erkennungs- und Rahmenoptionen- Erzeugte Links verwenden die Geometrie der gefundenen Zeichen, bei zulässigem gedrehtem oder geneigtem Text präzise Vierecke, PDF/A-Druckflags sowie Fortschritts- und Abbruchunterstützung und stellen die ausgewählte Seite wieder her. Tagged-PDF- und PDF/UA-Dokumente werden vor unvollständigen Aktualisierungen des Strukturbaums geschützt
Geändert
SetAutoCreateWebLinksverwendet beim Erstellen von Links für neu gezeichneten Text nun denselben grenzbewussten Detektor und dieselbe Zielnormalisierung und unterstützt zusätzlichwww., FTP und reine E-Mail-Adressen
Behoben
- Das Aktualisieren von
/Contents, Name, Datum, Titel oder Betreff einer Anmerkung überschreibt den Subtyp eines vorhandenen Aktionswörterbuchs nicht mehr, sodass URI- und andere Aktionen nach Änderungen an Anmerkungsmetadaten gültig bleiben
Version 3.275.0
Hinzugefügt
ExtractPageRangeText,SavePageRangeTextToStreamundSavePageRangeTextToFileextrahieren einen analysierten Seitenbereich in einem Durchlauf mit vom Aufrufer festgelegten Seitentrennern. Stream- und Dateiausgaben schreiben UTF-8-Daten schrittweise, sodass große Dokumente keinen vollständigen Textpuffer in Dokumentgröße benötigenSetPageBoxRangeundRemovePageBoxRangewenden Änderungen der Seitenbegrenzung mit der Standardsyntax für Seitenbereiche an und bewahren dabei die vom Aufrufer ausgewählte SeiteSetPageTransitionRangeundSetPageTransitionRangeExwenden ältere oder erweiterte Präsentationsübergänge mit seitenbezogener Fortschritts- und Abbruchunterstützung auf Seitenbereiche anGeneratePageThumbnailsrendert die angeforderten Seiten direkt in wiederverwendbaren Speicher und fügt deren/Thumb-Bilder ohne Zwischendateien oder verschachtelte Fortschrittsvorgänge an
Version 3.274.0
Behoben
- Das GDI+-Rendering axialer Shading-Muster berücksichtigt nun das PDF-Array
/Extend:SetupGDIPlusPatternübergibtWrapModeClamp, wenn eines der Enden erweitert ist, entsprechend dem Cairo-Backend, statt immerWrapModeTilezu verwenden. Dadurch füllen die Endfarben den Bereich außerhalb der Verlaufsachse korrekt
Hinzugefügt
- Die beim Ziehen der vertikalen Bildlaufleiste angezeigte Bildlaufblase (
"Page N / M") wird über einenWM_TIMER-Handler nach drei Sekunden Inaktivität automatisch ausgeblendet und bleibt nicht mehr sichtbar, bis ein weiteres Bildlaufereignis sie entfernt ZoomInStep/ZoomOutSteprasten nun auf den Prozentwerten vonActualSize(100 %),FitWidthundFitPageein, wenn diese zwischen dem aktuellen Zoom und der nächsten Voreinstellung der 14-stufigen Skala liegen; das entspricht dem Verhalten professioneller PDF-Viewer- Der Seitenfestplattencache des Viewers schreibt eine Build-Versionsmarkierung (
cache.version) und leert bei einer geänderten Bibliotheksversion das gesamte Cache-Stammverzeichnis, sodass ein Build-Upgrade niemals veraltete Bitmaps aus einem älteren Codepfad wiederverwendet
Version 3.273.1
Behoben
- Beim Speichern erzeugte Objektstromcontainer und xref-Stromobjekte gingen verloren, da sie die Registrierung über
TPDFStructure.AddObjectumgingen. Beide Aufrufstellen verwenden nun die besitzverfolgende FactoryNewStreamWithDict; damit ist der vom Test-Runner unterReportMemoryLeaksOnShutdowngemeldete Verlust vonTPDFStreambeseitigt /Sizedes Querverweisstroms war um eins zu klein: Der Wert muss eins größer als die höchste Objektnummer der gesamten Datei sein, und der xref-Strom ist selbst ein indirektes Objekt mit der NummerMaxObj+1; daher lautet/SizenunMaxObj+2
Geändert
- Der Peephole-Optimierer für Inhaltsströme entfernt nun auch identische Textmatrixoperatoren (
1 0 0 1 0 0 Tm) und behandelt damitcmundTmmit derselben Identitätsprüfung für sechs Operanden - Die Mark-and-Sweep-Speicherbereinigung bewahrt Objekt 1, das Parameterwörterbuch
/Linearized, wenn das Quelldokument linearisiert geladen wurde; dieses Wörterbuch wird nie von/Rootreferenziert, muss aber erhalten bleiben
Version 3.273.0
Hinzugefügt
- Die Objektstrompaketierung beim Speichern (
TPDFDocument.PackObjectsIntoStreams) sammelt geeignete indirekte Nicht-Stream-Objekte, serialisiert sie mit Flate-Komprimierung in PDF-1.5-Objektströme (/Type /ObjStm) und erzeugt einen binären Querverweisstrom (/Type /XRef) mit Einträgen vom Typ 0, 1 und 2. Bei dokumenten mit vielen Objekten sinkt die gespeicherte Dateigröße dadurch um 10-40 % - Das Flag
TPDFlibSaveOptions.PackObjectStreamsund die APITPDFlib.SetPackObjectStreams/GetPackObjectStreamssind standardmäßig aktiviert und werden automatisch von der PDF-Version gesteuert: Ab 1.5 werden Paketierung und xref-Ströme aktiviert, bis 1.4 bleibt aus Kompatibilitätsgründen der herkömmliche Klartext-xref erhalten.TPDFlib.GetLastSaveUsedObjectStreamsmeldet, ob beim letzten Speichern tatsächlich paketiert wurde
Version 3.272.0
Hinzugefügt
- Die Mark-and-Sweep-Speicherbereinigung nicht referenzierter indirekter Objekte (
TPDFDocument.GarbageCollectUnusedObjects) durchläuft den Objektgraphen ausgehend von den Trailer-Wurzeln/Root,/Infound/Encryptund entfernt jedes nicht erreichbare indirekte Objekt. Dadurch endet das Dateigrößenwachstum, das beim Löschen von Seiten und dem Verwaisen ihrer Schrift-, Inhalts- und XObject-Ressourcen entstand - Das Flag
TPDFlibSaveOptions.GarbageCollectund die APITPDFlib.SetGarbageCollect/GetGarbageCollecterlauben das optionale Aktivieren der Speicherbereinigung beim vollständigen Speichern und bleiben aus Gründen der Abwärtskompatibilität standardmäßig deaktiviert.TPDFlib.GarbageCollectObjectsführt die Bereinigung sofort aus und gibt die Anzahl der entfernten verwaisten Objekte zurück
Version 3.271.0
Hinzugefügt
- Der Peephole-Optimierer für Inhaltsströme (
TPDFContentPeepholeOptimizer) schreibt einen analysierten Seiteninhaltsstrom vor der Flate-Komprimierung neu und entfernt semantisch redundante PDF-Operatoren: identischecm-Matrizen, leereq/Q-Paare, leereBT/ET-Objekte, wirkungslose mitnbeendete Pfade ohne Beschneidung, doppelte Grafikzustandssetter für Farbe, Linienbreite, Enden/Verbindungen, Strichelung und Textzustand sowie überflüssigesnnach einem Maloperator. Alle Transformationen erzeugen dieselbe Ausgabe, sodass der sichtbare Seiteninhalt unverändert bleibt - Das Flag
TPDFlibSaveOptions.OptimizeContentStreamsund die zugehörige APITPDFlib.SetOptimizeContentStreams/GetOptimizeContentStreamsermöglichen das Aktivieren oder Deaktivieren der Peephole-Umschreibung währendCompressContent/CompressPage; sie ist standardmäßig aktiviert
Geändert
TPDFDocument.CompressPageleitet das Optimierungsflag nun an den Seitenbaum weiter, sodass der Peephole-Durchlauf innerhalb vonTPDFPageTree.Compressvor der vorhandenen Flate-Komprimierung erfolgt und die Reduzierung auf Operatorebene mit der Komprimierung auf Byteebene kombiniert
Version 3.270.0
Hinzugefügt
- Das neue
PLParseDefaultAppearancedekodiert eine Bytezeichenfolge für das Standarderscheinungsbild/DAnach ISO 32000-2 12.7.4.3 in Schriftressourcenname, Schriftgröße und Füllfarbe. Die Farboperatorenrg,kundGwerden unterstützt, sodass Generatoren für Formularfeld- und Anmerkungsdarstellungen Text in der vom Autor vorgesehenen Gestaltung zeichnen können
Geändert
- Die Zusammenstellung von Seiteninhaltsströmen (
TPDFRenderer.GetContents) verkettet mehrteilige/Contents-Arrays nun über einenTStringBuilderstatt durch wiederholtesResult := Result + chunk. Dadurch entfällt das quadratische Zeichenfolgenwachstum O(n^2), das Seiten mit vielen Inhaltsstromteilen verlangsamte
Version 3.269.0
Hinzugefügt
- Die neuen
BeginMarkedContent/EndMarkedContentschreiben Inline-Sequenzen für markierten Inhalt mit Barrierefreiheitseigenschaften (/Alt,/ActualText,/Lang,/E) nach ISO 32000-2 14.9.2–14.9.5 direkt in die BDC-Eigenschaftsliste, sodass Screenreader und Hilfswerkzeuge Ersatztext ohne Strukturbaumeintrag lesen können - Der Anmerkungsleser stellt
GetAnnotEffectiveBorderbereit, das die Rangfolge aus Errata #287 umsetzt: Das Rahmenstilwörterbuch/BShat Vorrang vor dem älteren Array/Border; Breite, Stil und Strichelmuster werden in einem Aufruf aufgelöst - Signaturdokumente stellen
GetSignatureSeedValuebereit, um das Seed-Value-Wörterbuch (/SV, ISO 32000-2 12.7.5.5, Tabellen 236–237) mit erforderlichem Filter, zulässigen SubFilters und zulässigen Digestmethoden zu lesen, damit ein Signierer die vom Autor eingebetteten Einschränkungen einhalten kann GetSignatureFieldLockliest das FieldMDP-Seed-Wörterbuch/Lockaus Tabelle 238: die Aktion/All,/Includeoder/Excludeund die Namen der betroffenen Felder, die beim Signieren gesperrt werden müssen
Version 3.268.0
Hinzugefügt
- Das neue
PLParsePDFDateanalysiert Datumszeichenfolgen nach ISO 32000-2 7.9.4 (D:YYYYMMDDHHmmSSOHH'mm') in einen lokalenTDateTime. Es berücksichtigt das obligatorische PräfixD:, die Feldabhängigkeitsfolge, nach der jedes Feld nur bei vorhandenen Vorgängern vorkommen darf, und den UT-Versatz (+/-/Zmit optionaler Apostrophminute) und gibt das lokale Äquivalent des dokumentierten Zeitpunkts zurück - Die Textzeichenfolgendekodierung (
PLDecodeTextString) erkennt nun gemäß 7.9.2.2.1 die PDF-2.0-UTF-8-BOM (EF BB BF), sodass in UTF-8 verfasste Metadaten korrekt dekodiert und nicht als PDFDocEncoding fehlinterpretiert werden - Dateispezifikationen stellen
GetFileNamebereit, das gemäß Errata #444 die PDF-2.0-Rangfolge Path > UF > F berücksichtigt, sowie die ZugriffeGetEmbeddedFileStreamundGetRelatedFilesfür die Wörterbücher/EFund/RF - Anmerkungsleser stellen die Hilfen
GetAnnotNormalAppearance,GetAnnotDefaultAppearanceundGetAnnotOffStateAppearancefür die Darstellungsrangfolge bereit. Sie setzen die Regeln aus Errata #23/#34/#42/#170 um: AP/N ist maßgeblich, DA ist der Bytezeichenfolgen-Rückfallwert, und der Aus-Zustand befindet sich unter dem NamenOff - Die PDF/UA-Prüfung meldet den neuen Code 10045, wenn ein nicht standardmäßiger Strukturtyp nicht über die Role-Map-Kette an einem Standardtyp endet (ISO 14289-1:2014 7.1); Zyklen werden bis zu einer Tiefe von 8 abgesichert
- PDF/A- und PDF/UA-Schriftprüfungen stellen nun sicher, dass eingebettete CIDFontType2-Schriftarten eine
/CIDToGIDMapbesitzen, deren Wert entweder der NameIdentityoder ein Stream ist, statt lediglich das Vorhandensein zu prüfen (ISO 32000-1 9.7.4)
Geändert
- Die Namensbaumsuche (
NameTreeLookup) durchsucht das sortierteNames-Array nun gemäß ISO 32000-2 7.9.6 binär, bevor sie auf eine lineare Suche zurückfällt. Dadurch werden umfangreiche Suchvorgänge in EmbeddedFiles/JavaScript/Dests bei konformen Dateien von O(n) auf O(log n) verbessert - Die Menge der PDF/UA-Standardstrukturtypen wurde um die PDF-2.0-Erweiterungen
Artifact,DocumentFragment,FENote,MarkedContentundTitleergänzt, sodass die Prüfungen auf unterlassene Neuzuordnung und Kettenabschluss das vollständige Tag-Vokabular erkennen
Version 3.267.0
Hinzugefügt
EnumPageContentStatesExkann Form XObject-Anweisungen mit konfigurierbarer Tiefe, Zyklenschutz und Ausführungsreihenfolge nach dem Tiefensuche-Verfahren rekursiv aufzählen- Inhalts-Snapshots machen nun die Identität des Aufrufbaums verfügbar, die Stream- und übergeordnete XObject-Informationen, die Identität des Ressourcen-Bereichs, den Form-Traversierungsstatus sowie die Anzahl der Nachkommen enthält
- Eigenständige Inhalts-Tracker können bereichsbezogene Schriftarten registrieren und einen isolierten Form-Ausführungszustand mit Matrixverkettung und Bounding-Box-Clipping initialisieren
Geändert
- Rekursive Inhaltsverfolgung wählt jedes Form-Ressourcenverzeichnis unabhängig aus, erbt aufrufende Ressourcen für kompatible Legacy-Forms, bewahrt die geerbte Schriftartenidentität und speichert decodierte Form-Programme über wiederholte Aufrufe hinweg im Cache
Version 3.266.0
Hinzugefügt
- Von
GetTextRunszurückgegebene Textläufe tragen nun den Glyphenursprung (OriginX/OriginY) und die vollständigen Textmatrixkomponenten (Tm11/Tm12/Tm21/Tm22/TmDX/TmDY), die durch das Abspielen von BT, Td, TD, Tm und T* neben den Show-Operatoren erfasst wurden, sodass Konsumenten Glyphen ohne separaten Text-Trichter-Durchlauf lokalisieren können - Mesh-Shading-Decodierung leitet nun Lab-, CalRGB- und CalGray-Farbräume durch den Farbmanager, anstatt auf Schwarz zurückzufallen, wodurch korrekte Füllungen für Nicht-DeviceRGB-Freiform- und Coons-Patches erzeugt werden
- Schwärzung gibt nun neben der bestehenden Inhaltsentfernung eine echte
/Subtype /Redact-Annotation mit/Rect, der Innenfarbe/ICund optionalem Overlay-Text aus, sodass schwärzungsfähige Viewer den bereinigten Bereich markieren - Bibliotheksoperationen geben nun über den zuvor inaktiven
Loggerstrukturierte Protokolleinträge an Lade- und Speichergrenzen aus, mit ISO-8601 UTC-Zeitstempeln und einer zwischengespeichertenTStreamWriter-Dateisenke, die die Protokolldatei nicht mehr bei jeder Zeile neu öffnet - Neue
Tests.Memory-Fixture schützt Erstellungs-/Zeichen-/Speicher-/Freigabe- undNewDocument-Zyklen vor Heap-Regression, und der Konsolen-Test-Runner aktiviert nunReportMemoryLeaksOnShutdown - EMF-Interpretation zählt nun unbekannte oder private Datensätze über die Eigenschaft
UnknownRecordCount, sodass stille Lücken in Metadateien beobachtbar sind
Geändert
- Wörterbuch-Schlüsselsuche (
TPDFDictionary.FindIndexByKeyName) erstellt einen verzögerten Open-Addressing-Hash-Index für Wörterbücher mit mehr als 16 Einträgen, wodurch die lineare Suche, die die Renderer-Lookups für Resources/ColorSpace/Font/ExtGState dominierte, in eine O(1)-Prüfung umgewandelt wird - sRGB-Gamma-Konvertierung (
XYZ2RGB) verwendet eine gemeinsame Nachschlagetabelle mit 4096 Einträgen anstelle von dreiPower(x, 1/2.4)-Aufrufen pro Pixel, und die Lab-zu-XYZ-Kubierung verwendet nun direkte Multiplikationen; beide sind die dominierenden Kosten pro Pixel bei der Decodierung von Lab- oder ICC-basierten Bildern - Seitensuche (
TPDFPageTree.GetPage) gibt bei wiederholtem Zugriff das zwischengespeicherte Seitenwörterbuch zurück, anstatt bei jedem Aufruf den Seitenbaum erneut zu durchlaufen - Operator-Dispatch im Content-Stream (
ContentOperatorFromName) unterteilt die 73 Operatoren nach dem ersten Byte, wodurch die lineare Suche pro Token auf einen kurzen Restvergleich reduziert wird - PDF/A-Farbraumprüfung führt nun eine Rekursion in den Basis- oder Alternativraum von Indexed, Separation, DeviceN und ICCBased bis zu einer Tiefe von 8 durch, sodass eine versteckte DeviceCMYK-Farbton-Transformation oder ein bloßer Lab-Name markiert wird, anstatt stillschweigend durchzugehen
- Finalisierung geformter Schriftarten durchläuft nun den beim Zeichnen aufgezeichneten Satz verwendeter Glyphen, anstatt alle 65536 Glyphenplätze viermal pro Speichervorgang zu scannen
- Zeichenfolgen-Escape-Routinen (Literal-String, XFDF, Stempel und variable Token-Erweiterung) erstellen die Ausgabe über
TStringBuilderoder Zwei-Wege-Zuweisung, wodurch die O(n^2)-Verkettung aus den Hot-Paths für Speichern und Formular-Export entfernt wird - AES-Stream-Verschlüsselung/-Entschlüsselung verwendet ihren Chunk-Puffer über Schleifeniterationen hinweg wieder, anstatt ihn pro Block neu zuzuweisen
- Parsing von zusammengesetzten Glyphen im TrueType-Parser vergrößert das Komponenten-Array geometrisch statt um jeweils ein Element
- Mesh-Shading-
ReadBitsliest die minimal abdeckenden Bytes in einem Durchgang undWriteBitsdimensioniert den Ausgabepuffer vor, wodurch eine Neuzuweisung pro Bit entfällt - Painter-Kreiskontrollpunkt verwendet eine vorberechnete Kappa-Konstante und die Bogenquadrierung verwendet
Sqranstelle vonPower
Behoben
- Nicht-Windows-Kompilierungsfehler in
PDFlibParallelbehoben, bei dem die Stub-Body-Signatur fürPDFlibRenderPagesParallelnicht mit der Schnittstellendeklaration übereinstimmte
Version 3.265.0
Hinzugefügt
- 59 C++Builder-Konsolendemos hinzugefügt, um die C++Builder-Demosuite an Delphi anzupassen, wodurch die Gesamtzahl von 33 auf 92 Demos erhöht wurde, die dieselben API-Oberflächen abdecken
- Erweiterung von Demo/C++Builder/index.html von 35 auf 92 Einträge mit den Abschnitten Navigation, Color & ICC, Barcode & media sowie Structure & compliance hinzugefügt
Behoben
- Alle 33 vorhandenen C++Builder cbproj-Dateien korrigiert, bei denen 20 Bibliothekskomponenten (PDFlibMeshShading, PDFlibGraphics, PDFlibWindows, PDFlibParallel, PDFlibLogger, PDFlibMail, PDFlibViewer usw) in ihrer DelphiCompile-Liste fehlten, was das Kompilieren jeder C++Builder-Demo verhinderte
Version 3.264.0
Hinzugefügt
- Grafikzustands-Snapshots des Inhalts lösen nun
Do-Operanden als Bild-, Formular- oder PostScript-XObjects auf und melden deren Ressourcennamen, Objektnummern und transformierte Grenzen - Form-Snapshots machen die ursprünglichen
/Matrix- und/BBox-Werte zusammen mit Ressourcen-, Gruppen-, Transparenzgruppen- und Referenzformularindikatoren verfügbar - Eigenständige Inhalts-Tracker können XObject-Streams über
RegisterXObjectvorregistrieren
Geändert
- Seiteninhaltszustands-Aufzählung kompiliert nun XObject-Ressourcen der ausgewählten Seite vor und berechnet die Aufrufgrenzen aus allen vier transformierten Ecken
Version 3.263.0
Hinzugefügt
- Grafikzustands-Snapshots des Inhalts machen nun aktuelle Pfadgrenzen, den aktuellen Punkt, die Pfadkomplexität, ausstehende Clipping-Regeln und effektive Clipping-Grenzen verfügbar
- Eigenständige Inhalts-Tracker können eine explizite Clipping-Grenze über
SetInitialClipBoundsinitialisieren
Geändert
- Seiteninhaltszustands-Aufzählung folgt nun dem verzögerten
W- undW*-Clipping, exakten transformierten kubischen Extrema, derq/Q-Clipping-Wiederherstellung und denCropBox-Grenzen der ausgewählten Seite
Version 3.262.0
Hinzugefügt
- Grafikzustands-Snapshots des Inhalts melden nun den Schriftschreibmodus, den exakten Textversatz pro Anweisung und ob Schriftmetriken aufgelöst wurden
- Eigenständige Inhalts-Tracker können Schriftmessungen über
OnMeasureTextbereitstellen
Geändert
- Seiteninhaltszustands-Aufzählung rückt nun Textmatrizen für
Tj,TJ,'und"unter Verwendung einfacher oder zusammengesetzter Schriftmetriken, horizontaler Skalierung, Abständen und vertikaler Schreibregeln vor
Version 3.261.0
Hinzugefügt
- Grafikzustands-Verfolgung des Inhalts kann nun
ExtGState-Ressourcen der Seite auflösen, einschließlich Transparenz, Überblendung, Überdrucken, Soft-Masken, Gerätesteuerungen und eingebetteten Schriftreferenzen TPDFContentStateTrackerkann externe Grafikzustands-Wörterbücher für die eigenständige Inhaltsprogramm-Analyse vorregistrieren
Geändert
- Externe Grafikzustands-Parameter werden nun kumulativ angewendet und nehmen an vollständigen
q/Q-Speicher- und Wiederherstellungs-Snapshots teil
Version 3.260.0
Hinzugefügt
- Ein-Durchgangs-Verfolgung des effektiven Grafikzustands für strukturierte Inhaltsprogramme und vollständige ausgewählte Seiten hinzugefügt
- Snapshots machen CTM, Textmatrizen, Linienstil, Strichmuster, Farben, Textzustand und Grafikzustands-Stapeltiefe vor oder nach jeder Anweisung verfügbar
Geändert
- Bildplatzierungs-Aufzählung bildet nun alle vier Ecken des Einheitsquadrats ab, was zu korrekten Grenzen unter Rotation und Scherung führt
Version 3.259.0
Hinzugefügt
- Typisierte Zeit-, Spezialmuster- und beliebige Masken-Hilfsprogramme für interaktive Formularfelder hinzugefügt
- Bereichsvalidierung mit unabhängig optionalen, null-sicheren Grenzen hinzugefügt
- Summen-, Mittelwert-, Produkt-, Minimum- und Maximum-Feldberechnungen mit automatischer Registrierung der Berechnungsreihenfolge hinzugefügt
Sicherheit
- Generierte JavaScript-Zeichenfolgenwerte demaskieren (escapen) nun Anführungszeichen, Backslashes, Steuerzeichen und JavaScript-Zeilentrennzeichen
Version 3.258.0
Hinzugefügt
- Typisierte
SetOCGState-Aktionserstellung für Formularfeldereignisse, bestehende Aktionen und Aktionsketten hinzugefügt - Optional-Content-Aktionen behalten Zustandsänderungen von links nach rechts, wiederholte Gruppen und die optionale Option für die Radiobutton-Beziehung bei
Geändert
- Optional-Content-Aktionsaufzählung gibt nun kanonische Gruppen-Handles zurück, die über die Writer-APIs hin- und zurückgeleitet werden können
Version 3.257.0
Hinzugefügt
- Vollständiges explizites Schreiben von Remote-Zielen mit nullbasierten Seiten, allen Standard-Fit-Typen, Nullable-XYZ-Werten und Tri-State-Fensteroptionen hinzugefügt
- Vollständiges Schreiben von Start-Aktionen für portable Dateien, Windows-Parameter, Standardverzeichnisse und Öffnen- oder Druckvorgänge hinzugefügt
- Bestehende Aktions-Handles können diese Payloads nun aktualisieren oder an Aktionsketten anhängen, ohne dass containerspezifische Duplikat-APIs erforderlich sind
Sicherheit
- Remote-Go-To- und Launch-Aktions-Builder weisen nun den PDF/A-Modus zurück, bevor sie eine Aktionskette ändern
Version 3.256.0
Hinzugefügt
- Die Inspektion von Remote-Go-To-Aktionen meldet nun benannte und explizite Ziele, nullbasierte Zielseiten, Fit-Typen, Koordinaten und Zoomwerte
- Die Inspektion von Launch-Aktionen meldet nun Windows-Anwendungsparameter, Standardverzeichnisse sowie Öffnen- oder Druckvorgänge
- Aktionsinformationen unterscheiden eine fehlende
/NewWindow-Einstellung von einem expliziten false-Wert und identifizieren arraybasierte Ziele
Version 3.255.0
Hinzugefügt
- Typisierte Builder für Remote-Aktionen mit benanntem Ziel und Aktionen zum Starten externer Anwendungen hinzugefügt
- URI-Aktions-Builder unterstützen nun Koordinaten-Map-Anfragen über das standardmäßige
/IsMap-Flag - Die neuen Aktionsarten funktionieren über die vorhandene erweiterte Builder-Schnittstelle hinweg in Lebenszyklus-, Formularfeld- und verketteten Aktions-APIs
Version 3.254.0
Hinzugefügt
- 14 Delphi-API-Abdeckungsdemos für Bibliotheksbereiche hinzugefügt, für die es keine dedizierte Demo gab: OutlineBuilder, NamedDestinations, DocumentActions, EmbeddedFiles, LinearizeDemo, BarcodeGallery, XfaFields, TaggedPDF, OutputIntent, HtmlTextFlow, RichMediaAnnotations, MailSendDemo, TextBlockExtraction und PadesDssDemo
- Die Abschnitte Navigation, Color & ICC, Barcode & media und Structure & compliance zum Delphi-Demoindex hinzugefügt, wodurch sich die Gesamtzahl der aufgelisteten Demos von 56 auf 92 erhöht
- Readme.en-us.html-Anleitungen für die 20 Demos hinzugefügt, die zuvor ohne diese ausgeliefert wurden
Geändert
- Die Projektdatei Formatter.config auf alle Delphi-Demoquellen angewendet, sodass Operatorabstände, Einrückungen und Groß-/Kleinschreibung von Schlüsselwörtern einem Stil folgen, und NewLineBeforeThen auf False gesetzt, damit If...Then auf einer einzelnen Zeile bleibt
- Fehlerbehandlung in den klassischen GUI-Demos gehärtet: Rückgabewerte von SaveToFile werden nun konsistent überprüft, Lebensdauern von TPDFlib- und sekundären Objekten sind immer durch try/finally geschützt und Fehlermeldungen enthalten LastErrorCode
Behoben
- Invertierte Polarität von SaveToFile in ImageToPdf behoben, die Erfolg als Fehlschlag behandelte, und verhindert, dass AddTrueTypeSubsettedFont eine veraltete Datei öffnet, wenn das Speichern fehlschlägt
- Ressourcenlecks in CreateWithImageToStream, DoInTheStream, CanvasText, ExtractText, ExtractImage, PdfDecrypt, PdfEncrypt und PdfPermission behoben, bei denen Instanzen von TPDFlib, TStream, TBitmap, TOpenDialog oder TStringList auf einem Ausnahmepfad entweichen konnten
- Toten Code in AddFormattedTitle (ungenutzte RectParts-Allokation, redundantes try/except um StrToFloatDef) und MultiFunction (überschriebener SetTextSize-Aufruf) entfernt
Version 3.253.0
Hinzugefügt
- Typisierte Aktionsdetails für Thread-, Sound-, Movie-, Optional-Content-, Rendition-, Transition- und 3D-View-Aktionen hinzugefügt
- Wiederverwendbare Aktions-Handle-Suche und geordnete Optional-Content-Statusaufzählung hinzugefügt
- Vollständige PDF-Übergangsdatensätze hinzugefügt, die die Stile Replacement, Fly, Push, Cover, Uncover und Fade abdecken
Behoben
- Wipe- und Glitter-Übergänge speichern nun ihre Richtung in
/Di, lesen die Seitenanzeigedauer aus dem Seiten-Dictionary und löschen sowohl Übergangs- als auch Timing-Einträge - Standardmäßige Pre-PDF-1.5-Übergangsstile erzwingen keine PDF-1.5-Ausgabeversion mehr
Version 3.252.0
Hinzugefügt
- Single-Pass-Formularfeld-Aktionserkennung mit typisierten Aktionsdetails über primäre, Widget- und Feld-Trigger hinweg hinzugefügt
- Vollständige Berechnungsreihenfolge-Aufzählung, Suche pro Feld und Entfernung für interaktive Formulare hinzugefügt
- Bulk-Formularfeld-Snapshots um Berechnungsreihenfolge und Aktionsanzahl erweitert
Geändert
- Widget-Lebenszyklus-Trigger unterstützen nun Aktionen für Seite öffnen, Seite schließen, Seite sichtbar und Seite ausgeblendet mit der erforderlichen PDF-1.5-Versionsbehandlung
Version 3.251.0
Hinzugefügt
- Single-Pass-Aufzählung benannter Ziele über ältere Katalogeinträge und moderne Namensbäume hinweg mit aufgelösten Seiten- und Ansichtsparametern hinzugefügt
- Entfernung benannter Ziele, vollständige Beschriftungen für Drucktasten, Positionierung von Schaltflächentexten und Namen für Formularfeld-Mappings hinzugefügt
- Bulk-Formularfeld-Snapshots um Mapping-Namen, Schaltflächenbeschriftungen und Positionen von Schaltflächentexten erweitert
Behoben
- Die Bearbeitung von Namensbäumen unterstützt nun direkte Zielwerte und verwendet eine eindeutige Multi-Knoten-Indexkodierung
Version 3.250.0
Hinzugefügt
- Single-Pass-Formularfeld-Snapshots mit Feldidentität, Typ, Seite, Flags, Werten und Choice-Status hinzugefügt
- Typisierte Choice-Feld-Flag-Abfragen sowie validierte Zugriffsfunktionen für den ausgewählten Index und den obersten sichtbaren Index hinzugefügt
Behoben
- Einfachauswahl-Choice-Felder behalten kein Mehrfachauswahl-
/I-Array mehr bei, und der Wechsel von Mehrfachauswahl zu Einfachauswahl ersetzt nun das alte/V-Array durch einen String-Wert
Version 3.249.0
Hinzugefügt
- Zustandsbehaftete Textsuchtraversierung in einem Durchgang hinzugefügt, sodass Anwendungen zwischengespeicherte Treffer durchlaufen können, ohne Seiten doppelt zu extrahieren
- Bulk-Export von Formularwerten und namensbasierte Anwendung mit optionalem Schutz für schreibgeschützte Felder hinzugefügt
Version 3.248.0
Hinzugefügt
- Behaltene Viewer-Auswahlen mit Geometrie im Seitenbereich, extrahiertem Text, Aufzählung, Löschung und einem ablehnbaren Marquee-Ereignis hinzugefügt
- Präzise Bitmap-Erfassung des aktuellen Ansichtsbereichs und Dateiausgabe einschließlich persistenter Overlays hinzugefügt
Version 3.247.0
Hinzugefügt
- Unabhängige Viewer-Steuerelemente für die Formularbearbeitung durch den Benutzer und die Aktivierung von Anmerkungen hinzugefügt
- Konfigurierbare Vordergrundfarbe für Text- und Choice-Formulareditoren hinzugefügt
Version 3.246.0
Hinzugefügt
- Typisierte Linienendstile, Forminnenfarben, Link-Hervorhebungsmodi, FreeText-Ausrichtung, geöffneter Zustand von Text-Anmerkungen und Caret-Symbole hinzugefügt
- Anmerkungs-Setter validieren kompatible Untertypen und erhöhen bei Bedarf automatisch die minimale PDF-Version
Version 3.245.1
Behoben
- Seitengröße und Memo-Layout beim FastReport-Export korrigiert, sodass A4-Berichte ihren beabsichtigten Maßstab beibehalten, Text innerhalb der Memo-Grenzen bleibt und unkonfigurierte Memo-Rahmen ausgeblendet bleiben
Version 3.245.0
Hinzugefügt
OnPasswordhinzugefügt, sodass Anwendungen nach der Zurückweisung der ursprünglichen Anmeldeinformationen durch ein verschlüsseltes Dokument ein anderes Passwort bereitstellen können- Passwort-Wiederholungsversuche funktionieren nun konsistent für Datei-, Stream- und String-Ladevorgänge, legen die Nummer des nächsten Versuchs offen und ermöglichen dem Handler den Abbruch
Sicherheit
- Passwort-Callbacks sind auf insgesamt sechzehn Versuche beschränkt und jeder Wiederholungsversuch verwendet einen neuen Parser und Entschlüsselungsstatus
Version 3.244.0
Hinzugefügt
SetXMPPropertyExzum sicheren Schreiben skalarer Eigenschaften in vom Aufrufer definierten XMP-Namensräumen hinzugefügt- Benutzerdefinierte XMP-Werte werden über das XML-DOM escaped, wiederholte Schreibvorgänge ersetzen die passende Namespace-Eigenschaft und ungültige oder reservierte XML-Namen werden abgewiesen
Version 3.243.0
Hinzugefügt
- Typisierte Dokumenten-Lebenszyklus-Aktionen für die Trigger vor dem Schließen, vor dem Speichern, nach dem Speichern, vor dem Drucken und nach dem Drucken hinzugefügt
- Typisierte Aktionen zum Öffnen und Schließen von Seiten mit gemeinsamer Unterstützung für URI-, benannte, JavaScript-, Formular- und Ziel-Aktions-Builder hinzugefügt
- Aktionsinspektions- und -entfernungsmethoden für jeden Dokumenten- und Seitenlebenszyklus-Trigger hinzugefügt
Version 3.242.0
Hinzugefügt
SaveChangeshinzugefügt, um Änderungen an die ursprünglich geladene Datei anzuhängen und die aktualisierte xref-Kette für wiederholte inkrementelle Speicherungen automatisch neu zu ladenSaveChangesvalidiert das Reload-Passwort vor dem Schreiben und behält das ausgewählte öffentliche Dokument-Handle nach dem Reload bei
Geändert
AppendToFilelehnt nun ein Ziel ab, dessen aktuelle Länge sich von der geladenen Quelle unterscheidet, was das Anfügen veralteter inkrementeller Offsets an eine extern geänderte Datei verhindert
Version 3.241.0
Hinzugefügt
GetLastOutlineundGetLastChildOutlinefür den direkten Zugriff auf das Ende einer Lesezeichenliste hinzugefügtGetOutlineChildCountundGetOutlineSiblingIndexfür die leichtgewichtige Überprüfung von Lesezeichenbäumen ohne Zuweisung eines vollständigen Baum-Snapshots hinzugefügt
Version 3.240.0
Hinzugefügt
SaveAllAttachmentsExmit Richtlinien für Überschreiben, Überspringen und automatische Umbenennung bei Konflikten sowie einem Benennungs-Callback pro Anhang hinzugefügt- Anhangsexporte reduzieren nun angeforderte Namen auf sichere Leaf-Namen und schützen für Windows reservierte Gerätenamen
Behoben
- Fehler in
SaveAllAttachmentsbehoben, bei dem die Funktion zurückkehrte, ohne Dateien zu schreiben, da der Anhang-Snapshot zwar gezählt, aber nicht zugewiesen und befüllt wurde
Version 3.239.0
Hinzugefügt
OnPageMouseDown,OnPageMouseMoveundOnPageMouseUphinzugefügt, sodass Viewer-Hosts einsbasierte Seitennummern und Top-Down-PDF-Punktkoordinaten unabhängig von Zoom, Scrollen und Ansichtsrotation erhaltenRegionAtClientPoint,ActiveRegionundOnActiveRegionChangehinzugefügt, um Links, Nicht-Link-Annotationen und Formularfelder beim Ein- oder Austreten des Zeigers zu unterscheidenCreatePDFlibViewerDefaultPopupMenuundInstallPDFlibViewerDefaultPopupMenuhinzugefügt, die die vorhandenen Viewer-Aktionsklassen zu einem fertigen Kontextmenü für Kopieren, Zoom, Anpassen, Drehen, Navigation, Speichern und Drucken zusammensetzen
Version 3.238.0
Hinzugefügt
OnOperationProgressmit typisierter Operationsart, Lebenszyklusphase, aktuellen und gesamten Einheiten, Prozentsatz und Detailtext hinzugefügt, während der klassischeOnProgress-Prozentsatz-Callback erhalten bleibt- Einstiegspunkte für Datei, Stream und String zum Laden, Speichern, Suchen, Zusammenführen und Rendern von Seiten melden nun Start- und Endphasen; Operationen mit Zwischenfortschritt melden zudem
opRunning - Das Festlegen von
CancelwährendopStartingoderopRunningaktiviert den vorhandenenAbort-Status und bietet alten sowie neuen Aufrufern einen gemeinsamen Abbruchpfad
Behoben
LoadFromFilebehält nun den Fehlercode 404 für ein falsches Passwort bei, anstatt ihn nach dem Bereinigen mit dem generischen Ladefehler 401 zu überschreiben
Version 3.237.0
Hinzugefügt
SearchTextEachundTPDFlibSearchHitEventhinzugefügt, um jeden Texttreffer sofort auszugeben, ohne ein Ergebnisarray zuzuweisen oder zu dimensionierenSearchTextundSearchTextEachmelden nun den Seitenfortschritt überOnProgressund berücksichtigen sowohlAbortals auch den Callback-Abbruch, wobei der Callback-Abbruch bisResetAbortden vorhandenen Abbruch-Status nutzt- Das Suchfeld und die Suchhervorhebungsebene des Viewers nutzen nun die Streaming-API in einem Durchgang, wodurch die bisherigen Limits von 256 Zeilen und 512 Hervorhebungen entfallen
Behoben
- Die Ganzwortsuche wird nun über ein früheres Vorkommen eines Teilstrings im selben Textblock fortgesetzt, um eine spätere, korrekt begrenzte Übereinstimmung zu finden
Version 3.236.0
Hinzugefügt
GetPrinterCapabilitieszum Erfassen eines Live-Druckertreiber-Snapshots ohne Starten eines Druckauftrags hinzugefügt- Das typisierte Ergebnis
TPDFlibPrinterCapabilitiesenthält Papier-IDs, Namen und Millimeterabmessungen, Zufuhrfach-IDs und -Namen, Unterstützung für Duplex, Farbe, Querformat und Sortierung, den Druckeranschluss sowie die maximal vom Treiber gemeldete Kopienanzahl - Treiber, die Papier- oder Fach-Metadaten auslassen, geben dennoch die verbleibenden Funktionen mit leeren Arrays zurück, während ungültige Druckernamen einen vollständig bereinigten Snapshot liefern
Version 3.235.0
Hinzugefügt
SendDocumentByMailzum Speichern des geladenen Dokuments in einer temporären PDF-Datei und zum Versenden als SMTP-Anhang über den integrierten Windows-CDO-Provider hinzugefügt- Referenzgezählter Erweiterungspunkt
IPDFlibMailProviderhinzugefügt, sodass Anwendungen einen anderen Transport bereitstellen, Nicht-Windows-Hosts unterstützen und E-Mail-Workflows ohne Netzwerkzugriff testen können - Jeder Versand verwendet ein isoliertes temporäres Verzeichnis, bereinigt den Anzeigenamen des Anhangs und entfernt sowohl die PDF-Datei als auch deren Verzeichnis nach der Rückkehr des Providers, wobei
GetLastMailErrorValidierungs-, Speicher-, Transport- und Plattformfehler meldet
Version 3.234.0
Hinzugefügt
- Variablenplatzhalter für Stempel-, Kopf- und Fußzeilentext hinzugefügt:
<%PageNo%>,<%TotalPages%>,<%ShortDate%>,<%LongDate%>,<%ShortTime%>und<%LongTime%>werden nun neben den klassischen &-Token pro Seite aufgelöst - Jeder benutzerdefinierte Platzhalter
<%name%>wird über das neueOnCalcVariable-Ereignis aufgelöst, das den Namen und die Seitennummer empfängt und den Ersatz liefert – fortlaufende Nummern, Chargencodes und Clientfelder werden ohne Vorverarbeitung des Textes gestempelt, wobei unbekannte Platzhalter ohne Handler unverändert bleiben
Version 3.233.0
Hinzugefügt
- Hochgestellt-/Tiefgestellt-Erkennung zur Textextraktion hinzugefügt: das neue
GetTextBlockVAlignmeldet die Basislinienklassifizierung jedes extrahierten Textblocks (0 = Basislinie, 1 = hochgestellt, 2 = tiefgestellt) relativ zu seiner visuellen Zeile, sodass chemische Formeln, Exponenten und Fußnotenzeichen erkannt werden können - Ein Block wird als hoch- oder tiefgestellt klassifiziert, wenn er merklich kleiner als der dominante Text der Zeile ist und sein vertikales Zentrum innerhalb einer Texthöhe über oder unter dem dominanten Zentrum liegt
Version 3.232.0
Hinzugefügt
- Worttrennung auf Zeichenebene zur Textextraktion hinzugefügt:
SetTextExtractionOptions(17, 1)teilt Textsegmente ohne Leerzeichen überall dort wieder in Wörter auf, wo ein zeichenweiser Schritt viel breiter als der mittlere Glyphenschritt des Segments ist – Dokumente, die ganze Zeilen als einen einzigen Operator mit Kerning-Lücken statt Leerzeichen zeichnen, werden nun in denGetPageText-Modi 7 und 9-11 als separate Wörter extrahiert - Die Breitenarrays bleiben an den verbreiterten Text angepasst, sodass Block-Quads und zeichenweise Breitenangaben konsistent bleiben
Version 3.231.0
Hinzugefügt
- Layout-erhaltenden Festgitter-Textexport hinzugefügt:
GetPageText(11)bildet die Seitengeometrie auf ein dicktengleiches Zeichengitter ab – Zeilen gruppieren sich nach Basislinie, jeder Block landet in seiner aus der durchschnittlichen Zeichenbreite berechneten Spalte, und kürzere Zellen werden mit echten Leerzeichen aufgefüllt, sodass Tabellen und Formulare in Text-Viewern, Terminals und Diffs ohne Tabstopps ihre visuelle Ausrichtung behalten - Die Referenzseite für
GetPageTextdokumentiert nun die Modi für Lesereihenfolge (9), tabulatorgetrennte Tabellen (10) und Festgitter (11)
Version 3.230.0
Hinzugefügt
- Entfernung von Bindestrichen zur Textextraktion hinzugefügt:
SetTextExtractionOptions(16, 1)fügt über Zeilenumbrüche hinweg getrennte Wörter ("inter-" am Zeilenende gefolgt von "national" wird zu "international") in den zeilenorientierten Ausgaben derGetPageText-Modi 7 und 9 wieder zusammen - Die Heuristik führt eine Zusammenführung nur durch, wenn dem Bindestrich ein Buchstabe vorausgeht und die nächste Zeile mit einem Kleinbuchstaben beginnt, sodass numerische Bereiche, Eigennamen und Großbuchstaben am Satzanfang ihre Bindestriche behalten
Version 3.229.0
Hinzugefügt
OnBeforeSnapshot-Ereignis für dasTPDFlibViewer-Steuerelement hinzugefügt: es wird ausgelöst, bevor ein Snapshot-Ziehbereich mit dem gezogenen Bereich erfasst wird, wobei das Festlegen von Handled die standardmäßige Zwischenablageerfassung abbricht, sodass Anwendungen den Bereich selbst verarbeiten könnenPrefetchEnabledfreigelegt: Der Hintergrund-Prerender-Worker kann nun zur Laufzeit aus- und eingeschaltet werden (der Worker stoppt sofort und startet auf dem geöffneten Dokument neu)DiskCacheMaxDocumentsfreigelegt: Die Anzahl der Dokumente, die der sitzungsübergreifende Festplatten-Seitencache vor dem Bereinigen aufbewahrt, ist nun anpassbar (Standardwert 10)
Version 3.228.0
Hinzugefügt
- Präzise Navigation für das
TPDFlibViewer-Steuerelement hinzugefügt:GoToPagePointspringt zu einer Seite und scrollt einen bestimmten Seitenpunkt in die obere linke Ecke des Ansichtsbereichs, sodass Linkziele und Suchtreffer exakt im Sichtfeld landen - Programmatische Scrollsteuerung hinzugefügt: Pixelweises Verschieben über
ScrollBy, les- und schreibbare EigenschaftenHScrollPos/VScrollPos(ideal für die Synchronisierung zweier nebeneinander liegender Viewer desselben Dokuments) sowieGetScrollPosForPagezur Meldung des Scroll-Ankers jeder Seite im fortlaufenden Modus - Öffentliche Koordinatenbrücken
ClientPointToPageundPageRectToClientRectzur Konvertierung zwischen Client-Pixeln und dem Seiten-Benutzerraum durch Zoom, Rotation und Scrollen hinzugefügt, wobei das interne Hit-Testing nun die exakte Geometrie des Zeichenpfads teilt und auch auf übergeordneten-losen (headless) Steuerelementen funktioniert
Version 3.227.0
Hinzugefügt
- Ansichtsstatus-Ereignisse für das
TPDFlibViewer-Steuerelement hinzugefügt:OnZoomChangewird bei jeder effektiven Zoombewegung (expliziter Zoom, voreingestellte Stufen, Neuberechnung des Anpassungsmodus bei Größenänderung, Rotation oder DPI-Änderung) ausgelöst, undOnHScroll/OnVScrollfolgen der Scrollposition, sodass Symbolleisten und Statusanzeigen ohne Polling synchron bleiben - Das Ziehen des vertikalen Scrollbalken-Schiebers zeigt nun ein schwebendes „Seite N / M“-Bubble an, das eine Vorschau auf die Seite gibt, auf der die Ansicht landen wird – eine große Hilfe in langen Dokumenten; die Eigenschaft
ScrollHintEnabled(standardmäßig aktiviert) schaltet dies aus
Version 3.226.0
Hinzugefügt
- Befüllungs- und Speicherschleife im
TPDFlibViewer-Steuerelement vervollständigt:SaveToFileundSaveToStreamschreiben das angezeigte Dokument – einschließlich übernommener Formularänderungen – zurück auf die Festplatte oder in einen Stream, wobei jeder geöffnete In-Place-Editor zuerst speichert - Mehrzeilige Textfelder werden nun in einem echten mehrzeiligen Memo bearbeitet: Eingabetaste fügt einen Zeilenumbruch ein, Strg+Eingabetaste speichert, Escape bricht ab; einzeilige Felder behalten das einfache Verhalten bei, dass die Eingabetaste speichert
- Tab und Umschalt+Tab führen den In-Place-Editor durch die bearbeitbaren Text- und Auswahlfelder des Dokuments, wobei der Seite des jeweiligen Felds gefolgt wird, und
FocusNextFormFielddieselbe Navigation programmatisch bereitstellt
Version 3.225.0
Hinzugefügt
- Stufenweises Zooming für das
TPDFlibViewer-Steuerelement hinzugefügt:ZoomInStepundZoomOutSteprasten den Zoom auf die standardmäßige voreingestellte Sequenz (1, 5, 10, 25, 50, 75, 100, 150, 200, 400, 800, 1600, 2400, 3200 Prozent) ein, ausgehend vom aktuell wirksamen Zoom, sodass die Anpassungsmodi natürlich durchlaufen werden; die Zoomaktionen der Symbolleiste nutzen nun dieselbe Stufenleiter - Strg+Mausrad zoomt nun entlang der voreingestellten Stufenleiter, während das einfache Mausrad weiterhin scrollt
- Tastaturkurzbefehle hinzugefügt: Strg+'+' / '-' stufen den Zoom ab, Strg+1 / 2 / 3 wechseln zur Originalgröße, Breite anpassen und Seite anpassen, und Umschalt+Nach-oben / Nach-unten springen zur ersten und letzten Seite
Version 3.224.0
Hinzugefügt
CreateSelfSignedCertificatemit Delphi-, DLL- und ActiveX-Einstiegspunkten hinzugefügt: erzeugt ein selbstsigniertes RSA-Zertifikat (SHA-256-Signatur, konfigurierbarer Betreff, Gültigkeit und Schlüssellänge) und exportiert es mit seinem privaten Schlüssel in eine passwortgeschützte PFX-Datei, bereit fürSignFileund die Signaturprozess-APIs – so können Signatur-Workflows ohne externe Zertifizierungsstelle erstellt und getestet werden- Das Zertifikat wird in einem flüchtigen Schlüsselcontainer erstellt, der nach dem Export gelöscht wird; nur die PFX behält das Schlüsselmaterial, wobei selbstsignierte Zertifikate für Tests und interne Dokumente gedacht sind und von Viewern als nicht vertrauenswürdig eingestuft werden, es sei denn, sie werden explizit installiert
Version 3.223.0
Hinzugefügt
TPDFlibShapeWatermarkzur zusammensetzbaren Wasserzeichen-Ebene hinzugefügt: Rechtecke, Kreise, Ellipsen, Polygone, Bezier-Kurvenketten und gerade Linien werden mit Füll- und Strichfarben, Linienbreite und Deckkraft über denselbenApplyWatermark-Einstiegspunkt wie Text- und Bildwasserzeichen auf einen Seitenbereich gestempelt- Rechteck-, Kreis- und Ellipsenformen bestimmen ihre Größe über Width/Height; Polygon-, Kurven- und Linienformen beziehen ihre Geometrie aus
SetPoints(lokale X,Y-Paare), sodass das Neun-Punkt-Position-Raster und die benutzerdefinierte Platzierung für jede Formart gelten; degenerierte Geometrie (zu wenige Punkte) wird abgewiesen
Version 3.222.0
Hinzugefügt
AddLinkToEmbeddedPDFmit Delphi-, DLL- und ActiveX-Einstiegspunkten hinzugefügt: Ein Seiten-Hotspot, der ein im aktuellen Dokument eingebettetes PDF (unter seinem EmbeddedFiles-Namen) öffnet und dort zu einer ausgewählten Seite springt, unter Verwendung der standardmäßigen eingebetteten GeheZu-Aktion (/GoToE) von ISO 32000-1 §12.6.4.4 mit einer optionalen Anforderung für ein neues Fenster; die Dokumentversion erhöht sich automatisch auf PDF 1.6GetAnnotActionInfound die zugehörigen Outline-/Formularfeld-Geschwister erkennen nun eingebettete GeheZu-Aktionen und melden den neuen TypakGoToEzusammen mit dem Namen des eingebetteten Ziels, der Eltern-/Kind-Zielbeziehung, der optionalen Dateispezifikation und dem /NewWindow-Flag
Version 3.221.0
Hinzugefügt
SetSignProcessAppearanceTextmit Delphi-, DLL- und ActiveX-Einstiegspunkten hinzugefügt: Digitale Signaturen können nun ein automatisch generiertes, sichtbares Text-Erscheinungsbild anzeigen, das sich aus dem Namen des Unterzeichners, dem Grund, dem Ort und dem Signaturdatum zusammensetzt, mit optionalen beschreibenden Beschriftungen ("Signed by:", "Reason:", ...), die über eine Bitmaske ausgewählt werden- Der Textblock wird innerhalb des Signaturfeld-Rechtecks in Helvetica mit einer konfigurierbaren Farbe angeordnet; Schriftgröße 0 passt die Zeilen automatisch an das Feld an. Ein über
SetSignProcessFieldImageFromFilefestgelegtes Feldbild behält den Vorrang, und Dokument-Zeitstempelprozesse ignorieren das Text-Erscheinungsbild
Version 3.220.0
Hinzugefügt
- Interaktives Formularausfüllen zum
TPDFlibViewer-Steuerelement hinzugefügt: Das Klicken auf ein Kontrollkästchen oder ein Optionsfeld schaltet dieses um, und das Klicken auf ein Text- oder Auswahlfeld öffnet einen In-Place-Editor über dem Feld (Enter bestätigt, Escape bricht ab, Verlassen des Editors bestätigt); schreibgeschützte Felder werden nicht verändert und die geänderte Seite wird automatisch neu gerendert - Jeder Schreibvorgang löst das neue Ereignis
OnFormFieldValueChangedaus, undHighlightFormFieldsmitFormHighlightColorzeichnet einen durchscheinenden Hintergrund über jeden ausfüllbaren Bereich, sodass Benutzer Formularfelder erkennen können - Programmatische Gegenstücke
FormFieldAtPagePoint,GetFormFieldPageRect,ToggleCheckBoxField,SetFormFieldValueAndRefresh,BeginEditFormFieldundCommitInplaceEditorhinzugefügt, welche dieselbe Engine ohne Mauseingabe steuern
Version 3.219.0
Hinzugefügt
- Anmerkungsinteraktion zum
TPDFlibViewer-Steuerelement hinzugefügt: Das Klicken auf eine Anmerkung, die kein Link ist, löst das neue EreignisOnAnnotClickmit Seite, Anmerkungsindex und Untertyp aus, undAnnotAtPagePointmacht den Treffertest programmatisch verfügbar (Popup-Begleiter werden übersprungen) - Das Bewegen des Mauszeigers über eine Anmerkung zeigt nun deren Contents-Text als Hinweis des Steuerelements an (der standardmäßig aktivierte Schalter
AnnotHintsarbeitet mit der StandardeigenschaftShowHintzusammen) SaveAnnotAttachmentToFilezum Schreiben der eingebetteten Datei einer FileAttachment-Anmerkung auf die Festplatte hinzugefügt, wodurch Click-to-Save-Workflows für Anhänge im Viewer vervollständigt werden
Version 3.218.0
Hinzugefügt
- Sitzungsübergreifenden Festplatten-Seitencache zum
TPDFlibViewer-Steuerelement hinzugefügt: Das Festlegen vonDiskCacheFolderspeichert gerenderte Seiten dauerhaft auf der Festplatte, sodass ein kürzlich angesehenes Dokument ohne erneutes Rendern sofort wieder geöffnet wird - Zwischengespeicherte Seiten werden durch einen Fingerabdruck aus Pfad, Größe und letzter Schreibzeit des Dokuments identifiziert, sodass die Bearbeitung der Datei deren veraltete Seiten automatisch ungültig macht; der Cache behält bis zu zehn Dokumente und entfernt die am längsten nicht verwendeten
- Zähler
DiskCacheHitshinzugefügt, der meldet, wie viele Seitenrenderings durch den Festplattencache eingespart wurden
Version 3.217.0
Hinzugefügt
- Unit
PDFlibViewerActionsmit zwanzig vorgefertigtenTAction-Nachkommen fürTPDFlibViewerhinzugefügt, sodass Symbolleisten und Menüs ohne Glue-Code funktionieren: Seitennavigation (First/Prior/Next/Last), Zoom (In/Out/FitWidth/FitPage/ActualSize), Ansichtsrotation (im/gegen den Uhrzeigersinn), Drucken, Dialoge zum Öffnen und Speichern von Dateien, Kopieren von ausgewähltem Text und die fünf Mauswerkzeug-Modus-Schalter - Jede Aktion zielt über ihre
Viewer-Eigenschaft auf einen Viewer und hält ihren aktivierten Zustand (Dokument geöffnet, Seitenposition, Auswahl vorhanden) sowie ihren ausgewählten Zustand (aktiver Zoom-Fit oder Mauswerkzeug) automatisch aktuell; alle Aktionen registrieren sich in der losLab PDF-Kategorie für den Action List-Editor TPDFlibViewer.EffectiveZoomPercenthinzugefügt, die den tatsächlich wirksamen Zoom (einschließlich berechneter FitWidth-/FitPage-Faktoren) zurückgibt, sodass Zoomstufen darauf aufbauen können
Version 3.216.0
Hinzugefügt
- Suchtreffer-Hervorhebung zum
TPDFlibViewer-Steuerelement hinzugefügt:HighlightSearchHitsdurchsucht das gesamte Dokument und zeichnet einen durchscheinenden Balken über jede Übereinstimmung, der beim Scrollen, Zoomen und Rotieren an seiner Position bleibt, mitClearSearchHighlights,SearchHighlightCountund einer konfigurierbarenSearchHighlightColor TPDFlibSearchPanel.RunSearchzeichnet nun auch die Trefferbalken im angehängten Viewer (die neue, standardmäßig aktivierte EigenschaftHighlightInViewschaltet dies aus), sodass Suchergebnisse auf den Seiten und nicht nur in der Trefferliste sichtbar sind
Version 3.215.0
Hinzugefügt
- Mauswerkzeug-Modi zum
TPDFlibViewer-Steuerelement über die neue EigenschaftViewerModehinzugefügt:vmSelectTextauswahl (Standard),vmHandVerschieben durch Ziehen mit einem Greif-Cursor (ein einfacher Klick folgt weiterhin Links),vmZoomAuswahllisten-Zoom, der den gezogenen Bereich vergrößert, um den Viewport auszufüllen,vmSnapshotBereichserfassung in die Zwischenablage undvmHighlightdauerhafte durchscheinende Bereichshervorhebung CaptureRegionzum Rendern eines beliebigen Client-Bereichs (Seiten plus Hervorhebungen) in eine aufruferseitig verwaltete Bitmap, das EreignisOnSnapshotund den SchalterSnapshotToClipboardfür die Snapshot-Handhabung sowieAddHighlightRegion/ClearHighlightRegions/HighlightRegionCountmit einer konfigurierbarenHighlightColorfür seitenverankerte Hervorhebungen, die Zoom, Rotation und Navigation überdauern, hinzugefügt
Version 3.214.0
Hinzugefügt
- Druckfunktion zum
TPDFlibViewer-Steuerelement hinzugefügt:PrintDoczeigt den Standard-Windows-Druckdialog (Druckerauswahl, Seitenbereich, Kopien, Sortierung) an und übergibt den Auftrag an die Druck-Engine der Bibliothek, währendPrintDoc(False)das gesamte Dokument ohne Benutzeroberfläche auf dem Standarddrucker ausdruckt PrintDocRangefür vollständig programmatisches Viewer-Drucken mit explizitem Druckernamen, Seitenbereich, Kopienanzahl und Sortierungsflag hinzugefügt
Version 3.213.0
Hinzugefügt
- Ansichtsrotation zum
TPDFlibViewer-Steuerelement hinzugefügt:RotateClockwise90undRotateAntiClockwise90drehen die angezeigten Seiten in 90-Grad-Schritten, und die EigenschaftViewRotationliest oder schreibt den Winkel direkt (0, 90, 180 oder 270) - Die Rotation ist ein reines Ansichtsattribut: Das Dokument wird niemals geändert, das Klicken auf Links und die Textauswahl funktionieren in jedem Winkel weiterhin, die Zoommodi "Breite anpassen" und "Seite anpassen" passen sich an die rotierte Seitenform an, und das Öffnen eines neuen Dokuments setzt die Ansicht auf 0 Grad zurück
- Rotierte Seiten-Bitmaps werden pro Winkel zwischengespeichert, sodass das Umschalten zwischen Winkeln vorherige Renderings wiederverwendet, anstatt neu zu rendern
Version 3.212.0
Geändert
- Kompatibilität von XFA-Datensätzen mit SOM-Pfaden verbessert:
GetXFAFormFieldValueundSetXFAFormFieldValueakzeptieren nun einfache Prädikatsselektoren im FormCalc-Stil wie$data.Receipt.Detail.[Total_Price > 200].Descriptionund aktualisieren jeden passenden Datenknoten, wenn ein Prädikat eine Teilmenge auswählt
Version 3.211.0
Geändert
- Kompatibilität von XFA-Datensätzen mit SOM-Pfaden verbessert:
GetXFAFormFieldValueundSetXFAFormFieldValueakzeptieren nun Data-DOM-Klassenselektoren#dataGroupund#dataValuemit numerischem Vorkommen oder Platzhaltern, was klassenbasierte Pfade wie$data.Receipt.#dataGroup[0].#dataValue[0]ermöglicht
Version 3.210.0
Geändert
- Kompatibilität von XFA-Datensätzen mit SOM-Pfaden verbessert:
GetXFAFormFieldValueundSetXFAFormFieldValueakzeptieren nun den Stamm$recordin Paketen ohne Datensatzverarbeitung, sodass Pfade wie$record.Taxund$record/Detail[0]/Total_Priceaus dem äußeren Datensatz-Element aufgelöst werden
Version 3.209.0
Geändert
- XFDF-Anmerkungsaustausch verbessert: Anmerkungsexporte schreiben nun standardmäßige Rahmenstil-Attribute
width,styleunddashesaus PDF-Anmerkungswerten/BS, und Anmerkungsimporte stellen diese Attribute bei eingefügten Anmerkungen wieder her
Version 3.208.0
Geändert
- XFDF-Anmerkungsaustausch verbessert: Anmerkungsexporte schreiben nun standardmäßige Attribute
creationdateundopacityaus PDF-Anmerkungswerten/CreationDateund/CA, und Anmerkungsimporte stellen diese Attribute bei eingefügten Anmerkungen wieder her
Version 3.207.0
Geändert
- XFDF-Anmerkungsaustausch verbessert: Anmerkungsexporte schreiben nun standardmäßige Namen für
flagsaus PDF-Anmerkungswerten/F, und Anmerkungsimporte stellen diese Namen in den Flags der eingefügten Anmerkungen wieder her
Version 3.206.0
Geändert
- Kompatibilität von XFA-Datensätzen mit SOM-Pfaden verbessert:
GetXFAFormFieldValueundSetXFAFormFieldValueakzeptieren nun direkte Kind-Platzhalter-Selektoren wie$data.Receipt.*.Total_Pricezum Lesen oder Aktualisieren passender Kind-Zweige, ohne gleichnamige Felder auf dem übergeordneten Knoten auszuwählen
Version 3.205.0
Geändert
- Kompatibilität von XFA-Datensätzen mit SOM-Pfaden verbessert:
GetXFAFormFieldValueundSetXFAFormFieldValueakzeptieren nun Nachkommen-Selektoren wie$data..Total_Priceund$data.Receipt..Total_Pricezum Lesen oder Aktualisieren des ersten übereinstimmenden Nachkommen-Datenknotens
Version 3.204.0
Geändert
- Kompatibilität von XFA-Datensätzen mit SOM-Pfaden verbessert:
GetXFAFormFieldValueundSetXFAFormFieldValueakzeptieren nun die Eigenschaftparentin Pfaden wie$data.Receipt.Detail[1].parent.Taxzum Lesen oder Aktualisieren der Geschwisterdaten des Vaters eines ausgewählten Knotens
Version 3.203.0
Geändert
- SOM-Vorkommensbehandlung für XFA-Datensätze verbessert:
GetXFAFormFieldValueundSetXFAFormFieldValueunterstützen nun[*]-Selektoren wie$data.Receipt.Detail[*].Total_Pricezum Lesen oder Aktualisieren jedes passenden wiederholten Datenknotens
Version 3.202.0
Geändert
- XFA SOM-Pfadkompatibilität verbessert: XFA-Datensätze und Template-Feld-APIs behalten nun literale Punkte in durch Schrägstriche getrennten Feldpfaden bei und akzeptieren maskierte Punkte wie
Line\.Itemin durch Punkte getrennten SOM-Pfaden
Version 3.201.0
Geändert
- Pfadkompatibilität von XFA-Datensätzen verbessert: APIs für XFA-Feldwerte akzeptieren nun durch Schrägstriche getrennte Pfade nach Standard-Daten-SOM-Stämmen wie
$data/...,xfa.datasets.data/...undxfa.datasets/...
Version 3.200.0
Geändert
- SOM-Kompatibilität von XFA-Datensätzen verbessert: APIs für XFA-Feldwerte akzeptieren nun die standardmäßige Kurzform
!data..., einschließlich durch Schrägstriche getrennter!data/...-Pfade
Version 3.199.0
Geändert
- XFA-Template-Pfadkompatibilität verbessert: APIs für die Template-Bearbeitung akzeptieren nun durch Schrägstriche getrennte Feldpfade, die von der XFA-Feldnamensaufzählung zurückgegeben werden, einschließlich
$template/...-Pfade
Version 3.198.0
Geändert
- Namensraumkompatibilität von XFA-Datensätzen verbessert: APIs für Feldwerte lesen und aktualisieren Datenknoten nun anhand des lokalen XML-Namens, wenn die Geschäftsdaten innerhalb des Datensatzpakets ihr eigenes Namensraumpräfix verwenden, und die Feldnamensaufzählung gibt präfixfreie Pfade zurück
Version 3.197.0
Geändert
- XFDF-Anmerkungsaustausch verbessert: Anmerkungsexporte enthalten nun die gemeinsamen Attribute
nameunddateaus PDF/NMund/M, Anmerkungsimporte stellen diese Werte bei eingefügten Anmerkungen wieder her, undSetAnnotStrPropertyakzeptiert nun Tag 104 für das Änderungsdatum von Anmerkungen
Version 3.196.0
Geändert
- XFA-Feldnamensaufzählung verbessert: Feldlisten-APIs scannen nun jeden übergeordneten Datensatz im Datensatzpaket und geben Blattdatenfelder zurück, ohne Containergruppen als Felder hinzuzufügen
Version 3.195.0
Geändert
- Kompatibilität von XFA-Datensätzen verbessert: APIs für XFA-Feldwerte lesen und aktualisieren nun vollständige XDP-Pakete, deren Datensatzpaket ein präfixfreies
data-Element verwendet
Version 3.194.0
Behoben
- Aktualisierungen von XFA-Template-Feldern verbessert: APIs für XFA-Template-Felder akzeptieren nun Standard-Template-SOM-Stämme wie
$templateundxfa.template, und reine Template-Änderungen in vollständigen XDP-Streams werden korrekt gespeichert
Version 3.193.0
Geändert
- XFA-Feldadressierung verbessert: APIs für XFA-Feldwerte akzeptieren nun zusätzlich zu relativen Feldpfaden Standard-Daten-SOM-Stämme wie
$dataundxfa.datasets.data
Version 3.192.0
Geändert
- XFA-XML-Paketbehandlung verbessert: XFA-Streams mit UTF-16-Byte-Reihenfolgemarken oder UTF-16-XML-Byte-Mustern werden nun vor dem XML-Parsing decodiert, sodass UTF-16-codierte Formularwerte über APIs für das Lesen/Schreiben von XFA-Feldern verfügbar bleiben
Version 3.191.0
Geändert
- Erstellung von XFA-Paketen verbessert:
SetXFAFromStringerstellt nun den erforderlichenAcroForm-Container, wenn ein Dokument noch keine Formulardaten enthält, ersetzt den veralteten geparsten XFA-Zustand, wenn ein vollständiges XFA-Paket gespeichert wird, und hält das gespeicherte Paket über APIs für das Lesen/Schreiben von XFA-Feldern verfügbar
Version 3.190.0
Geändert
- XFDF-Anmerkungsaustausch verbessert: Anmerkungsexporte schreiben nun das gemeinsame Attribut
coloraus dem PDF/CRGB-Array, und Anmerkungsimporte stellen nuncolor="#RRGGBB"-Werte im Farb-Array der eingefügten Anmerkung wieder her
Version 3.189.0
Hinzugefügt
- XFDF-Anmerkungsaustausch-APIs hinzugefügt:
ExportAnnotationsToXFDF,ExportAnnotationsToXFDFString,ImportAnnotationsFromXFDFundImportAnnotationsFromXFDFStringlesen und schreiben nun ISO 19444<annots>-Daten für textbasierte Anmerkungskommentare, einschließlich Seiten-, Rechteck-, Titel-, Betreffs- und reinen Inhaltsdaten
Version 3.188.0
Geändert
- XFDF-Richtextfeld-Import verbessert: Felder mit
<value-richtext>behalten nun die Richtext-XML im FeldwertRVbei, während sie weiterhin den reinen<value>-Fallback anwenden, sofern vorhanden
Version 3.187.0
Geändert
- XFDF-Formulardatenaustausch für Mehrfachauswahlfelder verbessert: Wiederholte
<value>-Elemente werden nun in das Array der ausgewählten Werte importiert, und der Export eines Mehrfachauswahlfelds schreibt nun ein<value>-Element pro ausgewähltem Element, anstatt sie in einen einzigen maskierten Textknoten abzuflachen
Version 3.186.0
Geändert
- XFDF-Formulardatenexport für Richtextfelder verbessert: Felder mit einem
RV-Richtextwert enthalten nun ein<value-richtext>-Element, während der reine<value>-Fallback beibehalten wird
Version 3.185.0
Geändert
- XFDF-Formulardatenimport für Richtextfelder verbessert: Wenn ein Feld
<value-richtext>ohne ein einfaches<value>bereitstellt, extrahiert der Importer nun den XHTML-Textinhalt und wendet ihn auf das entsprechende AcroForm-Feld an, anstatt das Feld zu überspringen
Version 3.184.0
Geändert
- XFDF-Formulardatenaustausch verbessert: Exporte verwenden nun den standardmäßigen XFDF-Namensraum mit
xml:space="preserve", geben verschachtelte<field>-Elemente für hierarchische AcroForm-Namen aus, überspringen Werte nicht-terminaler übergeordneter Felder, schreiben Dateiexporte als UTF-8 und importieren gegenüber Leerraum tolerantes XFDF mit verschachtelten Feldern, Attributen in einfachen Anführungszeichen, CDATA, XML-Entitäten und numerischen Zeichenreferenzen
Version 3.183.0
Hinzugefügt
SanitizeDocument(Flags)hinzugefügt, das sensible Inhalte in einem Aufruf entfernt: Es löscht sämtliches globales JavaScript, entfernt die OpenAction des Katalogs, entfernt /A-Aktionen aus allen Anmerkungen, leert die Metadaten Author/Subject/Keywords/Creator/Producer sowohl in /Info als auch in XMP und löscht optional alle Anmerkungen. Die Flag-BitsSANITIZE_JAVASCRIPT/SANITIZE_ACTIONS/SANITIZE_METADATA/SANITIZE_ANNOTATIONS/SANITIZE_OPEN_ACTIONlassen sich kombinieren;SANITIZE_ALLwendet alle Bereinigungen an. Damit wird die klassische Datenlücke geschlossen, bei der eine Schwärzung sichtbare Inhalte entfernt, Metadaten oder verborgene Skripte jedoch wiederherstellbar bleibenTPDFAnnots.RemoveAnnotAction(Index)hinzugefügt, um das /A-Aktionswörterbuch aus einer einzelnen Anmerkung zu entfernen; die Methode wird von SanitizeDocument verwendet und kann auch eigenständig eingesetzt werden
Version 3.182.0
Hinzugefügt
- Von
EnumPageElementszurückgegebene Bildelemente enthalten nun ihr tatsächliches Platzierungsrechteck (Left/Top/Right/Bottom) anstelle von Nullen. Unterstützt durch eine neue MethodeTPDFContentProgram.EnumImagePlacements, die den Inhaltsstrom durchläuft, die CTM (cm/q/Q) verfolgt und das 1x1-Einheitsquadrat jedesDo-Operators in Seitenkoordinaten abbildet - Vier Showcase-Demos hinzugefügt: DocumentProperties (DocInfo/Seitenbox/Rotation/Übergang/Viewer-Einstellungen/XMP-Roundtrip), FormProperties (Eigenschaftsraster pro Feld: Typ/Wert/Schreibgeschützt/MaxLength/MultiLine/Beschreibung), SignatureValidator (Signaturfelder auflisten + überprüfen + Unterzeichnerzertifikat), Reader (VCL TPDFlibViewer mit Öffnen/Navigieren/Zoomen/Textkopieren)
Version 3.181.0
Hinzugefügt
SetXMPPropertyhinzugefügt, das die vorhandene schemabewusste XMP-Engine (PDFlibXMP) über die öffentliche Fassade bereitstellt: Beliebige Eigenschaften von Dublin Core (dc:), XMP Basic (xmp:), Adobe PDF (pdf:), PDF/A ID (pdfaid:), PDF/UA ID (pdfuaid:) oder XMP Media Management (xmpMM:) lassen sich anhand von Namensraum und Schlüssel setzen, ohne RDF-XML von Hand zu schreibenImportFormDataFromFDF/ImportFormDataFromFDFStringhinzugefügt, die ein FDF-/Fields-Array analysieren, in dem jeder Eintrag die Form<< /T (name) /V (value) >>hat, und jeden Wert anhand des Titels auf das passende AcroForm-Feld anwenden, wobei die oktalen und klammerbezogenen EscapePDFText-Escapes rückgängig gemacht werden. Damit wird die asymmetrische Lücke des bislang reinen Exports geschlossenExportFormDataToXFDF/ExportFormDataToXFDFString/ImportFormDataFromXFDF/ImportFormDataFromXFDFStringfür den bidirektionalen XFDF-Austausch (XML Forms Data Format) hinzugefügt, das moderne XML-Gegenstück zu FDF- Die sechs namensraumspezifischen XMP-Setter (
SetDublinCore,SetXMPBasic,SetAdobePDF,SetPDFA,SetPDFUA,SetXMPMM) wurden aufTPDFlibXMPöffentlich gemacht, damit fortgeschrittene Aufrufer die Engine direkt steuern können
Version 3.180.0
Hinzugefügt
SearchAndReplaceTextInContenthinzugefügt, das eine ECHTE Textersetzung im Inhaltsstrom durchführt (durch direktes Überschreiben der Textanzeige-Operatoren Tj/TJ/'/" viaTPDFContentProgram.ReplaceTextRun), im Gegensatz zum bestehenden maskenbasiertenSearchAndReplaceText, das nur ein Rechteck über die ursprünglichen Glyphen legt. Der Originaltext ist aus dem Datenstrom gelöscht und kann nicht wiederhergestellt werden. Findet Übereinstimmungen viaSearchText, ordnet jedes Treffer-Rechteck überFindInstructionsInRectseiner abdeckenden Anweisung zu, schreibt diese um und schreibt die Ebene zurück
Version 3.179.0
Hinzugefügt
- Strukturierten internen Logger (
TPDFlibLogger) in einer neuen UnitLib/PDFlibLogger.pashinzugefügt, mit vier Stufen (Debug/Info/Warn/Error), einem Host-Callback (OnLog), einem optionalen threadsicheren Dateiausgabepfad und einer Fehlercode-zu-Nachrichten-Zuordnung (PDFlibErrorMessage), die den vorhandenen numerischen Codes (1xx/3xx/4xx/5xx) endlich lesbaren Text zuweist. Bereitgestellt aufTPDFlibüber die EigenschaftLogger RenderPagesToFilesParallelhinzugefügt, das einen Seitenbereich in eine Datei pro Seite rendert, unter Verwendung einesTTask-Pools mit einerTPDFlib-Instanz pro Worker (TPDFlib ist nicht threadsicher) undCoInitializepro Thread für die GDI+-Apartment-Sicherheit. Skaliert bei CPU-gebundener Rasterausgabe nahezu linear mit den CPU-Kernen
Version 3.178.0
Hinzugefügt
EnumCertificateshinzugefügt, um jedes Zertifikat in einem Windows-Systemzertifikatspeicher ("MY", "Root", ...) aufzulisten, wobei Betreff, Aussteller, Seriennummer, Gültigkeitszeitraum, HasPrivateKey und Qualified (eIDAS QCStatements-Erweiterung, OID 0.4.0.1862.1.7, erkannt über einen neuen integrierten DER-Decoder in PDFlibASN1) zurückgegeben werden - ersetzt die bisherige Beschränkung vonSetSignProcessCertFromStoreauf ein einzelnes Zertifikat per Common Name (CN)SetSignProcessCertFromStoreByHandlehinzugefügt, um ein Signaturzertifikat über das durch Auflistung erhaltene rohe PCCERT_CONTEXT-Handle auszuwählen, sodass Aufrufer nach beliebigen Kriterien (qualifizierter Filter, Gültigkeit, Fingerabdruck) anstelle von nur Subject CN auswählen könnenRedactRegionhinzugefügt, das Text, Vektorpfade und Bild-XObjects, deren gezeichneter Bereich ein Rechteck schneidet, wirklich entfernt (durch Bearbeitung des Inhaltsstroms, sodass entfernte Inhalte im Gegensatz zuMaskRect, das sie nur abdeckt, nicht wiederhergestellt werden können), mit optionaler schwarzer Füllung und /Redact-Anmerkung. Unterstützt durch einen CTM-verfolgenden Inhaltsstrom-Analysator in PDFlibContentModel (FindInstructionsInRect)- Minimale DER-Decoder-Funktionen (
DERDecodeLength,DERFindExtensionByOID) zu PDFlibASN1 hinzugefügt, um Zertifikatserweiterungen in-process ohne CryptDecodeObjectEx zu untersuchen
Version 3.177.0
Hinzugefügt
- Seiten-Stitching-APIs hinzugefügt, die vorhandene Seiten über Vektor-Form-XObject-Erfassung in neue Layouts zusammensetzen (behält die volle Vektortreue im Gegensatz zur Verkettung von Inhaltsströmen bei):
StitchPageOverlaylegt eine Seite an einer Position mit optionaler Deckkraft über eine andere,StitchPagesSideBySideplatziert zwei Seiten links/rechts auf einer neuen breiteren Seite, undStitchPagesVerticallystapelt einen Seitenbereich auf eine neue hohe Seite im Posterformat - Kombinierbare Wasserzeichen-Vorlagenebene in einer neuen Unit
Lib/PDFlibWatermark.pashinzugefügt:TPDFlibWatermarkBasemit Neun-Punkte-Positionierung (wpTopLeft..wpBottomRightpluswpCustom),TPDFlibTextWatermark,TPDFlibImageWatermarkundTPDFlibCompositeWatermark, die eine Liste von Unterwasserzeichen auf einen gemeinsamen Seitenbereich anwendet TPDFlib.ApplyWatermarkals praktischen Einstiegspunkt hinzugefügt, der an den eigenen Seitenbereich und die Einstellungen einer Wasserzeichenvorlage delegiert
Version 3.176.0
Hinzugefügt
- Benannte Konstanten für das Rendering-Ausgabeformat (
PDF_RENDER_BMP,PDF_RENDER_EMF,PDF_RENDER_EMFPLUS,PDF_RENDER_EMF_DUALusw.) hinzugefügt, die 1:1 auf die vonRenderPageToFile,RenderPageToStream,RenderPagesToFilesundRenderDocumentToFileakzeptierten ganzzahligenOptions-Werte abgebildet werden TPDFlibMetafileFormat-Enum und die praktischen MethodenRenderPageToMetafileStreamsowieRenderPageToMetafileFilehinzugefügt, die eine benannte Metadateivariante (mfEMF, mfEMFPlus, mfEMFDual, mfWMF) anstelle einer reinen Ganzzahl akzeptieren- Ausgabemodus EMF+ Dual (Options-Wert 11 / mfEMFDual) hinzugefügt, der sowohl GDI- als auch GDI+-Befehle in derselben Metadatei aufzeichnet, um die Kompatibilität mit älteren, reinen GDI-Consumern zu gewährleisten
TPDFlibClipboardFormat-Enum undRenderPageToClipboardhinzugefügt, wodurch eine gerenderte Seite als erweiterte Metadatei (CF_ENHMETAFILE), DIB-Bitmap (CF_DIB), Seiten-Unicode-Text (CF_UNICODETEXT) oder alle drei gleichzeitig in die Windows-Zwischenablage kopiert wird- Neue Unit
Lib/PDFlibClipboard.pasmit Low-Level-Win32-Zwischenablage-Hilfsmitteln hinzugefügt, die vonRenderPageToClipboardverwendet werden - Vollständige DPI-Erkennung pro Monitor (Per-Monitor DPI Awareness) für
TPDFlibViewerhinzugefügt: eine neue öffentliche EigenschaftScreenDPI, einCreateWnd-Override, das die DPI des Host-Monitors überGetDpiForWindow(mit einem Fallback aufGetDeviceCaps) automatisch erkennt, und einWM_DPICHANGED-Handler, der das Layout neu aufbaut und den Bitmap-Cache leert, wenn das Fenster zwischen Monitoren verschoben wird TPDFRenderer.SetEMFPlusMetafileTypehinzugefügt, um auf Rendererebene zwischen EMF+-Only- und EMF+-Dual-Aufzeichnung zu wählen
Behoben
- Referenzseite von
RenderPageToFilekorrigiert, auf der die Options-Werteliste fälschlicherweise in der Page-Zeile platziert war und die Options-Zelle leer blieb
Version 3.175.3
Hinzugefügt
- Die neue Unit Lib/PDFlibTableExport.pas rendert ein beliebiges TDataSet aus FireDAC, ClientDataSet oder einem Abfrageergebnis als mehrseitige PDF-Tabelle mit gestaltetem Tabellenkopf, alternierenden Zeilenfarben, rechtsbündigen Zahlenspalten und automatischer Seitenfortsetzung. Hinzu kommt die Delphi-Konsolendemo Demo/Delphi/DataSetExport, die das RAD Studio-Beispiel customer.FDS über FireDAC lädt und exportiert
Version 3.175.2
Hinzugefügt
- End-to-End-Projekte unter Demo/ReportBridges hinzugefügt, die einen minimalen Bericht in FastReport, QuickReport und ReportBuilder erstellen und über die passende Addons-Brücke als PDF exportieren, mit einer dedizierten build-ReportBridges.cmd, die die Quellpfade der Engine und Gating-Symbole bereitstellt, sodass der Standard-Demo-Build die Projekte weiterhin als Stubs kompiliert
Version 3.175.1
Hinzugefügt
- Delphi-Demo für eine JBIG2-Optionen-Matrix hinzugefügt, die Kombinationen aus SymbolExtract, SkipBlackDots, BlackDotSize und LossyLevel gegen CCITT G4- und Flate-Baselines vergleicht, mit zeilenweisen PDF-, CSV- und Zusammenfassungs-Ausgaben
- Delphi-Muster-Showcase-Demo hinzugefügt, das axiale und radiale RGB-Shader, einen Coons-Patch-Mesh-Shader und ein benutzerdefiniertes Kachelmuster abdeckt, das als Füllung, Kontur und Textfarbe angewendet wird
- Delphi-CCITT-Fax-Matrix-Demo hinzugefügt, das Group 3 1-D, Group 3 2-D und Group 4-Kompression mit den Optionsbits BlackIs1 und Interpolate vergleicht und jede Ausgabegröße sowie den resultierenden /Filter-Namen meldet
- Export-Brücken für FastReport, QuickReport und ReportBuilder unter Addons hinzugefügt, die einen vorbereiteten Bericht jeweils über die nativen Objekt-, Metadatei- und DrawCommand-Oberflächen der Engine in ein PDF Library for Delphi-PDF rendern
Version 3.175.0
Geändert
- Demo WorkflowGallery um eine Anmerkungsvarianten-Matrix erweitert, die Texthervorhebungsfüllungen, Markup-Stile, Notizensymbole, Freitext, Caret- und Stempelanmerkungen in begleitenden CSV- und HTML-Berichten aufzeichnet
Version 3.174.0
Geändert
- C++Builder-Demo AdvancedWorkflowMatrix erweitert, um Aktionsnavigation, PDF/A- und AcroForm-Workflows, Schriftartendiagnose, Streaming-Bereitstellung und die neuesten Scan-Komprimierungshilfen in die generierten Matrixberichte einzubinden
Version 3.173.0
Hinzugefügt
- DeliveryWorkflowMatrix Delphi-Demo für gestreamte Web- und CGI PDF-Ausgabe, Seitenvorschaubild-Validierung und Wasserzeichen-Bereitstellungs-Workflows unter Verwendung eines einzigen generierten PDF-Bytepuffers hinzugefügt
Version 3.172.0
Hinzugefügt
- Praktische Gliederungsbaum-APIs für geordnete Geschwister-Einfügung, Kind-Erstellung, Teilbaum-Löschung und Gliederungsaufzählung mit Betreff, Geschwister, Ebene, Zielseite, Gliederungszustand und Titeldetails hinzugefügt
Version 3.171.0
Hinzugefügt
- Konsolendemo FontDiagnosticsMatrix Delphi für CJK- und Unicode-Schriftpfade, TrueType-Subset-Updates, Prüfungen installierter Schriftarten, Dokumentschriftarten-Auflistung und Schriftartendiagnoseberichte hinzugefügt
Version 3.170.0
Hinzugefügt
- Konsolendemo CanvasMigrationMatrix Delphi für Canvas DC-Migration, rohe Inhalts- und Pfadeinstiegspunkte, Delphi-Farbhilfen, musterbasierten Text, Wasserzeichen, Seitenvorschau-Workflows und gerenderte Validierungsvorschauen hinzugefügt
Version 3.169.0
Hinzugefügt
- Spezielle Delphi-Konsolendemos LayerCompositionMatrix, TransparencyMaskMatrix und ComplianceFormWorkflowMatrix für optionale Inhalts-Druck-/Exportrichtlinien, Pattern-/Form-XObject-Komposition, Transparenzmaskenvergleich, PDF/A-1b-Erfolgs- und -Fehlerbeispiele, AcroForm-Aktionsworkflows, Darstellungswiederaufbau und sichtbare Signaturvorlagen hinzugefügt
Version 3.168.0
Hinzugefügt
- Spezielle Delphi-Konsolendemos ImageCompressionMatrix und SecurityPermissionMatrix mit generierten PDF-, CSV- und HTML-Berichten für die Auswahl der Bildkomprimierungsstrategie, Scan-Komprimierung, JPEG-Renderqualität und die Überprüfung verschlüsselter Berechtigungsprofile hinzugefügt
Version 3.167.0
Hinzugefügt
- Benannte Hilfs-APIs für JBIG2-Bitmap-Codierung, EMF-Importoptionen, AcroForm-Ereignisaktionen und verkettete Aktionen hinzugefügt, sodass Aufrufer explizite Optionsschalter anstelle der manuellen Erstellung ganzzahliger Bitmasken verwenden können
Version 3.166.0
Hinzugefügt
- Ausführbare Konsolendemo C++Builder AdvancedWorkflowMatrix mit PDF-, CSV- und HTML-Ausgaben hinzugefügt, die erweiterte Canvas-Migration, EMF-Import, Bildkomprimierung, AcroForm, Signatur, Sicherheit, PDF/A, optionale Inhalte, Muster und Form-XObject-Workflows auf C++Builder-Projekteinstiegspunkte abbildet
Version 3.165.0
Hinzugefügt
- Delphi-Demo für eine Aktions-Navigations-Matrix hinzugefügt, die Dokumentöffnungs-Aktionen, JavaScript auf Dokumentebene, eingebettete Dateilinks, Remote-GoTo-Links, AcroForm-Ereignisaktionen, Submit/Reset/Hide-Linkhilfen und verkettete Next-Aktionen mit PDF-, CSV- und HTML-Ausgaben demonstriert
Behoben
- Hilfsfunktionen für Remote-Dateilinks korrigiert, sodass AddLinkToFile, AddLinkToFileEx, AddLinkToFileDest und Links zum Starten lokaler Dateien eine Anmerkung erstellen und zurückkehren, anstatt unendlich zu schleifen
Version 3.164.0
Hinzugefügt
- Eine Delphi-PDF/A-Prüfmatrix-Demo that checks early rejection or allowed-path decisions for PDF/A mode setup, transparency, blend modes, encryption, JavaScript, multimedia, embedded files, and PDF/A-3 associated-file workflows, with generated PDF, CSV, and HTML reports
Version 3.163.0
Hinzugefügt
- Eine explizite ReportAdapter-Brückenmatrix for FastReport, QuickReport, ReportBuilder, DBGrid, and custom canvas export paths, including generated CSV and HTML mapping output plus a PDF page that shows the reusable adapter strategy
Version 3.162.0
Hinzugefügt
- Eine erweiterte Workflow-Demo-Matrix that generates concrete outputs for canvas migration, EMF import options, image compression comparisons, AcroForm action workflows, visible empty signatures, security permissions, PDF/A-1b checks, optional content, tiling patterns, Form XObjects, DBGrid-style table export, and large-file peak memory reporting
Version 3.161.0
Hinzugefügt
- Delphi-Hilfsfunktionen für kompakte Open-Document-Aktionskonstruktion, form-field visibility event actions, TColor and gray color setters, and direct raw content, path, text, and matrix content stream injection
Version 3.160.0
Hinzugefügt
- Delphi-Hilfsfunktionen für Bitmap-zu-JBIG2-Scanned-Image-Komprimierung, one-call image mask and color-key transparency setup, GoTo action chaining, and readable AcroForm event names for JavaScript or existing action assignment
- Erweitert
ImportEMFFromFileExundImportEMFFromStreamExso theirOptionsflags can force bitmap import, enable EMF color-image JPEG recompression, and request GDI+ processing controls
Version 3.159.1
Geändert
- Verbessert wurde
SaveToStreamund das Speichern über gebundene Ausgabestreams so large PDF stream objects are written in bounded chunks instead of copying each stream object into one intermediate output string
Version 3.159.0
Hinzugefügt
- Bildplatzierungs-Hilfsfunktionen ergänzt that draw or fit a specified image and release its handle immediately afterward, with Delphi, DLL, and ActiveX entry points for lower peak memory in one-use image generation workflows
RenderPageToMonochromeFileExfür 1-Bit-BMP-Rendering mit Schwellwertkonvertierung und Bereinigung isolierter schwarzer Pixel vor Workflows zur Komprimierung gescannter Bilder hinzugefügt
Version 3.158.1
Hinzugefügt
- Delphi-Workflow-Demos für wiederverwendbaren Report-Export, RichEdit-to-EMF rich text import, and combined page-thumbnail, annotation, form XObject, table, compression, JavaScript, and bound-stream output scenarios
Version 3.158.0
Hinzugefügt
- Steuerungs-APIs für die Metadatenverschlüsselung with Delphi, DLL, and ActiveX entry points: SetEncryptMetadata can write Standard-security PDFs with unencrypted XMP metadata streams, while GetEncryptMetadata reports the pending or loaded /EncryptMetadata state
Version 3.151.0
Hinzugefügt
DrawPie,DrawChord,DrawEllipticPieundDrawEllipticChordergänzt for explicit closed circular and elliptic arc drawing with outline, fill, or fill-and-outline modes
Version 3.150.0
Hinzugefügt
NewGraphicsStateundSetGraphicsStateergänzt so callers can create reusable ExtGState resources for combined fill transparency, stroke transparency, line width, line cap, line join, and miter-limit settings
Version 3.149.1
Behoben
- Doppelte ActiveX-Dispatch-IDs behoben for the Form XObject and miter-limit methods so late-bound COM callers resolve each method unambiguously
Version 3.149.0
Hinzugefügt
SetMiterLimitergänzt for paths that use miter joinsBeginFormXObject,EndFormXObjectundCancelFormXObjectüber die DLL- und ActiveX-APIs verfügbar gemacht through the DLL and ActiveX APIs
Version 3.148.0
Hinzugefügt
- Wiederverwendbare Form-XObject-Builder-APIs ergänzt:
BeginFormXObject,EndFormXObject, andCancelFormXObjectlet callers draw a reusable template with normal page drawing calls and place it repeatedly through captured-page drawing APIs
Version 3.147.0
Hinzugefügt
SetTextTilingPatternundSetLineTilingPatternergänzt so captured-page tiling patterns can be reused for text, underline, and stroked graphics without duplicating drawing commands
Behoben
- Kontur-Shader- und Kachelmusterfarben schreiben jetzt den Konturmuster-Farboperator, statt den Nichtkontur-Farbzustand zu aktualisieren
Version 3.146.0
Hinzugefügt
BeginOptionalContentundEndOptionalContentergänzt so callers can mark only subsequent drawing commands with an optional content group without rewriting the existing content stream
Behoben
- Bereichsschließende Marked-Content-Operatoren werden jetzt sofort ausgegeben, wenn optionale Inhalte, Tagged-PDF- oder Artefakt-Bereiche am Ende eines Inhaltsstroms geschlossen werden
Version 3.145.0
Hinzugefügt
SetTransparencyExergänzt so callers can set separate fill and stroke transparency values for subsequently drawn text and graphics while keeping the existing PDF 1.4 auto-upgrade behavior
Version 3.144.0
Hinzugefügt
AddLinkToNamedDestinationergänzt so a page hotspot can jump to a same-document named destination without resolving the target page at link creation time
Behoben
- Anmerkungsaktionsleser geben jetzt keine Aktion zurück for pages without annotations instead of dereferencing an empty annotation cache
Version 3.143.0
Hinzugefügt
- Formularfeld-Aktionsverwaltungs-APIs ergänzt so callers can bind an existing action to a field trigger, inspect the typed trigger action, and remove primary or additional field actions
Behoben
FormFieldJavaScriptActionlehnt jetzt PDF/A documents and invalid trigger names instead of writing non-conforming field action dictionaries
Version 3.142.0
Hinzugefügt
- Aktionsverkettungs-APIs ergänzt so callers can append URI, named, and JavaScript next-actions to an existing annotation, outline, or form-field action and inspect chained actions through
GetActionNextCountandGetActionNextInfo
Version 3.141.0
Hinzugefügt
AddLinkToSubmitFormundAddLinkToResetFormhinzugefügt, sodass Seiten-Hotspots AcroForm-Felder über Standard-PDF-Aktionen ohne JavaScript übermitteln oder zurücksetzen können
Version 3.140.0
Hinzugefügt
AppendToStreamhinzugefügt, sodass inkrementelle Aktualisierungsworkflows direkt in einen vom Aufrufer bereitgestellten Stream schreiben können, anstatt die Aktualisierung zuerst alsAnsiStringzu materialisieren
Geändert
SaveToStreamserialisiert nun direkt in den Zielstream, undAppendToString(1)gibt nur noch den inkrementellen Aktualisierungsabschnitt zurück, ohne die ursprünglichen Quellbytes in einen temporären Puffer zu kopieren
Version 3.139.0
Hinzugefügt
GetAnnotReplyToundGetAnnotReplyTypehinzugefügt, sodass strukturierte Anmerkungsantworten über benannte Lesezugriffe anstelle allgemeiner Anmerkungseigenschaft-Tags inspiziert werden können
Version 3.138.0
Hinzugefügt
- Das Delphi-Beispiel
DocumentInspectionWorkbenchhinzugefügt, um PDFs im Batch mit kombinierter Schriftendiagnose, Bild-Sampling, Farbraum-Erkennung, Ladezeitmessung und JSON-, CSV- und HTML-Berichten zu überprüfen
Version 3.137.0
Hinzugefügt
- Das Delphi-Beispiel
ImageDecodeBenchmarkhinzugefügt, um die Bilderkennung auf Seiten, dekodierte Bildbytes und die Farbraum-Erkennung mit CSV- und HTML-Zeitberichten zu messen
Version 3.136.0
Hinzugefügt
GetDocumentFontDiagnosticsundTPDFlibFontDiagnosticshinzugefügt, um die Einbettung von Dokumentenschriften, Subsetting, Standard 14, CID, Type3 und die Anzahl unbekannter Schriften in einem Aufruf zusammenzufassen
Version 3.135.0
Hinzugefügt
TPDFlibSignatureVerifier.VerifySignerCertificateChainerstellt nun die eingebettete Unterzeichnerzertifikatkette mit der Windows CryptoAPI und gibtvsValidnur zurück, wenn die Kette die Windows-Basistrustrichtlinie erfüllt, während selbstsignierte oder anderweitig nicht vertrauenswürdige UnterzeichnerzertifikatevsInvalidzurückgeben, ohne das Ergebnis der Inhaltsintegrität vonVerifySignaturezu ändern
Version 3.134.0
Behoben
TPDFlibSignatureVerifier.VerifySignaturevalidiert nun veralteteadbe.pkcs7.sha1-Signaturen und gibtvsValidzurück, wenn der signierte Digest mit den abgedeckten/ByteRange-Bytes übereinstimmt, undvsInvalidnach Änderungen an den abgedeckten Inhalten
Version 3.133.0
Hinzugefügt
RenderPagesToFilesundDARenderPagesToFileshinzugefügt, um beliebige Seitenbereiche in nummerierte Ausgabedateien zu rendern und dabei die Renderer-Konfiguration für die ausgewählten Seiten wiederzuverwenden
Version 3.132.0
Hinzugefügt
- Komfort-Stempel
AddPageHeaderundAddPageFooterhinzugefügt, die Text an einem festen oberen oder unteren Rand auf jeder Seite eines Bereichs platzieren, mit Links-/Zentriert-/Rechtsausrichtung und Token-Erweiterung (&Paktuelle Seite,&NGesamtseiten,&DDatum,&TDokumenttitel,&&wörtliches Kaufmanns-Und) StampTextundStampImagemitsoUnderlayplatzieren Inhalte nun wirklich unter vorhandenen Seiteninhalten, indem sie eine neue Inhaltsebene voranstellen (zuvor wurde wie beisoOverlaydarüber gezeichnet); unterstützt durch eine neue Seitenbaum-MethodePrependContentLayer
Version 3.131.0
Hinzugefügt
ScalePage(ScaleX, ScaleY, Anchor)hinzugefügt, was den Inhalt der ausgewählten Seite skaliert, indem jede Inhaltsebene in einen Grafikstatusblockq sx 0 0 sy tx ty cm ... Qgehüllt und die MediaBox und CropBox angepasst werden; der Anker behält den Ursprung unten links (0), zentriert den Inhalt (1) oder behält ihn oben links (2)EnumPageElementsum eine neue ElementartekPatherweitert: Jede Seite meldet nun auch ihre Vektorpfade mit einem Begrenzungsrahmen, Punktanzahl, Schließ-Flag und Maloperator, die über das strukturierte Inhaltsmodell aus den Inhaltsströmen gehoben werden
Version 3.130.0
Hinzugefügt
- Drei APIs zur Optimierung der Dateigröße hinzugefügt, die geladene Dokumente beim erneuten Speichern verkleinern:
SubsetEmbeddedFontsreduziert jedes eingebettete TrueType-Schriftprogramm (FontFile2) über den DienstCreateFontPackageder FontSub.dll auf die Unicode-Zeichen, die das Dokument tatsächlich rendert;DownsampleImages(MaxDPI, Quality, Filter)decodiert jedes Bild-XObject oberhalb der Ziel-DPI, führt ein Resampling (Box oder bilinear) durch und codiert es als JPEG oder PNG neu;NormalizeLZWStreamsschreibt jeden Stream, der noch mit LZWDecode gefiltert ist, durch den bestehenden LZW-Decoder und Flate-Encoder in FlateDecode um, wobei Predictor-Parameter erhalten bleiben
Version 3.129.0
Hinzugefügt
- APIs zur Erstellung von Netz-Schattierungen (Mesh Shading) für die vier Schattierungstypen hinzugefügt, die zuvor nur Lese-/Parse-Unterstützung hatten:
NewRGBFreeFormTriangleMesh(ShadingType 4, Freiform-Gouraud-Dreiecke),NewRGBLatticeTriangleMesh(ShadingType 5, gitterförmige Gouraud-Netze),NewRGBCoonsPatchMesh(ShadingType 6, Coons-Patch-Netze) undNewRGBTensorPatchMesh(ShadingType 7, Tensor-Produkt-Patch-Netze) — jedes baut ein benanntes Netz-Schattierungsmuster aus einer flachen Vertex- oder Patchliste mit wählbarer Koordinaten-/Farb-Bittiefe und einem Begrenzungsrahmen, auswählbar mitSetFillShader/SetLineShader/SetTextShaderwie die bestehenden axialen und radialen Shader
Version 3.128.0
Hinzugefügt
- Eine Miniaturbildleiste für den Viewer hinzugefügt:
TPDFlibThumbnailBarzeigt eine Miniaturansicht jeder Seite an, die beim Scrollen der Zeilen in den Sichtbereich verzögert (lazy) gerendert wird, mit der Seitenzahl darunter; ein Klick auf ein Miniaturbild lässt den angehängten Viewer zu dieser Seite springen — dies vervollständigt die Viewer-Steuerelementfamilie (Viewer, Lesezeichen-Panel, Such-Panel, Miniaturbilder)
Version 3.127.0
Hinzugefügt
- Ein Such-Panel für den Viewer hinzugefügt:
TPDFlibSearchPanel.RunSearchdurchsucht das gesamte angehängte Dokument und listet eine Zeile pro Treffer mit der Seitenzahl und dem übereinstimmenden Text auf; ein Klick auf einen Treffer lässt den Viewer zu dieser Seite springen
Version 3.126.0
Hinzugefügt
- Ein Lesezeichen-Panel für den Viewer hinzugefügt:
TPDFlibOutlineViewerlistet den Dokumentengliederungsbaum mit Einrückung auf und lässt den angehängten Viewer (überAttachViewer) bei einem Klick zur Zielseite des Lesezeichens springen; es baut auf einer wiederverwendbaren Panel-Basisklasse auf, die spätere Seiten-Panels gemeinsam nutzen
Version 3.125.0
Hinzugefügt
- Textauswahl zum Viewer-Steuerelement hinzugefügt: Ziehen Sie mit der linken Maustaste zur Auswahl, drücken Sie Strg+C oder rufen Sie
CopySelectedTextauf, um die Auswahl in die Zwischenablage zu kopieren; der erfasste Text ist über die EigenschaftSelectedTextverfügbar, von oben nach unten geordnet mit Zeilenumbrüchen zwischen den Bändern GetTextInRegionhinzugefügt, welches den Text eines rechteckigen Seitenbereichs direkt zurückgibt — derselbe blockbasierte Suchvorgang, den die Mausauswahl verwendet, verfügbar für benutzerdefinierte Auswahloberflächen
Version 3.124.0
Hinzugefügt
- Das Viewer-Steuerelement rendert nun benachbarte Seiten in einem Hintergrund-Thread im Voraus, sodass beim Vor- oder Zurückblättern die nächste Seite sofort angezeigt wird; der Worker verwendet eine eigene Dokumenteninstanz und übergibt fertige Renderings an den Cache, ohne die Benutzeroberfläche zu blockieren
- Link-Interaktivität zum Viewer hinzugefügt: Ein Klick auf eine Link-Anmerkung löst
OnLinkClickmit der Seitenzahl und derselben typisierten Aktionszusammenfassung aus, dieGetAnnotActionInfoliefert (Webadresse, Dokumentenziel, benannte Aktion usw.);LinkActionAtPagePointmacht den zugrunde liegenden Treffertest für die benutzerdefinierte Handhabung zugänglich
Version 3.123.0
Hinzugefügt
- Das Viewer-Steuerelement verfügt nun über kontinuierliches Scrollen:
SetDisplayModeschaltetTPDFlibViewerzwischen Einzelseitenanzeige und kontinuierlichem vertikalen Scrollen durch das gesamte Dokument um, wobei nur die im Sichtbereich sichtbaren Seiten gerendert werden und die aktuelle Seite die Scrollposition verfolgt (wobeiOnPageChangeausgelöst wird, wenn Seiten in den Sichtbereich kommen) - Gerenderte Seiten werden nun in einem Least-Recently-Used-Bitmap-Cache (zuletzt am wenigsten genutzt) gehalten, sodass beim Hin- und Herscrollen kein erneutes Rendern erfolgt; das Speicherbudget beträgt standardmäßig 128 MB und wird mit
SetCacheLimitangepasst, wobei die ältesten Seiten verdrängt werden, wenn das Budget schrumpft oder voll ist - Mausrad-Scrollen und Tastaturnavigation zum Viewer hinzugefügt: Bild-auf/Bild-ab (Seitenschritte im Einzelseitenmodus, Sichtbereich-Schritte im kontinuierlichen Modus), Pfeiltasten, Pos1 und Ende
Version 3.122.0
Hinzugefügt
- Ein interaktives PDF-Viewer-Steuerelement hinzugefügt:
TPDFlibViewerist ein VCL-Scroll-Steuerelement, das ein Dokument aus einer Datei öffnet oder sich an eine bestehendeTPDFlib-Instanz anhängt, Seiten über die ausgewählte Rendering-Engine (GDI+, Cairo oder PDFium) anzeigt und Seitennavigation (GoToPage/NextPage/PrevPagemit einemOnPageChange-Ereignis) sowie Zoom-Steuerung bietet — ein fester Prozentsatz, an Breite anpassen oder an Seite anpassen, automatisch neu berechnet, wenn das Steuerelement die Größe ändert; Seiten, die breiter als der Sichtbereich sind, lassen sich scrollen, schmalere Seiten werden zentriert - Ein Entwurfszeit-Paket (
Package\PDFlibViewerPkg.dpk) hinzugefügt, das das Steuerelement auf der losLab PDF-Palettenseite zur Drag-and-Drop-Verwendung in der IDE registriert
Version 3.121.0
Hinzugefügt
- Automatisches Text-Shaping für komplexe Schriften in
DrawText: Text, der arabische, hebräische, indische oder andere komplexe Schriftzeichen enthält, wird nun automatisch erkannt und geformt — kontextuelle Buchstabenformen, obligatorische Ligaturen und Rechts-nach-Links-Anordnung werden ohne Codeänderungen korrekt ausgegeben; die Standard-14-Namen werden ihren metrikkompatiblen installierten Schriften zugeordnet (Helvetica zu Arial, Times zu Times New Roman, Courier zu Courier New) undGetTextWidthmisst über denselben Shaping-Durchlauf, sodass die Ausrichtung konsistent bleibt; lateinischer, kyrillischer, griechischer und CJK-Text behält seinen bestehenden Zeichnungspfad Byte für Byte bei SetTextShapinghinzugefügt, um das automatische Routing umzuschalten (standardmäßig aktiviert; übergeben Sie 0, um das genaue Verhalten vor dem Shaping wiederherzustellen)
Version 3.120.0
Geändert
- Begleitschriften für geformten Text (Shaped-Text) werden nun beim Speichern auf nur die Glyphen reduziert (Subsetting), die das Dokument anzeigt, was die Ausgabedateien drastisch verkleinert (ein vollständiges Schriftprogramm von über einem Megabyte wird auf die verwendeten Glyphen reduziert); die reduzierte Schriftart behält ihre Glyphennummerierung bei, trägt einen mit Subset-Tag versehenen
BaseFont-Namen und echte seiten- bzw. glyphenspezifische/W-Breiten und erhält eine ToUnicode-Tabelle, die jede geformte Glyphe wieder in ihre Quellzeichen übersetzt — sodass das Kopieren oder Extrahieren der Ausgabe vonDrawShapedTextdie ursprüngliche Zeichenfolge zurückgibt, einschließlich beider Buchstaben hinter einer Lam-Alef-Ligatur
Version 3.119.0
Hinzugefügt
- Textzeichnung für komplexe Schriften hinzugefügt:
DrawShapedTextformt arabische, hebräische und andere komplexe Zeichenfolgen, bevor sie gezeichnet werden — kontextuelle Buchstabenformen, obligatorische Ligaturen wie Lam-Alef und Rechts-nach-Links-Anordnung werden alle korrekt ausgegeben — und schreibt die geformten Glyphen über eine begleitende Type0 (Identity-H) Schriftart, die das gesamte Schriftprogramm einbettet, sodass Formen ohne eigenen Zeichencode exakt gerendert werden; pro Schriftbild wird eine Begleitschrift erstellt und über Aufrufe hinweg wiederverwendet GetShapedTextWidthhinzugefügt, welches Text über denselben Shaping-Durchlauf misst, sodass ligierter Text in seiner tatsächlichen gezeichneten Breite gemessen wird — verwenden Sie dies, um geformte Absätze rechtsbündig oder zentriert auszurichten
Version 3.118.0
Hinzugefügt
- Grundlage für das Text-Shaping komplexer Schriften hinzugefügt: Eine neue Uniscribe-Anbindung (usp10.dll) wandelt arabische, hebräische und andere Zeichenfolgen komplexer Schriften in korrekt geordnete und geformte Glyphendurchläufe um — kontextuelle arabische Formen, obligatorische Ligaturen wie Lam-Alef und die Sortierung von rechts nach links — wobei für jede Glyphe der Schriftart-Glyphenindex, der Vorschub und der Quellzeichen-Cluster gemeldet werden; dies ist die Shaping-Engine, auf der spätere Versionen den Zeichenpfad aufbauen, und sie wird verzögert geladen (lazy loading), sodass Plattformen ohne Uniscribe einfach den bestehenden zeichenweisen Pfad beibehalten
Version 3.117.0
Hinzugefügt
- ICC-Profil-Introspektion hinzugefügt:
GetOutputIntentICCInfoparst das an den OutputIntent des Dokuments angehängte ICC-Profil und meldet dessen Version, Geräteklasse, Datenfarbraum, Profilverbindungsraum, Rendering-Intent und Komponentenanzahl — nützlich zur Überprüfung der Druckbedingung von PDF/A- und PDF/X-Dateien; die Behandlung des ICCBased-Farbraums des Renderers leitet nun auch die Komponentenanzahl aus dem Profil-Header selbst ab, wenn der Farbraum einer Schattierung weder/Alternatenoch/Nenthält
Version 3.116.0
Hinzugefügt
- Einen tabellenbewussten Textextraktionsmodus hinzugefügt:
GetPageText-Option 10 fasst die linken Kanten der Textblöcke der Seite in globale Spaltenpositionen zusammen und gibt tabulatorgetrennte Zeilen aus, sodass tabellarische Layouts als importfertige TSV extrahiert werden, bei denen vertikal ausgerichtete Zellen über Zeilen hinweg ausgerichtet bleiben
Version 3.115.0
Hinzugefügt
- Seitenausschießung (Page Imposition) hinzugefügt:
ImposePagesNUplegt jede Seite des Dokuments auf neuen Bögen in einem n-up-Raster an (2-up, 4-up, 9-up oder jede beliebige Spalten x Zeilen-Anordnung), wobei jede Seite seitenverhältnistreu und zentriert als Live-Vektorinhalt in ihre Zelle eingepasst wird, oder — mit der Booklet-Option — produziert Bögen mit Rückenstichheftung, deren Seitenpaarung beim Duplexdruck und Stapeln zu einer Broschüre gefaltet werden kann
Version 3.114.0
Hinzugefügt
- Die typisierten Aktionsleser
GetAnnotActionInfoundGetOutlineActionInfoauf vier weitere Aktionsarten erweitert — Hide (mit der Anzahl der verborgenen Ziele und dem Hide/Show-Flag), SubmitForm (Sende-URL und Feldanzahl), ResetForm (Feldanzahl) und ImportData (Quelldatei) — und um die Namensnutzlast von Named-Aktionen (z. B.NextPage) offenzulegen; beide Leser teilen sich nun einen Parser, sodass Anmerkungslinks und Lesezeichen identische Informationen melden
Version 3.113.0
Hinzugefügt
- Formatierungshilfen für Formularfelder hinzugefügt:
SetFormFieldNumberFormat(Dezimalstellen, Trennzeichenstil, negativer Stil und Währungsplatzierung),SetFormFieldPercentFormatundSetFormFieldDateFormat(Acrobat-Datumsformat-Strings wiemm/dd/yyyy) schreiben jeweils das Standard-Acrobat-Formatierungs-JavaScript-Paar auf die zusätzlichen Aktionen des Feldes — einen Tastenanschlagfilter plus einen Anzeigeformatierer — sodass konforme Viewer die Eingabe validieren und formatierte Werte ohne handgeschriebenes JavaScript rendern können
Version 3.112.0
Hinzugefügt
- Erstellung von Tonanmerkungen (Sound Annotation) hinzugefügt:
AddSoundAnnotationFromFileliest eine unkomprimierte PCM-WAV-Datei (8 oder 16 Bit, Mono oder Stereo) und bettet ihre Samples hinter einer Lautsprechersymbol-Anmerkung als/Sound-Stream in der vom PDF-Soundmechanismus erwarteten vorzeichenbehafteten Codierung ein, womit der Roundtrip mit den bestehenden LesernGetAnnotSoundToFile/GetAnnotSoundToStringabgeschlossen ist
Version 3.111.0
Hinzugefügt
- Verkettete Anmerkungsantworten (Threaded Annotation Replies) hinzugefügt (ISO 32000-1 §12.5.6.3):
AddAnnotationReplyhängt eine Antwort an eine beliebige vorhandene Anmerkung als versteckte Textanmerkung an, deren/IRTmit der/RT-Antwortbeziehung auf das Ziel verweist, sodass Acrobat und andere Viewer sie im Kommentarbereich unter dem Ziel verkettet anzeigen; kombiniert mitAddAnnotationStateund dem FDF-Kommentaraustausch ermöglicht dies vollständige Roundtrips für kollaborative Überprüfungen
Version 3.110.0
Hinzugefügt
- Netz- (Mesh) und funktionsbasierte Schattierungs-Renderings hinzugefügt, wodurch die Abdeckung aller sieben PDF-Schattierungstypen abgeschlossen ist: Freiform-Gouraud-Dreiecksnetze (Typ 4), gitterförmige Gouraud-Netze (Typ 5), Coons-Patch-Netze (Typ 6) und Tensor-Produkt-Patch-Netze (Typ 7) werden aus ihren bitgepackten Datenströmen decodiert — einschließlich Shared-Edge-Patch-Flags,
/Decode-Wertezuordnung und optionaler Farb-/Function-Verläufe — und über die nativen Netzgradienten der Cairo-Engine gezeichnet; funktionsbasierte Schattierungen (Typ 1) werden angenähert, indem die Schattierungsfunktion über ihren Definitionsbereich in ein feines Patch-Raster abgetastet wird; unterstützte Farbräume umfassen DeviceRGB, DeviceGray, DeviceCMYK und ICCBased-Alternativen (die GDI+-Engine besitzt keine Grundform für Netzgradienten und lässt netzschattierte Bereiche unbemalt)
Version 3.109.0
Hinzugefügt
- Das Framework zur Inhaltsbearbeitung (Phase 4) mit textbasierter Bearbeitung abgeschlossen:
TPDFContentProgram.GetTextRunszählt die textanzeigenden Anweisungen einer Seite auf, mit der bei jeder einzelnen aktiven Schriftressource und -größe (Verfolgung des Schriftstatus durch Save/Restore-Verschachtelung), undReplaceTextRuntauscht den angezeigten Text an Ort und Stelle aus — ein echter Inhaltsstrom-Ersatz, der die ursprüngliche Position, Schriftart und Farbe beibehält, im Gegensatz zu überlagerungsbasierten Ansätzen, die den alten Text maskieren und darüber neu zeichnen
Version 3.108.0
Hinzugefügt
- Ein Objektmodell für die Seitengeometrie zum Framework zur Inhaltsbearbeitung (Phase 3) hinzugefügt:
TPDFContentProgram.LiftPathhebt ein Pfadobjekt (Konstruktionsoperatoren für Move/Line/Curve/Rectangle sowie die es beendenden Clipping- und Painting-Operatoren) in einen bearbeitbarenTPDFPathaus Teilpfaden und Segmenten an;TPDFPath.Transformwendet eine affine Matrix auf jeden Punkt an (verschieben, skalieren, drehen oder neigen von bestehenden Grafiken);LowerPathschreibt die geänderte Geometrie über die ursprünglichen Anweisungen zurück, bereit fürWritePageContentLayer
Version 3.107.0
Hinzugefügt
- Das Framework zur Inhaltsbearbeitung (Phase 2) um Komfortfunktionen auf Anweisungsebene in
TPDFContentProgramerweitert:InsertFromSourceparst einen Inhaltsausschnitt und fügt seine Anweisungen an einer beliebigen Position ein;SetOperandschreibt einen einzelnen Operanden aus der Quellsyntax um (eine Koordinate neu nummerieren, eine Füllung neu färben);OperandTextliest einen Operanden zurück;InstructionGroup,FindNextOpundFindNextGroupnavigieren durch die Anweisungsliste nach Operator oder nach der ISO-32000-1-Operatorkategorie
Version 3.106.0
Hinzugefügt
- Die erste Phase des Frameworks zur strukturierten Inhaltsbearbeitung hinzugefügt:
ParsePageContentLayerdecodiert die Inhaltsebene einer Seite in ein bearbeitbaresTPDFContentProgram— eine Liste von Anweisungen, wobei jede Anweisung ein PDF-Inhaltsoperator (alle 73 Operatoren nach ISO 32000-1 Tabelle 51) mit seinen decodierten Operandenobjekten ist — undWritePageContentLayerserialisiert das Programm zurück in die Seite, sodass Aufrufer Zeichenanweisungen parsen, überprüfen, löschen oder neu ordnen und die Seite umschreiben können;GetPageContentLayerCountmeldet die Anzahl der Inhaltsebenen, die unabhängig voneinander bearbeitet werden; der Emitter bewahrt das Verhalten (ein unmodifizierter Roundtrip wird pixelidentisch gerendert), unbekannte Operatoren bleiben unverändert erhalten und Inline-Bilder werden wortgetreu übernommen
Version 3.105.0
Hinzugefügt
- Einen Lese-Reihenfolge-Textextraktionsmodus hinzugefügt:
GetPageText-Option 9 gibt den Seitentext in visueller Lesereihenfolge mithilfe einer rekursiven Leerraumanalyse (XY-Schnitt) zurück, sodass mehrspaltige Layouts spaltenweise ausgegeben werden — zuerst eine Überschrift in voller Breite, dann die gesamte linke Spalte, dann die rechte Spalte — anstatt die Spalten zeilenweise zu verschachteln, wie es die geometrischen Oben-dann-Links-Reihenfolgen tun
Version 3.104.0
Hinzugefügt
- Introspektion von Unterzeichnerzertifikaten (Signer-Certificate Introspection) zum Signaturüberprüfer hinzugefügt:
GetSignerCertificatedecodiert die PKCS#7-Nutzlast des ersten Signaturfeldes und gibt eine typisierte Zusammenfassung des eingebetteten Unterzeichnerzertifikats zurück — Anzeigenamen von Betreff und Aussteller, die Seriennummer in konventioneller Hex-Form, das UTC-Gültigkeitsfenster (NotBefore/NotAfter) und ein Komfort-Flag, das anzeigt, ob sich das Zertifikat derzeit innerhalb dieses Fensters befindet; der Unterzeichner wird unter den eingebetteten Zertifikaten anhand des Ausstellers und der Seriennummer abgeglichen
Version 3.103.0
Hinzugefügt
NewRGBRadialShaderhinzugefügt, das radiale Gegenstück zuNewRGBAxialShader: Registriert einen benannten radialen Zwei-Kreis-Farbverlauf (ShadingType 3, ISO 32000-1 §8.7.4.5.3), der zwischen zwei RGB-Farben überblendet, mit optionaler Farberweiterung über die Kreise hinaus; auswählbar über die bestehenden FunktionenSetFillShader,SetLineShaderoderSetTextShader, um kreisförmige “Glow”-Füllungen, Striche und Texte zu malen
Version 3.102.0
Hinzugefügt
- Radiales (ShadingType 3) Verlauf-Rendering (ISO 32000-1 §8.7.4.5.4) hinzugefügt: Der Seitenrenderer zeichnet nun zusätzlich zu den bisher unterstützten axialen (ShadingType 2) Verläufen radiale Zwei-Kreis-Schattierungen, die von
sh-Operatoren und Shading-Pattern-Füllungen verwendet werden; unterstützt über die GDI+- und Cairo-Raster-Engines mit mehrstufigen (multi-stop) Farbfunktionen, DeviceRGB/DeviceCMYK/DeviceN/Separation/ICCBased-Farbräumen und/Extend-Behandlung
Version 3.101.0
Hinzugefügt
- Wolkige Rahmeneffekte hinzugefügt (ISO 32000-1 §12.5.4):
SetAnnotCloudyEffectverwandelt den Rahmen einer quadratischen, kreisförmigen, polygonförmigen oder Freitext-Anmerkung in eine “Revisionswolke” verbundener Halbkreise, indem das Randeffekt-Wörterbuch/BEgeschrieben wird, wobei Intensität 1 oder 2 mit den Cloudy-Stilen von Acrobat übereinstimmt und 0 den Effekt wieder entfernt;GetAnnotCloudyEffectliest die Einstellung zurück (0 = keine Wolke, andernfalls die Intensität von 1..2)
Version 3.100.0
Hinzugefügt
- Anmerkungs-Überprüfungsstatus (Annotation Review States) hinzugefügt (ISO 32000-1 §12.5.6.3):
AddAnnotationStatezeichnet eine Statusänderung für eine vorhandene Anmerkung auf, indem eine versteckte Textanmerkung angehängt wird, deren/IRTauf das Ziel zeigt und deren/State+/StateModelden Status übertragen, was dasReview-Modell (None/Accepted/Rejected/Cancelled/Completed) und dasMarked-Modell (Unmarked/Marked) unterstützt, die vom Kommentar-Workflow in Acrobat verwendet werden;GetAnnotStateundGetAnnotStateModellesen die aufgezeichneten Strings aus einer beliebigen Anmerkung zurück (leer, wenn nicht vorhanden)
Fehlerbehebung
- Einen Fehler zur Ladezeit behoben, der das Starten von mit jüngsten Entwicklungsversionen erstellten Anwendungen verhinderte (ein Windows-Zertifikatsnamens-Lookup war an einen nicht existierenden DLL-Einstiegspunkt gebunden), sowie Kompilier-Regressionen im FDF-Kommentar-Import, in der Seitenbereichsdrehung und bei Signatur-Flag-Pfaden repariert
Version 3.99.0
Hinzugefügt
- APIs zum Lesen des Dokumenten-Fingerabdrucks und des Übergangs hinzugefügt:
GetDocumentFileIDgibt den permanenten Dokumentenidentifikator aus dem Trailer-/ID-Array zurück (hex-kodiertes erstes Element), nützlich als stabiler Cache-Schlüssel oder Dokumenten-Fingerabdruck;GetPageTransitionist das leseseitige Gegenstück zuSetPageTransitionund gibt den Übergangsstil als typisiertenTPDFlibPageTransition-Wert plus Anzeigedauer und Übergangsdauer zurück, indem die gespeicherten Einträge/Trans/S,/Dmund/Mrückgemappt werden
Version 3.98.0
Hinzugefügt
- Seitenbereichsrotation und Thumbnail-Introspektion hinzugefügt:
RotatePageRangewendet eine 0/90/180/270-Rotation auf jede Seite in einem Bereich an (umhüllt das bestehende Einzelseiten-RotatePage, sodass Aufrufer keine Schleife pro Seite mehr benötigen);HasPageThumbnailmeldet, ob eine Seite einen/Thumb-Eintrag trägt;GetPageThumbnailInfoliest Breite, Höhe und Bits-per-Component des Thumbnail-Bild-XObjects
Version 3.97.0
Hinzugefügt
- Erweiterte Lese-APIs für Anmerkungseigenschaften hinzugefügt:
GetAnnotColorliest das/C-Farb-Array (0..1 RGB, mit einem HasColor-Flag, das „keine explizite Farbe“ von „explizitem Schwarz“ unterscheidet);GetAnnotBorderWidthliest/BS /W, greift auf das alte/Border-Array zurück;GetAnnotOpacityliest das Strich-Alpha/CA(Standard 1.0);GetAnnotCreationDateliest den/CreationDate-Zeitstempel;GetAnnotFlagsliest das Byte für Sichtbarkeits-/Druck-Flags/F
Version 3.96.0
Hinzugefügt
- Leseseitige Sicherheits-Introspektions-APIs hinzugefügt:
IsEncryptedmeldet, ob das geladene Dokument ein/Encrypt-Wörterbuch trägt;GetEncryptionLevelgibt eine typisierte Stärke zurück (0=keine, 1=RC4-40, 2=RC4-128, 3=AES-128, 4=AES-256, 5=AES-256 Acrobat X), die mit den Verschlüsselungsoptionen der Schreibseite übereinstimmt;GetUserPermissionsgibt das rohe/P-Berechtigungswort für direkte Bit-Tests zurück;IsOwnerPasswordmeldet, ob das Dokument mit dem Eigentümer-Passwort geöffnet wurde
Version 3.95.0
Hinzugefügt
- Erweitertes Drucken und Textersetzung hinzugefügt:
PrintDocumentAdvancedsteuert den vollen Drucker-DEVMODE (Duplex, Ausrichtung, Farbe, Druckqualität, Papierformat, Papierschacht) zusätzlich zu Kopien/Sortierung über einen typisiertenTPDFlibPrintSettings-Record und wendet jedes nicht standardmäßige Feld über den bestehenden benutzerdefinierten Druckerprofil-Mechanismus an;SearchAndReplaceTextführt eine Suche über einen Seitenbereich durch und maskiert für jeden Treffer den ursprünglichen Textblock mit einem deckenden weißen Rechteck und zeichnet den Ersatztext am Ursprung des Blocks in der vom Aufrufer gewählten Schriftart neu, was das Overlay-Replace-Verhalten von PDFtoolkit SearchAndReplace widerspiegelt
Version 3.94.0
Hinzugefügt
- Anmerkungs-FDF-Austausch hinzugefügt (Acrobat „Kommentare exportieren/importieren“):
ExportAnnotationsToFDFStringundExportAnnotationsToFDFdurchlaufen die/Annotsjeder Seite und serialisieren jede Anmerkung als/Type /Annot-Eintrag innerhalb eines FDF-/Annots-Arrays, wobei/Subtype,/Contents,/Rect, das Autorenlabel/T,/Subjund der 0-basierte/Page-Index übernommen werden;ImportAnnotationsFromFDFStringundImportAnnotationsFromFDFanalysieren ein solches FDF mit einem kleinen Zustandsautomaten und erstellen jeden Eintrag als neue Anmerkung auf der passenden Seite neu, wobei das vollständige Anmerkungswörterbuch erhalten bleibt, anstatt es auf eine Notiz zu reduzieren