PDFium Delphi Component Σημειώσεις έκδοσης
Ιστορικό εκδόσεων για λειτουργίες ορατές στον χρήστη, διορθώσεις, βελτιώσεις προβολής, παραγωγή εγγράφων, έξοδο PDF/A, απόδοση και ενημερώσεις τεκμηρίωσης του PDFium Delphi Component
Τελευταία έκδοση
- Τελευταία έκδοση: 3.117.0; Ημερομηνία κυκλοφορίας:
Version 3.117.0
Προστέθηκε (Added)
- Η ανίχνευση πινάκων διαβάζει περιγράμματα και σκιάσεις σχεδιασμένα ως γεμάτα ορθογώνια: ένα γεμάτο box με πάχος έως τη νέα
MaxRulingThicknessγίνεται ruling, ενώ ένα μεγαλύτερο γεμάτο box συνεισφέρει τις ακμές του, ώστε πίνακες που εξάγονται από Word, Google Docs και browsers να εντοπίζονται πλέον ως πλέγματα με rulings και συγχωνευμένες γραμμές caption αντί για τμήματα whitespace. ΤοDetectFilledRulingsαπενεργοποιεί αυτή τη συμπεριφορά - Οι συντεταγμένες των rulings κάνουν snap μέσα στο
RulingSnapToleranceπριν συναρμολογηθούν τα πλέγματα, κάτι που ενώνει τμήματα περιγραμμάτων ανά cell, διπλά περιγράμματα και σκιασμένα cells που χωρίζονται από μικρό διάκενο σε έναν πίνακα - Rulings μέσα σε form XObjects λαμβάνουν μέρος στην ανίχνευση μέσω των συνδυασμένων object matrices, με έλεγχο από το
IncludeFormXObjects - Το
ExtractDocumentTablesσυνδέει continuation fragments που τελειώνουν όπου τελειώνει το περιεχόμενο της σελίδας και συνεχίζουν όπου ξεκινά το περιεχόμενο της επόμενης (όχι μόνο fragments που ακουμπούν στα όρια της σελίδας) και κρατά μια μοναδική γραμμή που ξεχείλισε ως μέρος της αλυσίδας του - Το TableExtractionLab εκθέτει το
DetectFilledRulingsστο options panel του στις παραλλαγές για Delphi, Lazarus και C++Builder
Αλλαγμένο (Changed)
- Η ανίχνευση με βάση το whitespace αγνοεί λέξεις που ανήκουν ήδη σε πλέγμα με rulings και απαιτεί κάθε όριο στήλης να είναι διάδρομος χωρίς κείμενο σε όλο το πλάτος των γραμμών που χωρίζει, ώστε στοιχισμένα paragraphs και λίστες με bullets να μην αναφέρονται πλέον ως πίνακες
- Ένα continuation candidate του οποίου η πρώτη γραμμή είναι ένα cell σε όλο το πλάτος αντιμετωπίζεται ως νέος πίνακας με caption και όχι ως συνέχεια του προηγούμενου
- Το
MinRowsδέχεται 1 για πλέγματα με rulings· η ανίχνευση whitespace διατηρεί το κατώφλι των δύο γραμμών, και το default budget τουMaxRulingSegmentsανεβαίνει σε 16384, γιατί τα περιγράμματα ανά cell έρχονται σε πολύ μεγαλύτερους αριθμούς από τις γραμμές πλέγματος σχεδιασμένες ως stroke - Το κείμενο του cell συναρμολογείται γραμμή προς γραμμή από επικαλυπτόμενα word boxes, ώστε λέξεις με glyph boxes διαφορετικού ύψους διατηρούν τη σειρά τους από αριστερά προς δεξιά
- Το
TPdf.AboutInfo, τα metadata του Lazarus package και τα metadata έκδοσης του installer αναφέρουν 3.117.0
Version 3.116.4
Προστέθηκε (Added)
- Το TableExtractionLab αποκτά ομαδική επεξεργασία φακέλων: το
Batch folderτρέχει τοExtractDocumentTablesσε κάθε PDF του επιλεγμένου φακέλου, εμφανίζει πλήθος πινάκων ανά έγγραφο, σημειώνει για OCR έγγραφα χωρίς text layer και εμποδίζει κατεστραμμένα ή κλειδωμένα αρχεία να ματαιώσουν την εκτέλεση - Το
Export all CSVγράφει κάθε εντοπισμένο πίνακα ως<document>-<n>-page<p>-t<i>.csv, σε υποφάκελοtablesγια ομαδικές εκτελέσεις και δίπλα στο φορτωμένο έγγραφο για μεμονωμένο αρχείο - Ένας picker presets ανίχνευσης εκθέτει ρυθμισμένα
TPdfTableExtractionOptions: Default, Compact columns (MinColumnGap4 μεAlignmentTolerance5 για σφιχτές εξαγωγές από word processors) και Compact + wide rows (MaxRowGapFactor6 για διάστιχο 1.5-2x) - Έγγραφα που δεν δίνουν πίνακα με το preset Default ξαναδοκιμάζονται μία φορά με Compact columns, τόσο στην εξαγωγή μεμονωμένου εγγράφου όσο και σε batch, και οι γραμμές του batch αναφέρουν ποιο preset παρήγαγε το αποτέλεσμα
Διορθώθηκε (Fixed)
- Η ομαδική εξαγωγή ανοίγει κάθε έγγραφο στο δικό του instance του
TPdfαντί να ξαναφορτώνει ένα κοινό component, εξαλείφοντας σιωπηλές αποτυχίες φόρτωσης που εμφανίζονταν ως σφάλματα ανενεργού component στη μέση μιας εκτέλεσης φακέλου
Αλλαγμένο (Changed)
- Το
TPdf.AboutInfo, τα metadata του Lazarus package και τα metadata έκδοσης του installer αναφέρουν 3.116.4
Version 3.116.3
Αλλαγμένο (Changed)
- Το δείγμα TableExtractionLab και στα τρία toolchains γράφει πλέον το δείγμα εγγράφου που παράγει σε
TableExtractionSample.pdfδίπλα στο executable του demo αντί να το κρατά μόνο στη μνήμη· όταν ο φάκελος δεν είναι εγγράψιμος, το lab επιστρέφει στην προηγούμενη συμπεριφορά στη μνήμη και το αναφέρει στη γραμμή κατάστασης - Το
TPdf.AboutInfo, τα metadata του Lazarus package και τα metadata του installer αναφέρουν 3.116.3
Version 3.116.2
Διορθώθηκε (Fixed)
- Η βιβλιοθήκη σταμάτησε να μεταγλωττίζεται σε παλαιότερες εκδόσεις του Delphi. Ο helper του 64-bit tick και τα codecs XML για trusted-list και production καλούσαν
GetTickCount64καιCP_UTF8από RTL units που τα φέρνουν μόνο νεότεροι compilers, ο writer του reflow HTML ενσωμάτωνε CSS string literal πέρα από το όριο των 255 στοιχείων που επιβάλλουν αυτοί οι compilers σε ένα literal, και το merge των XFA datasets εκχωρούσε μεταξύTBytesκαι πεδίου απλού dynamic array, που compilers πριν το XE7 απορρίπτουν. Οι παλαιότεροι compilers δένουν πλέον τοGetTickCount64από το kernel32 και δηλώνουν τοCP_UTF8τοπικά όταν το RTL δεν το φέρνει, το style sheet παραδίδεται ως ενωμένα σύντομα literals, και το payload του packet αντιγράφεται στοιχείο προς στοιχείο
Αλλαγμένο (Changed)
- Το
TPdf.AboutInfo, τα metadata του Lazarus package και τα metadata του installer αναφέρουν 3.116.2
Version 3.116.1
Προστέθηκε (Added)
- Τα
Demo\Delphi\TableExtractionLab,Demo\CBuilder\TableExtractionLabκαιDemo\Lazarus\TableExtractionLabμετατρέπουν την ανίχνευση πινάκων σε μία ενιαία ροή εργασίας. Το lab χτίζει δείγμα εγγράφου με πίνακα με rulings και συγχωνευμένα header cells, πίνακα στοιχισμένο με whitespace χωρίς rulings και μακρύ πίνακα που σπάει πάνω σε όριο σελίδας, μετά τρέχειExtractTablesήExtractDocumentTablesκαι εμφανίζει γραμμές, στήλες, spans, flags επικεφαλίδας, τρόπο ανίχνευσης, confidence και ομάδες continuation - Το lab εξάγει τον επιλεγμένο πίνακα μέσω
TPdfTable.ToCsvκαιTPdfTable.ToJson, επεξεργάζεται ταDetectRuledTables,DetectWhitespaceTables,DetectContinuationsκαιMinConfidenceαπό το options panel, και αντιγράφει την πλήρη αναφορά στο clipboard - Το
TPdf.AboutInfo, τα metadata του Lazarus package και τα metadata έκδοσης του installer αναφέρουν 3.116.1
Version 3.114.21
Διορθώθηκε (Fixed)
- Η επικύρωση PDF/A ανέφερε αναφορά εξωτερικού αρχείου σε κάθε έγγραφο που περιείχε annotation. Το ISO 19005-1 §6.1.7 απαγορεύει τα
/F,/FFilterκαι/FDecodeParmsσε λεξικό αντικειμένου stream, αλλά ο έλεγχος αναζητούσε αυτά τα ονόματα σε όλο το αρχείο, ενώ το/Fείναι και το κλειδί σημαιών annotation που το §6.5.3 απαιτεί κάθε annotation να φέρει. Ο έλεγχος πλέον κοιτάζει μόνο μέσα στα λεξικά αντικειμένων stream
Version 3.114.20
Διορθώθηκε (Fixed)
- Οι υπογραφές RSASSA-PSS έφεραν παραμορφωμένες παραμέτρους αλγορίθμου και στα τρία signing backends. Το RFC 4055 ορίζει με tags και τα τέσσερα πεδία των RSASSA-PSS-params· το μήκος του salt γραφόταν ως γυμνός ακέραιος, που ένας parser διαβάζει ως αρχή διαφορετικού πεδίου, και το trailer πεδίο εγγραφόταν παρότι η τιμή του ταυτίζεται με το default που το DER απαιτεί να παραλείπεται. Ένας verifier είτε αποτύγχανε στην ανάλυση των παραμέτρων είτε έπεφτε στο default salt των 20 bytes ενώ η υπογραφή χρησιμοποιούσε 32, οπότε οι υπογραφές PSS απορρίπτονταν. Οι υπογραφές PKCS#1 v1.5 και ECDSA δεν επηρεάστηκαν
Version 3.114.19
Διορθώθηκε (Fixed)
- Το αίτημα timestamp με digest άλλο από SHA-256 δημιουργούσε αίτημα που δήλωνε τον συγκεκριμένο αλγόριθμο ενώ έφερνε digest SHA-256, το οποίο μια timestamp authority είτε απορρίπτει είτε, χειρότερα, χρονοσταμπάρει ως έχει. Υπολογίζεται μόνο SHA-256, οπότε κάθε άλλο αναγνωριστικό απορρίπτεται πλέον ευθέως· ένα κενό αναγνωριστικό εξακολουθεί να επιλέγει το default SHA-256. Το δείγμα PDF Viewer για Lazarus και C++Builder έδενε επίσης ένα handler επέκτασης bookmark που το form file του ονομάζει αλλά ο κώδικάς του δεν ορίζει, πράγμα που αποτυγχάνει όταν φορτώνεται η φόρμα· το handler έχει μεταφερθεί από το δείγμα Delphi
Version 3.114.18
Διορθώθηκε (Fixed)
- Τα δείγματα XFA Lab και XFDF Lab για Delphi, καθώς και το δείγμα XFA Lab για Lazarus, απέτυχαν στην εκκίνηση. Κάθε ένα χτίζει τα controls του από τον create handler της φόρμας του, αλλά ο resource της φόρμας ούτε υπήρχε ούτε ήταν συνδεδεμένος, οπότε η δημιουργία της κύριας φόρμας ανέβαζε σφάλμα resource-not-found και ο handler δεν εκτελούνταν ποτέ. Και τα τρία φέρουν πλέον το form file και την οδηγία που το ενσωματώνει
Version 3.114.17
Διορθώθηκε (Fixed)
- Δύο εγγενείς πόροι διαχειρίζονταν λάθος όταν μια λειτουργία απέτυχε στη μέση. Ένα αποτυχημένο render μικροεικόνας απελευθέρωνε το bitmap-στόχο πριν κλείσει το εγγενές render, και όταν το render σχεδίαζε απευθείας στα ίδια τα pixels αυτού του bitmap, το teardown διάβαζε μνήμη που είχε ήδη αποδεσμευτεί. Μια αποτυχημένη δέσμευση bitmap στο
AddBitmapάφηνε το image object που μόλις είχε δημιουργηθεί χωρίς owner και χωρίς τρόπο να ξαναβρεθεί
Version 3.114.16
Διορθώθηκε (Fixed)
- Η ανάγνωση κειμένου FDF παρήγε λανθασμένους χαρακτήρες πάνω από το
0x7E. Ο πίνακας PDFDocEncoding στο Παράρτημα D.2 του ISO 32000-1 ξεκινά στο0x80με το bullet, αλλά η αντιστοίχιση την ξεκινούσε στο0x7F, οπότε όλο το μπλοκ έως το0x9Fήταν μετατοπισμένο κατά μία θέση: ένα dagger διαβαζόταν ως bullet, ένα em dash ως ellipsis, και ούτω καθεξής μέχρι το zcaron, που έπεφτε εντελώς εκτός πίνακα. Το Euro στο0xA0έλειπε επίσης και επέστρεφε ως no-break space. Τα ονόματα και οι τιμές πεδίων σε εισαγόμενο FDF αποκωδικοποιούνται πλέον σωστά
Version 3.114.15
Διορθώθηκε (Fixed)
- Η επικύρωση εμπιστοσύνης σε έγγραφο του οποίου το trailer ή το catalog δεν μπορεί να διαβαστεί έγραφε πέρα από το τέλος ενός πίνακα. Ο compliance pass παραδίδεται χωρίς να καταγράψει καμία υπογραφή σε αυτή την περίπτωση, ενώ ο collector που τρέχει στη συνέχεια δουλεύει ευθέως πάνω στη ροή byte και μπορεί ακόμα να βρει λεξικά υπογραφών, οπότε μία εγγραφή γραφόταν ανά λεξικό που βρισκόταν σε έναν πίνακα που δεν κρατούσε κανένα. Ο μετρητής πλέον περιορίζεται σε όσα παρήγαγε ο compliance pass
Version 3.114.14
Διορθώθηκε (Fixed)
- Η εκτέλεση σχεδίου επιδιόρθωσης PDF/A εφάρμοζε βήματα που ο planner είχε μπλοκάρει. Ένα βήμα μπλοκάρεται όταν το έγγραφο φέρει υπογραφές, το βήμα θα τις ακύρωνε και ο caller δεν το επέτρεπε· ο executor έλεγχε μόνο το safety level του βήματος, που δεν εκφράζει τη συνθήκη, οπότε ένα υπογεγραμμένο έγγραφο μπορούσε να χάσει τις υπογραφές του από μια αυτόματη επιδιόρθωση που το σχέδιο είχε ήδη αρνηθεί. Τα μπλοκαρισμένα βήματα παραλείπονται πλέον και μετριούνται ως skipped
Version 3.114.13
Διορθώθηκε (Fixed)
- Η προσθήκη signature timestamp σε τιμή CMS με σύνολο πιστοποιητικών μεγαλύτερο από 127 bytes, που είναι κάθε πραγματικό πιστοποιητικό, κατέστρεφε το αποτέλεσμα. Ο helper που εντοπίζει την αρχή εμφωλευμένης δομής περπατούσε προς τα πίσω πάνω στα length octets και μπερδεύει το τελευταίο με το πρώτο, οπότε η τομή που έκοβε ξεκινούσε πολύ πριν τη δομή που ζητιόταν. Το μήκος της επικεφαλίδας προκύπτει πλέον από το μήκος του περιεχομένου, που το DER δηλώνει αδιαφώτως. Τα self-checks το έχασαν επειδή τα πιστοποιητικά των fixtures τους ήταν αρκετά μικρά για τη σύντομη μορφή
Version 3.114.12
Διορθώθηκε (Fixed)
- Τα signed attributes εκπέμπονταν με τη σειρά κατασκευής τους αντί να ταξινομούνται κατά τα encodings τους, όπως απαιτεί το X.690 §11.6 για ένα DER SET OF. Ένας verifier που επανακωδικοποιεί το σύνολο attributes πριν το digest, όπως κάνουν τόσο το OpenSSL όσο και το BouncyCastle, υπολόγιζε επομένως διαφορετικό digest και ανέφερε υγιή υπογραφή PAdES ως άκυρη. Οι υπογραφές που παράγει η βιβλιοθήκη επαληθεύονται πλέον σε αυτά τα stacks· η επικύρωση μέσω του Windows layer δεν επηρεάστηκε επειδή κάνει digest τα bytes όπως ήρθαν
Version 3.114.11
Διορθώθηκε (Fixed)
- Ένας αρνητικός DER INTEGER φαρδύτερος από δύο content bytes κωδικοποιούνταν με λανθασμένη τιμή. Ο writer προσομοιώνει αριθμητική ολίσθηση επανεισάγοντας το πρόσημο μετά από λογική ολίσθηση, αλλά η μάσκα που χρησιμοποιούσε όριζε κάθε bit πάνω από το low byte αντί μόνο για το byte που είχε εκκενωθεί από την ολίσθηση, οπότε το μέγεθος που εξακολουθούσε να κρατείται στα υπόλοιπα bytes αντικαθίστοταν. Η τιμή -100000 κωδικοποιούνταν για παράδειγμα ως -34464. Τα nonces αιτημάτων timestamp και κάθε άλλος προσημασμένος ακέραιος αυτού του μεγέθους κωδικοποιούνται πλέον σωστά
Version 3.114.10
Διορθώθηκε (Fixed)
- Η επικύρωση PDF/A δεν ανέφερε ποτέ το σταθερό alpha μέρος του κανόνα διαφάνειας στο ISO 19005-1 §6.4. Ο helper χτίζει το κλειδί αναζήτησής του προσαρτώντας solidus, και ο caller πέρναγε επίσης έναν, οπότε έψαχνε για
//CAκαι δεν ταίριαζε τίποτα. Και οι δύο έλεγχοι alpha δέχονταν επιπλέον μόνο τα ακριβή κείμενα1και1.0, πράγμα που σημαίαρε ένα πλήρως αδιαφανές/CA 1.00ως παραβίαση· μια τιμή ένα αναγνωρίζεται πλέον ανεξαρτήτως γραφής
Version 3.114.9
Διορθώθηκε (Fixed)
- Η URI action επιπέδου σελίδας επέστρεφε χαλασμένο κείμενο. Το path επιστρέφει από το εγγενές layer ως bytes UTF-8 και γραφόταν ευθέως σε wide string, που ζευγαρώνει τα bytes σε code units 16 bit και αφήνει το υπόλοιπο του buffer με ό,τι μνήμη υπήρχε εκεί. Το
GetPageActionURIαποκωδικοποιεί πλέον τα bytes όπως έκανε ήδη η διαδρομή της document-level action
Version 3.114.8
Ασφάλεια (Security)
- Σε targets άλλα από Windows τα τυχαία bytes πίσω από κάθε κλειδί κρυπτογράφησης, salt και initialisation vector προέρχονταν από το PRNG του runtime, του οποίου το seed είναι σταθερό εκτός αν το πρόγραμμα καλέσει
Randomize. Κάθε process παρήγε επομένως το ίδιο κλειδί κρυπτογράφησης αρχείου, τα ίδια salts/UEκαι/OE, τα ίδια bytes/Permsκαι τα ίδια nonces AES-GCM, κάτι που κάνει την κρυπτογραφημένη έξοδο από ένα Free Pascal build σε Linux ή macOS τετριμμένα ανακτήσιμη και επαναλαμβάνει ένα GCM nonce υπό σταθερό κλειδί. Τα bytes προέρχονται πλέον από το/dev/urandom, και ένα μη διαθέσιμο kernel pool κάνει raise αντί να πέφτει σε fallback, όπως έκανε ήδη ένα μη διαθέσιμοCryptGenRandomστα Windows
Version 3.114.7
Διορθώθηκε (Fixed)
- Ένα κακοδιατυπωμένο object stream μπορούσε να κάνει τα σημεία εισόδου συμπίεσης και επιδιόρθωσης να διαβάσουν πέρα από το τέλος του decoded buffer. Τα member offsets που δηλώνει ένα stream ελέγχονται πλέον για εύρος και αύξουσα σειρά μόλις γίνει parsing η επικεφαλίδα, ένα δηλωμένο member count μεγαλύτερο από όσο χωρά η επικεφαλίδα απορρίπτεται πριν δεσμευτεί οποιαδήποτε μνήμη, και το byte range κάθε member επικυρώνεται πριν κοπεί το trailing whitespace του αντί μετά
Version 3.114.6
Διορθώθηκε (Fixed)
- Η μετατροπή inline images σε εξωτερικά παρήγε άχρηστο image XObject. Το λεξικό γραφόταν με έναν αδέσποτο solidus πριν από το πρώτο του κλειδί, που άνοιγε κενό όνομα και μετέθετε κάθε κλειδί στην τιμή του προηγούμενου κλειδιού, και ο πίνακας inline συντομογραφιών απέδιδε το Decode σε
Gαντί γιαD, οπότε ένας πίνακας/Dχανόταν και η συντομογραφία τιμής DeviceGray μπερδευόταν για κλειδί. Οι εικόνες που βγαίνουν από ένα content stream φέρουν πλέον καλοσχηματισμένο λεξικό και κρατούν τον Decode array τους
Version 3.114.5
Διορθώθηκε (Fixed)
- Ο shaper HarfBuzz απέδιδε μήκη cluster σε λάθος glyphs σε runs δεξιά-προς-αριστερά και έδινε στα glyphs που μοιράζονται ένα cluster, όπως marks και συστατικά ligature, μήκος ένα. Το
ClusterLengthκάθε glyph εκτείνεται πλέον από την αρχή του cluster του έως το επόμενο cluster σε λογική σειρά, προς οποιαδήποτε κατεύθυνση, ώστε η αντιστοίχιση χαρακτήρα-σε-glyph για αραβικά και εβραϊκά κείμενα να ταιριάζει με όσα αναφέρει το backend Uniscribe
Version 3.114.4
Διορθώθηκε (Fixed)
- Η μεταφορά timestamp μέσω libcurl περνούσε τις αριθμητικές options της και διάβαζε τον HTTP status code ως τιμές 32 bit, ενώ το libcurl παίρνει και επιστρέφει C
long, που είναι 64 bit σε Linux και macOS. Το ερώτημα status μπορούσε να παραγράψει τα τέσσερα bytes δίπλα στον στόχο του στη stack, και οι τιμές options εξαρτιόνταν από ό,τι κρατούσε το πάνω μισό του register. Και τα δύο χρησιμοποιούν πλέον το πλάτοςlongτης πλατφόρμας, ώστε τοFPdfTsaFpcείναι υγιές σε targets LP64
Version 3.114.3
Διορθώθηκε (Fixed)
- Το backend PKCS#11 αντέγραφε τα raw bytes της ετικέτας token object κατευθείαν σε string, που στο Delphi προσγειώνει bytes UTF-8 πάνω σε code units UTF-16. Ένα πιστοποιητικό επιλεγμένο μέσω
TPdfPkcs11Options.CertificateLabelμπορούσε επομένως να μη ταυτιστεί ποτέ, και τοEnumerateCertificatesανέφερε χαοτικάLabelText. Οι ετικέτες αποκωδικοποιούνται πλέον ως το UTF-8 που ορίζει το πρότυπο, και το PIN που δίνεται στοC_Loginκωδικοποιείται ως UTF-8 αντί να στενέψει μέσω του host codepage, ώστε ένα PIN μη-ASCII να φτάνει άθικτο στο token
Version 3.114.2
Διορθώθηκε (Fixed)
- Ο υπογράφων macOS Keychain ρωτούσε το
SecKeyIsAlgorithmSupportedγια τη λάθος λειτουργία όταν αποφάσιζε αν ένα κλειδί δέχεται RSASSA-PSS: το ερώτημα ονόμαζε τη λειτουργία decrypt αντί για sign, οπότε η απάντηση ήταν πάντα όχι και κάθε υπογραφή RSA έπεφτε σιωπηλά σε PKCS#1 v1.5. Ένα κλειδί που υποστηρίζει PSS υπογράφει πλέον με PSS όπως ζητά τοTPadesSignerOptions.PaddingScheme, και το όρισμα λειτουργίας περνάει στο πλάτος που δηλώνει το framework
Version 3.114.1
Διορθώθηκε (Fixed)
- Εμφωλευμένα ζεύγη αγκυλών σε κείμενο δεξιά-προς-αριστερά επιλύονταν σε λάθος κατεύθυνση. Ο κανόνας BD16 του UAX #9 επεξεργάζεται τα ζεύγη με τη σειρά εμφάνισης των ανοιγμάτων τους, και ένα ζεύγος που επιλύεται από το N0 γίνεται το προηγούμενο ισχυρό context για ένα ζεύγος που ανοίγει μετά από αυτό· τα ζεύγη επεξεργάζονταν αντίθετα με τη σειρά που ολοκλήρωναν τα κλεισίματά τους, οπότε ένα εσωτερικό ζεύγος μπορούσε να ακολουθήσει το γράμμα που περικλείει αντί για το context που έστησε το εξωτερικό ζεύγος. Κείμενο όπως αραβική ή εβραϊκή πρόταση με παρένθεση που περιέχει εμφωλευμένη αγκύλη διατάσσεται πλέον όπως περιμένει ο αναγνώστης
Version 3.114.0
Προστέθηκε (Added)
- Το
FPdfCryptoSslεπαληθεύει υπογραφές PDF και timestamp tokens μέσω OpenSSL, κλείνοντας το τελευταίο κενό πλατφόρμας στην επικύρωση υπογραφών: το Linux δεν είχε καθόλου backend επαλήθευσης CMS. ΤοConfigureSslCmsVerifierτον εγκαθιστά, η libcrypto επιλύεται με όνομα κατά το run time ώστε τίποτα να μην κάνει link πάνω της, και δένουν τόσο η σειρά 1.1 όσο και η 3.x - Η υπογραφή και η αλυσίδα πιστοποιητικών αξιολογούνται σε ξεχωριστά passes, ώστε μια υγιής υπογραφή κάτω από αλυσίδα που δεν φτάνει σε trust anchor να αναφέρεται ως έγκυρη υπογραφή με άκυρη εμπιστοσύνη αντί για χαλασμένη υπογραφή
- Το
ConfigureSslTrustAnchorsπροσθέτει DER trust anchors στο system store, και τοConfigureSslCrlsπρομηθεύει τα CRLs που μπορεί να συμβουλευτεί έλεγχος ανάκλησης. Η ανάκληση μετρά ως ελεγμένη μόνο όταν υπάρχει πράγματι CRL, επειδή το OpenSSL δεν φέρνει κανένα μόνο του· χωρίς κανένα να έχει δοθεί, το αποτέλεσμα αναφέρει unsupported αντί να περάσει ανέλεγκτη αλυσίδα - Τα
SslAvailable,SslMissingSymbols,SslLibraryPath,SslLibraryVersionκαιSslAbiLayoutαναφέρουν τι έδεσε και τι όχι, και τοConfigureSslLibraryPathκατευθύνει το backend σε συγκεκριμένη βιβλιοθήκη όταν τα defaults της πλατφόρμας δεν βρίσκουν μία
Version 3.113.0
Προστέθηκε (Added)
- Το
TPdfKeychainCmsVerifierεπαληθεύει υπογραφές PDF και timestamp tokens σε macOS μέσωCMSDecoderκαι SecTrust, ώστε η επικύρωση υπογραφών να μην είναι πλέον μόνο για Windows. ΤοConfigureKeychainCmsVerifierτον εγκαθιστά, και η ίδια μονάδα καλύπτει πλέον και τα δύο μισά της υποστήριξης macOS όπως κάνει τοFPdfCryptoWinγια Windows - Ο έλεγχος ανάκλησης τηρείται: όταν ζητείται, μια πολιτική ανάκλησης ενώπτεται της βασικής X.509, και το κλείσιμο της online ανάκτησης περιορίζει την αξιολόγηση σε cached responses. Τα progress checkpoints πυροδοτούνται για τα στάδια υπογραφής, αλυσίδας, online ανάκτησης και ανάκλησης ακριβώς όπως τα αναφέρει το backend Windows
- Το
KeychainVerificationAvailableαναφέρει την υποστήριξη επαλήθευσης ξεχωριστά από την υπογραφή, αφού τα δύο χρειάζονται διαφορετικά σύμβολα framework και το ένα μπορεί να υπάρχει χωρίς το άλλο
Version 3.112.0
Προστέθηκε (Added)
- Το
FPdfCryptoMacυπογράφει PAdES με ταυτότητα Keychain macOS, το αντίστοιχο του Windows certificate store: το πιστοποιητικό και το private key του προέρχονται από το Keychain και η υπογραφή παράγεται από τοSecKeyCreateSignature, ώστε το κλειδί να μην φεύγει ποτέ από το system keystore. ΤοConfigureKeychainSignerProviderτο εγκαθιστά, και δεν χρειάζεται ανάπτυξη module δίπλα στην εφαρμογή όπως θα απαιτούσε ένα backend token PKCS#11 - Ο signer ακολουθεί το πιστοποιητικό: κλειδί EC υπογράφει ECDSA, κλειδί RSA υπογράφει RSASSA-PSS, και όπου το PSS δεν είναι διαθέσιμο - παλαιότερο macOS ή κλειδί που δεν το δέχεται - το padding πέφτει σε PKCS#1 v1.5 και το εκπεμπόμενο AlgorithmIdentifier το λέει αντί να ισχυρίζεται PSS
- Το
KeychainMissingSymbolsαπαριθμεί κάθε σύμβολο framework που απέτυχε να επιλυθεί, ώστε μια ανάπτυξη που αναφέρει το backend μη διαθέσιμο να ξεχωρίζει ένα απόν framework από ένα όνομα που αυτό το binding πήγε λάθος
Version 3.111.0
Προστέθηκε (Added)
- Το
ConfigurePadesCmsVerifierεγκαθιστά το backend επαλήθευσης CMS που χρησιμοποιεί ο validator PAdES, ώστε η επαλήθευση υπογραφής και timestamp να μην είναι πλέον δεμένη με Windows. ΤοIPdfCmsVerifierδηλώνει τις δύο λειτουργίες που απαντά ένα backend - detached για υπογραφή PDF, attached για timestamp token - και τοPadesCmsVerificationAvailableαναφέρει αν υπάρχει κανένα backend
Αλλαγμένο (Changed)
- Τα records αποτελέσματος και επιλογών επαλήθευσης μεταφέρθηκαν στο
FPdfCryptoωςTPdfCmsVerify*. Τα ονόματαTWinCmsVerify*παραμένουν ως aliases, ώστε ο υπάρχων κώδικας συνεχίζει να δουλεύει και ένα συνδεδεμένο backend μιλά τους ίδιους τύπους με το Windows - Η συμπεριφορά Windows δεν αλλάζει: χωρίς εγκατεστημένο verifier χρησιμοποιεί ακόμα CryptoAPI, και τα progress checkpoints, οι επιλογές ανάκλησης και οι εγγενείς κωδικοί σφάλματος είναι τα ίδια. Όπου κανένα backend δεν απαντά, κάθε verdict αναφέρει unsupported αντί να μείνει ανέλεγκτο
Version 3.110.0
Προστέθηκε (Added)
- Το
FPdfPkcs11υπογράφει PAdES με κλειδί που μένει μέσα σε token PKCS#11. ΤοConfigurePkcs11SignerProviderτο εγκαθιστά ως signing backend, το module φορτώνεται κατά το run time με path ώστε τίποτα να μην κάνει link, και ο ίδιος κώδικας εξυπηρετεί Windows, Linux και macOS. Η απαρίθμηση token που δηλώνει το interfaceIPdfPkcs11SignerProviderυλοποιείται μαζί του: slots, tokens και τα πιστοποιητικά που κρατά το καθένα - Η υπογραφή εκτός Windows δεν χρειάζεται πλέον provider που προμηθεύει ο host για τη συνηθισμένη περίπτωση: ένα token module συν
TPdfPkcs11Optionsφτάνει. RSA PKCS#1 v1.5, RSASSA-PSS και ECDSA παράγονται όλοι μέσω του token - Το
FPdfSha1προσθέτει SHA-1 για έναν σκοπό, το ταίριασμα πιστοποιητικού μέσω του thumbprint που κουβαλά τοTPadesSignerOptions. Τα Windows το έλυναν μέσα στο certificate store· ένα token επιστρέφει bytes πιστοποιητικού και αφήνει το ταίριασμα στον caller. Δεν είναι signing digest και το stack PAdES συνεχίζει να υπογράφει SHA-256 παντού
Αλλαγμένο (Changed)
- Τα helpers DER πιστοποιητικού που διαβάζουν OID αλγορίθμου δημόσιου κλειδιού, εξάγουν issuer και serial και τυλίγουν ξανά raw υπογραφή ECDSA μεταφέρθηκαν από το backend Windows στο
FPdfCms, όπου κάθε signing backend τα φτάνει
Version 3.109.0
Αλλαγμένο (Changed)
- Ο loader εγγενών βιβλιοθηκών δεν είναι πλέον μόνο για Windows. Το
LibraryNameπροεπιλέγεται σεpdfium.dll,libpdfium.soήlibpdfium.dylibγια τον στόχο, το build V8 αναζητείται με το αντίστοιχο όνομα, και το φόρτωμα και το δέσιμο συμβόλων περνούν από τον portable loader σε Free Pascal. Η συμπεριφορά Windows δεν αλλάζει, συμπεριλαμβανομένης της διάταξης ανάπτυξης Win32 και Win64 και της διαγνωστικής αναντιστοιχίας αρχιτεκτονικής - Οι κατάλογοι ανάπτυξης σε άλλους στόχους ακολουθούν την ορθογραφία
<cpu>-<os>που ήδη χρησιμοποιούν οι compiled units, ώστε τοDLLs/x86_64-linux/libpdfium.soκάθεται δίπλα στοLib/FPC/x86_64-linux. Το fallback στον system directory μένει μόνο για Windows· αλλού το search path του loader το καλύπτει
Version 3.108.0
Προστέθηκε (Added)
- Το
TPdfHarfBuzzTextShaperσχηματοποιεί bidirectional και complex-script κείμενο σε targets Free Pascal που δεν έχουν Uniscribe. Λύνει τα embedding levels με τοFPdfBidi, τμηματοποιεί runs κατά script, σχηματοποιεί κάθε run με libharfbuzz και τοποθετεί τα runs σε οπτική σειρά. Εγκαθίσταται με τοConfigureTextShaper· η libharfbuzz επιλύεται κατά το run time και τοHarfBuzzAvailableαναφέρει ειλικρινά όταν λείπει - Ο shaper δεν απαριθμεί γραμματοσειρές. Το Uniscribe διαβάζει το font binary από ένα device context, που δεν έχει portable ισοδύναμο, οπότε ο host περνά ένα
TPdfFontDataResolverπου αντιστοιχίζει όνομα γραμματοσειράς στα bytes του font file και κρατά αυτή την πολιτική εκεί που της αξίζει
Version 3.107.0
Προστέθηκε (Added)
- Το
FPdfBidiυλοποιεί τον Unicode Bidirectional Algorithm (UAX #9) σε καθαρό Pascal: τοPdfResolveBidiLevelsεπιστρέφει ένα embedding level ανά code unit UTF-16, τοPdfBidiVisualOrderεφαρμόζει την αναδιάταξη L2, και τοPdfBidiClassOfεκθέτει το Bidi_Class ενός code point. Καλύπτονται οι κανόνες P2-P3, X1-X10, W1-W7, N0-N2, I1-I2 και L1-L2, συμπεριλαμβανομένων isolate initiators και BD16 bracket pairs - Η μονάδα είναι ουδέτερη ως προς compiler και platform, που είναι ακριβώς αυτό που επιτρέπει τη διάταξη bidirectional κειμένου εκεί όπου δεν υπάρχει Uniscribe. Μια μηχανή shaping λύνει glyphs για run της οποίας η κατεύθυνση είναι ήδη γνωστή, οπότε αυτό είναι το κομμάτι που πρέπει να αποφασίσει πρώτο την κατεύθυνση
Version 3.106.0
Προστέθηκε (Added)
- Το
ConfigureTextShaperεγκαθιστά το backend shaping κειμένου από το οποίο περνά όλη η βιβλιοθήκη, μεActiveTextShaper,ActiveTextShaperNameκαιClearTextShaperδίπλα του. Τόσο τοShapePdfTextόσο και τοTPdf.AddShapedTextχρησιμοποιούν πλέον τον εγκατεστημένο shaper αντί να δημιουργούν απευθείας Uniscribe, ώστε ένας host να μπορεί να προμηθεύσει τη δική του μηχανή και ένα test έναν deterministic shaper
Αλλαγμένο (Changed)
- Το
FPdfTextShapingμεταγλωττίζεται σε targets άλλα από Windows: το backend Uniscribe είναι πλέον το platform default αντί η μοναδική υλοποίηση, και περιορίζεται στο Windows build. Όπου δεν υπάρχει διαθέσιμο backend, τα σημεία εισόδου shaping το αναφέρουν αντί να αποτύχουν να μεταγλωττιστούν
Version 3.105.1
Ασφάλεια (Security)
- Μια απάντηση timestamp οριοθετείται πλέον στα 4 MB και στα δύο transports. Ένα TSA που συνέχιζε να στέλνει μπορούσε προηγουμένως να μεγαλώσει το receive buffer απεριόριστα, μετατρέποντας μια κλήση υπογραφής σε απεριόριστη ανάπτυξη μνήμης
Version 3.105.0
Προστέθηκε (Added)
- Το RFC 3161 timestamping δουλεύει σε targets Free Pascal άλλα από Windows: το νέο backend libcurl κάνει post το TimeStampReq και διαβάζει το TimeStampResp, οπότε το
PadesTsaAvailableαναφέρει True και τα PAdES B-T, B-LT και B-LTA μπορούν να πάρουν tokens εκεί. Η libcurl επιλύεται κατά το run time και δεν είναι build-time εξάρτηση· όταν απουσιάζει, το backend αναφέρει μη διαθέσιμο ακριβώς όπως κάνει το WinHttp. Τα Windows συνεχίζουν με WinHttp και δεν επηρεάζονται - Η υπογραφή σε εκείνους τους στόχους εξακολουθεί να χρειάζεται key material που δεν κατέχει η βιβλιοθήκη: προμηθεύστε το μέσω
ConfigurePadesSignerProviderμεIPadesSignerProvider(ήIPdfPkcs11SignerProviderγια κλειδιά σε token), αφού τοFPdfCryptoWinείναι μόνο για Windows
Version 3.104.1
Προστέθηκε (Added)
- Το δείγμα εργαστηρίου επιθεώρησης XFA είναι πλέον διαθέσιμο και για Lazarus, ώστε τα probes δυνατοτήτων XFA, η απαρίθμηση packets, η εξαγωγή packets και το fallback
OnXfaRuntimeMissingνα ασκούνται από το LCL build
Version 3.104.0
Αλλαγμένο (Changed)
- Η βιβλιοθήκη μεταγλωττίζεται καθαρά από αποφευκτικές διαγνωστικές σε Free Pascal 3.2: η εσωτερική μέτρηση χρόνου διαβάζει το millisecond tick από
GetTickCount64αντί για την deprecated κλήση 32 bit, οι deprecated accessors SSE control-word αντικαθίστανται απόGetMXCSRκαιSetMXCSR, η βάση offset του content fingerprint τυποποιείται ρητά ώστε να μην σκοντάφτει πλέον σε compile-time range check, και οι διευθύνσεις scanline συγκρίνονται ως unsigned pointers όταν ένα bitmap ελέγχεται για top-down διάταξη
Version 3.103.1
Διορθώθηκε (Fixed)
- Τα μεταδεδομένα εγγράφου που μεταφέρονται σε XMP κρατούν τους μη-ASCII χαρακτήρες τους σε Free Pascal: τίτλοι, συγγραφείς, θέματα, λέξεις κλειδιά και ονόματα δημιουργών που φτάνουν στα
SaveAsPdfA,SaveAsPdfUa,SaveAsPdfE,SaveAsPdfX,SaveAsPdfRκαιSaveAsPdfVTμετατρέπονται πλέον μέσω του codepage της συμβολοσειράς αντί να αντιγράφονται byte προς byte, ώστε το packet μεταδεδομένων να μένει έγκυρο UTF-8 όπως απαιτεί το ISO 19005-1 6.7.2 ακόμα και όταν το host program δεν τρέχει σε codepage UTF-8 - Η εξαγωγή XFDF, τα round-trips production μεταδεδομένων και το parsing trusted-list XML χρησιμοποιούν την ίδια σωστή ως προς codepage μετατροπή, ώστε το κείμενο που μετακινείται μεταξύ
TBytesκαιstringνα μην εξαρτάται πλέον από το host codepage
Version 3.103.0
Προστέθηκε (Added)
- Το
TPdfEuropeanTrustedListαναλύει πιστοποιημένες ευρωπαϊκές trusted lists, επαναφορτώνει checksummed caches μέσω του ίδιου authenticator, δέχεται update sources από τον caller, εκθέτει τρέχοντα trust anchors και αξιολογεί qualified signature services σε ζητούμενο χρόνο επικύρωσης - Το
TPadesTrustValidationOptions.QualifiedTrustEvaluatorεφαρμόζει offline πολιτική qualified trust σε κάθε επικυρωμένο υπογράφοντα χωρίς να προσθέτει network access στον validator PAdES
Version 3.102.0
Προστέθηκε (Added)
- Τα
BeginIncrementalSaveκαιCommitIncrementalSaveπροσαρτούν πλέον authenticated revisions σε κρυπτογραφημένα έγγραφα AES-256 διατηρώντας την αρχική αναφορά/Encrypt, τις παραμέτρους ασφαλείας, τα ακριβή object generations και τα προηγούμενα bytes
Αλλαγμένο (Changed)
- Το overload file commit κάνει πλέον durable flush και αυστηρό reopen side file στον ίδιο κατάλογο, επαληθεύει το όριο revision του, και αντικαθιστά ατομικά τον στόχο ενώ κάνει rollback της συνεδρίας μετά από οποιαδήποτε αποτυχία
Version 3.101.0
Αλλαγμένο (Changed)
- Το
SaveAsRedactedδιατηρεί πλέον ασφαλείς portions μερικώς τεμνόμενου κειμένου, ορθογώνιων paths και images ευθυγραμμισμένων με άξονα, και μετά αφαιρεί ονόματα πόρων που δεν αναφέρονται πλέον από σελίδα, Form XObject, pattern, appearance και εμφωλευμένα scopes πόρων
Version 3.100.0
Αλλαγμένο (Changed)
- Το
OptimizeImagesεπιλέγει πλέον resampling box, bilinear, bicubic, Lanczos ή bilevel από κλίμακα, κλάση περιεχομένου, μετρημένη λεπτομέρεια και ποιότητα που ζητά ο caller, με alpha-aware φιλτράρισμα και αυστηρό όριο μνήμης εργασίας
Version 3.99.0
Προστέθηκε (Added)
- Το
GraftPdfAcroFormεισάγει ιεραρχικά πεδία AcroForm, widgets, appearances, σειρά υπολογισμού, default πόρους, ενέργειες και τιμές μέσω ρητών mappings σελίδων και πολιτικών συγκρούσεων - Το
TPdfCrossDocumentGraftMapεπαναχρησιμοποιεί εισαγόμένα indirect objects ανά ταυτότητα πηγής διατηρώντας κύκλους, κοινές αναφορές, ακριβή source generations και transactional σημασιολογία αποτυχίας
Version 3.98.0
Προστέθηκε (Added)
- Το
TPdfOutlineEditorδημιουργεί, μετακινεί, διαγράφει, διαμορφώνει στυλ, αναπτύσσει και ανακατευθύνει outline items, χαρτογραφεί ξανά ρητούς προορισμούς μέσω results σχεδίων σελίδων και προσαρτά ανεξάρτητα επαληθευμένη incremental revision
Version 3.97.0
Προστέθηκε (Added)
- Το
TPdfTreeEditorδιαβάζει, επικυρώνει, ενημερώνει, εξισορροπεί, διχάζει, συγχωνεύει, serializes και αποθηκεύει incremental αυθαίρετες δομές PDF NameTree και NumberTree διατηρώντας επαναχρησιμοποιήσιμες indirect references και raw τιμές εγγραφών
Version 3.96.0
Προστέθηκε (Added)
- Το
TPdfParserResourceBudgetπαρέχει μία thread-safe πολιτική process για αναδρομή, tokens, objects, decoded bytes, λόγο επέκτασης, δέσμευση και προθεσμίες σε custom PDF parsers, με αμετάβλητα snapshots ανά λειτουργία και configurable defaults
Version 3.95.0
Αλλαγμένο (Changed)
- Το
ValidatePdfXεπικυρώνει πλέον ενεργά λεξικά PDF/X, μεταδεδομένα, output intents, γραμματοσειρές, απαγορευμένα χαρακτηριστικά, διαφάνεια, χρωματικούς χώρους και page boxes μέσω οριοθετημένων αραιών αναγνώσεων σε μη κρυπτογραφημένα έγγραφα με έγκυρο xref
Version 3.94.0
Αλλαγμένο (Changed)
- Το
ValidatePdfRεπικυρώνει πλέον ενεργά λεξικά PDF/R, σελίδες, image filters, μεταδεδομένα και footer markers μέσω οριοθετημένων αραιών και windowed αναγνώσεων σε μη κρυπτογραφημένα έγγραφα με έγκυρο xref
Version 3.93.0
Αλλαγμένο (Changed)
- Το
ValidatePdfEεπικυρώνει πλέον ενεργά λεξικά PDF/E, μεταδεδομένα, output intents, φόρμες και απαγορευμένα χαρακτηριστικά μέσω οριοθετημένων αραιών αναγνώσεων σε έγγραφα με έγκυρο xref
Version 3.92.0
Αλλαγμένο (Changed)
- Το
ValidatePdfVTεκτελεί πλέον προηγμένη ανάλυση scope, ορατότητας, εγκλεισμού και εμφωλευμένης χρήσης Form για recurring XObjects μέσω οριοθετημένων αραιών αναγνώσεων σε έγγραφα με έγκυρο xref
Version 3.91.0
Προστέθηκε (Added)
- Το
TPdfSparseDictionaryReaderμπορεί να λύσει την ενεργή generation ενός object και να αποκωδικοποιήσει direct stream υπό όριο byte που ορίζει ο caller
Αλλαγμένο (Changed)
- Το
ValidatePdfVTχρησιμοποιεί πλέον οριοθετημένες αραιές αναγνώσεις για μεταδεδομένα PDF/VT, DPart, OutputIntent, Info, σελίδας και συνηθισμένους ελέγχους λεξικού στη συνήθη διαδρομή έγκυρου xref
Version 3.90.0
Προστέθηκε (Added)
- Το
TPdfSparseDictionaryReaderκρατά ένα αραιό ευρετήριο xref και object-stream ανοιχτό για επαναλαμβανόμενες οριοθετημένες αναγνώσεις λεξικών indirect objects
Αλλαγμένο (Changed)
- Το
InjectPdfVTMarkersεπικυρώνει και διατηρεί πλέον υπάρχουσα ιεραρχία DPart PDF/VT με οριοθετημένες αναγνώσεις πηγής, ενώ κακοδιατυπωμένες ιεραρχίες συνεχίζουν μέσω του rebuilding fallback
Version 3.89.0
Προστέθηκε (Added)
- Το
ReadPdfSparsePageDictionariesεπιστρέφει ταυτότητες page objects και οριοθετημένα bytes λεξικού σε σειρά page-tree μέσω του αραιού ευρετηρίου objects
Αλλαγμένο (Changed)
- Το
InjectPdfVTMarkersσυνθέτει πλέον την ιεραρχία DPart PDF/VT και προσαρτά marker objects με οριοθετημένες αναγνώσεις πηγής όταν το αποθηκευμένο PDF δεν περιέχει ήδη ιεραρχία DPart
Version 3.88.0
Προστέθηκε (Added)
- Το
ReadPdfSparseCatalogSubDictδιαβάζει direct ή indirect sub-λεξικό catalog μέσω του αραιού ευρετηρίου objects, σε χρήση από την έγχυση markers PDF/UA γιαMarkInfoκαιViewerPreferences
Αλλαγμένο (Changed)
- Το
InjectPdfUaMarkersλύνει πλέον catalogMarkInfoκαιViewerPreferencesμέσω αραιής αναζήτησης και προσαρτά το revision PDF/UA με οριοθετημένες αναγνώσεις πηγής στη συνήθη διαδρομή xref
Version 3.87.0
Προστέθηκε (Added)
- Το
AppendPdfSparseUpdatestreamάρει μία αραιή revision πάνω σε αποθηκευμένο PDF: bytes πηγής verbatim, bodies objects που ορίζει ο caller σε καταγεγραμμένα offsets, και ένα ενιαίο incremental block xref/trailer αλυσιδωμένο μέσω/Prev - Το
NormalizePageViewRectκανονικοποιεί δύο mapped γωνίες σε χώρο σελίδας στο ορατό ορθογώνιο περιορισμένο στη σελίδα, ή αναφέρει ότι τίποτα της σελίδας δεν είναι ορατό - Η έγχυση markers PDF/E συνθέτει φρέσκο Info object με
/ISO_PDFEVersionόταν το έγγραφο πηγής δεν έχει λεξικό Info
Αλλαγμένο (Changed)
- Η έγχυση markers PDF/E, PDF/X και PDF/R λύνει πλέον το catalog, το Info και το trailer μέσω αραιής αναζήτησης και προσαρτά revisions μέσω
AppendPdfSparseUpdateμε οριοθετημένες αναγνώσεις πηγής στη συνήθη διαδρομή xref - Το callback form-fill
FFI_GetPageViewRectαναφέρει πλέον το τμήμα της σελίδας πραγματικά ορατό στο συνδεδεμένοTPdfViewαντί πάντα ολόκληρο το page box, με fallback στις διαστάσεις σελίδας για headless έγγραφα - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.87.0
Διορθώθηκε (Fixed)
- Τα σημεία ελέγχου τμημάτων path που εκτέθηκαν από το binding
FPDFPath_GetBezierControlPointsδεν πληρούνταν ποτέ: το εγγενές export απαντά μόνο για το endpoint index κάθε τριμελούς cubic, οπότε το ερώτημα γίνεται πλέον μία φορά ανά καμπύλη και και οι τρεις εγγραφές φέρουν τα control points της καμπύλης
Version 3.86.0
Προστέθηκε (Added)
- Το
ReadPdfSparseRevisionInfoεκθέτει οριοθετημένα στοιχεία τελευταίας revision, catalog, κρυπτογράφησης, document ID και tagged δομής για stream postprocessors - Το
ComposePdfSparseUpdateIdδιατηρεί ή παράγει identifiers document incremental-update χωρίς να υλοποιεί το πλήρες PDF πηγής
Αλλαγμένο (Changed)
- Το
InjectPdfAMarkersλύνει πλέον catalog και trailer μέσω αραιής αναζήτησης, αντιγράφει μεγάλες εισόδους σε οριοθετημένα chunks και προσαρτά το revision PDF/A χωρίς να δεσμεύει byte array μεγέθους πηγής στη συνήθη διαδρομή xref - Η έγχυση markers PDF/A διατηρεί κλασικό ή xref-stream στυλ εξόδου, generations catalog και Info, identifiers trailer, συμπεριφορά άρνησης κρυπτογράφησης και κανόνες υποβάθμισης Level A
Version 3.85.0
Προστέθηκε (Added)
- Το
SanitiseActiveContentPdfStreamδέχεται prune workspace ιδιοκτησίας caller για custom οριοθετημένη ή disk-backed αποθήκευση
Αλλαγμένο (Changed)
- Ο καθαρισμός active content ενημερώνει πλέον catalog και trailer μέσω αραιής αναζήτησης, οριοθετημένων parser windows και αντιγραφής εύρους σταθερού μεγέθους αντί να διαβάζει το πλήρες PDF σε έναν byte array στη συνήθη διαδρομή xref
- Το
TPdf.SaveAsSanitisedεφαρμόζειSaveMemoryLimitκαιSaveTemporaryDirectoryστο pruning workspace του και αναφέρει τα spill diagnostics του
Διορθώθηκε (Fixed)
- Το
StripMetadata=Trueαφαιρεί πλέον αναφορά trailer/Infoακόμα και όταν το catalog δεν έχει εγγραφή/Metadata
Version 3.84.0
Αλλαγμένο (Changed)
- Το
TPdf.PdfVersionεπαναχρησιμοποιεί πλέον parser state PDFium μέσωFPDF_GetFileVersionαντί να κάνει reparse του πλήρους PDF πηγής - Τα ερωτήματα έκδοσης διαβάζουν το πολύ την οκτώ-byte επικεφαλίδα PDF για να αποτρέψουν μια κακοδιατυπωμένη δήλωση catalog από το να υποβαθμίσει την ενεργή έκδοση
Version 3.83.0
Αλλαγμένο (Changed)
- Το
PageLabelledPdfStreamλύνει και ενημερώνει πλέον το catalog μέσω οριοθετημένων stream windows και του αραιού lazy ευρετηρίου objects - Η έξοδος page labels αντιγράφει μεγάλα PDF πηγής σε εύρη σταθερού μεγέθους αντί να δεσμεύει πλήρη byte array εγγράφου στη συνήθη διαδρομή xref
Version 3.82.0
Αλλαγμένο (Changed)
- Το
ApplyDefaultOpenActionδιαβάζει πλέον classic, xref-stream, hybrid και object-stream revisions μέσω αραιού lazy ευρετηρίου objects, συμπεριλαμβανομένων εγγράφων με πολύ μεγάλους αριθμούς objects - Η επεξεργασία default open action χρησιμοποιεί windows σταθερού μεγέθους και οριοθετημένη αντιγραφή εύρους αντί να φορτώνει το πλήρες PDF σε έναν byte array
Version 3.81.0
Προστέθηκε (Added)
- Το
PostProcessSavedPdfδέχεται τρία seekable workspaces ιδιοκτησίας caller για custom ορόφους μνήμης και disk-backed επεξεργασία
Αλλαγμένο (Changed)
- Το
TPdf.SaveAsεφαρμόζειSaveMemoryLimitκαιSaveTemporaryDirectoryσε κάθε workspace post-processing αποθηκευμένου PDF και συμπεριλαμβάνει τα spills τους στα diagnostics - Η εγγενής επιδιόρθωση incremental xref-stream χρησιμοποιεί windows tail και λεξικού σταθερού μεγέθους με οριοθετημένη αντιγραφή εύρους αντί για byte arrays ολόκληρου αρχείου και επαναλαμβανόμενες πραγματοποιήσεις πλήρους αρχείου
Version 3.80.0
Προστέθηκε (Added)
- Το
ReadAttachmentMetadataκαταγράφει ονόματα συνημμένων, περιγραφές, MIME subtypes, αποκωδικοποιημένα μεγέθη και αναγνωσιμότητα σε μία οριοθετημένη εγγενή απαρίθμηση - Το
ExtractAttachmentsToStreamsγράφει μια παρτίδα σε streams ιδιοκτησίας caller με όρια byte ανά αρχείο και συνολικά, configurable chunks εγγραφής, ακύρωση και results ανά στοιχείο
Αλλαγμένο (Changed)
- Η batch εξαγωγή κρατά το πολύ ένα αποκωδικοποιημένο συνημμένο στη μνήμη PDFiumPas αντί να υλοποιεί κάθε payload της παρτίδας
Version 3.79.0
Προστέθηκε (Added)
- Τα
TPdfCacheGovernor,TPdf.CacheBudgetBytes, ερωτήματα χρήσης ανά είδος και telemetry συντονίζουν τη διατηρούμενη μνήμη cache μέσω ενός thread-safe global byte budget LRU - Το
TPdfTileCacheκαι το system-font cache όλης της process μπορούν να συμμετάσχουν σε governor επιλογής caller με ακριβή λογιστική bitmap και font bytes
Αλλαγμένο (Changed)
- Τα parsed page scenes, thumbnails, structure data, text snapshots και page-object snapshots ανταγωνίζονται πλέον υπό default budget 256 MiB ανά
TPdfδιατηρώντας τα υπάρχοντα όρια entry count - Τα ενεργά page scenes παραμένουν καρφιτσωμένα μέχρι το render να ολοκληρωθεί, και τα αδιαφανή εγγενή page scenes χρησιμοποιούν ρητά εκτιμώμενη χρέωση επειδή το PDFium δεν εκθέτει configurable API συνολικού byte cache
Version 3.78.0
Προστέθηκε (Added)
- Τα
TPdfLayoutPagedPlan,TPdfLayoutDocument.BuildPagedPlanκαιTPdf.GeneratePagedLayoutstreamάρουν εντολές διάταξης σε seekable αποθήκευση επιλογής caller και υλοποιούν μία σελίδα τη φορά
Αλλαγμένο (Changed)
- Οι μεγάλες παραγόμενες διατάξεις μπορούν να κάνουν spill εντολές σε προσωρινή αποθήκευση, να διατηρούν configurable LRU page cache, να επαναφέρουν μη συνεχόμενα τμήματα header και footer και να αφήνουν wrapped κείμενο μετά από κάθε flow item
Version 3.77.0
Προστέθηκε (Added)
- Το
TPdfLayoutTable, γραμμές, κελιά και table options προσθέτουν cross-page πίνακες με resolved grid tracks, λεζάντες, επαναλαμβανόμενες γραμμές header, διαιρετές γραμμές body, links και configurable περιγράμματα
Αλλαγμένο (Changed)
- Οι παραγόμενοι tagged πίνακες διατηρούν μία συνεχή δομή Table / TR / TH / TD σε σελίδες, κρατούν ατομικά τα groups row-span και συσχετίζουν αυτόματα data κελιά με header IDs
Version 3.76.0
Προστέθηκε (Added)
- Τα
TPdfLayoutConstraintsκαιSetLastItemConstraintsπροσθέτουν keep-together, keep-with-next, physical page-break-before / after και configurable έλεγχο widow / orphan γραμμών στις παραγόμενες διατάξεις
Αλλαγμένο (Changed)
- Το
BuildPlanεπαναχρησιμοποιεί κάθε αποτέλεσμα wrapped text για πρόβλεψη pagination και εκπομπή εντολών, αποτρέποντας το keep-with-next από επανάληψη μέτρησης κειμένου
Version 3.75.0
Προστέθηκε (Added)
- Το
TPdf.InspectPdfUaUnicodeCoverageαναφέρει οριοθετημένα στοιχεία επιπέδου object για direct αντιστοιχίσεις Unicode, αντικαταστάσειςActualText, σφάλματα αντιστοίχισης, αγνοούμενες τιμές Unicode και άλυτα source objects
Αλλαγμένο (Changed)
- Το
TPdf.ValidatePdfUaεπαναχρησιμοποιεί πλέον ενιαία σάρωση χαρακτήρων scoped σε object που εξαιρεί Artifact και παραγόμενους χαρακτήρες και αποτρέπει τοActualTextενός text object από το να σκιάζει παρακείμενο περιεχόμενο
Version 3.74.0
Αλλαγμένο (Changed)
- Τα
ValidatePdfUaPageContentTaggingκαιTPdf.ValidatePdfUaαναφέρουν πλέονpvuaiArtifactInStructureTreeόταν ένα page object Artifact διεκδικείται από MCID δέντρου δομής, συμπεριλαμβανομένων pagination artifacts βάσει path - Η σάρωση page content PDF/UA βραχυκυκλώνει πλέον μόνο αφού εντοπιστούν τόσο untagged πραγματικό περιεχόμενο όσο και άκυρο Artifact containment, διατηρώντας κάλυψη cross-page χωρίς επανάληψη ολοκληρωμένων ελέγχων
Version 3.73.0
Προστέθηκε (Added)
- Το
TPdf.InspectPdfUaLanguageCoverageαναφέρει οριοθετημένα στοιχεία page objects και structure strings για spans φυσικής γλώσσας, συμπεριλαμβανομένης ενεργού γλώσσας, πηγής δήλωσης, MCID, δείκτη δομής και αποσπασμάτων κειμένου - Το
ResolvePdfUaEffectiveLanguageλύνει δηλώσεις γλώσσας marked-content, πλησιέστερου structure ancestor και catalog με ρητά στοιχεία εγκυρότητας
Αλλαγμένο (Changed)
- Το
TPdf.ValidatePdfUaαναφέρει πλέονpvuaiNaturalLanguageUncoveredόταν μη-artifact κείμενο ή accessibility strings δεν έχουν έγκυρη ενεργή δήλωση/Lang
Version 3.72.0
Προστέθηκε (Added)
- Το
TPdf.InspectPdfAMetadataαναφέρει τυποποιημένα στοιχεία ισοδυναμίας ανά πεδίο και για τις οκτώ αντιστοιχίσεις ISO 19005-1 Info-to-XMP, συμπεριλαμβανομένων ρητών κενών τιμών και αποτυχιών parse ημερομηνιών - Το
TPdf.NormalizePdfAMetadataεπιδιορθώνει μόνο τις mismatched mapped ιδιότητες XMP διατηρώντας άσχετα namespaces και μη default γλωσσικές εναλλακτικές
Αλλαγμένο (Changed)
- Το
TPdf.ValidatePdfAαναφέρει πλέονpvaiInfoXmpValueMismatchόταν οι τιμές Info αποκωδικοποιημένες από PDFium διαφέρουν από σωστά τυποποιημένες τιμές XMP μετά από σύγκριση Unicode ή ημερομηνιών με επίγνωση ζώνης ώρας
Version 3.71.0
Προστέθηκε (Added)
- Το
InspectPdfVT2sStreamεπιστρέφει στοιχεία συνθήκης εκτύπωσης για κάθε MIME part PDF/VT, συμπεριλαμβανομένης ταυτότητας OutputIntent, provenance ενσωματωμένου ή MIME προφίλ, hashes ICC και στοιχεία header, και μετρήσεις σελίδων και εγγραφών DPart - Το
FPdfIccProfileπαρέχει οριοθετημένη επιθεώρηση header και tag-table ICC με υποστήριξη MD5, SHA-256, χρωματικού χώρου, έκδοσης, device class, profile-ID και πολύγλωσσης profile-description
Αλλαγμένο (Changed)
- Η επικύρωση PDF/VT-2s λύνει πλέον προγενέστερα συνημμένα ICC MIME μέσω file specifications URL
DestOutputProfileRefκαι επικυρώνειCheckSum,ICCVersion,ProfileCS,ProfileName, device class και επιτρεπόμενους process χρωματικούς χώρους - Όλα τα parts PDF/VT απαιτούν πλέον ένα authoritative OutputIntent
GTS_PDFX, packaging προφίλ ενσωματωμένου ή εξωτερικού κατάλληλο για PDF/X-base, και την ίδια characterized συνθήκη εκτύπωσης, ενώ συνημμένα μόνο PDF/X μένουν εκτός συγκρίσεων PDF/VT - Η επικύρωση single-file PDF/VT-2 αναγνωρίζει πλέον το
DestOutputProfileRefως εξωτερικό προφίλ προορισμού αντί να το αναφέρει ως απόν
Version 3.70.0
Αλλαγμένο (Changed)
- Η επικύρωση PDF/VT ελέγχει πλέον
GTS_Scope,GTS_XID,GTS_EnvκαιGTS_Encapsulatedαπευθείας σε κάθε XObject αντί να επιτρέπει σε κοντινά ή εμφωλευμένα λεξικά να ικανοποιούν hint requirements - Το scope
Recordλύνει πλέονRecordLevelαπό το indirect λεξικόDPartRoot, ενώ το scopeStreamαπορρίπτεται σε αρχεία PDF/VT-1 - Τα decoded content streams σελίδων και Form XObjects επικυρώνουν πλέον ορατότητα πόρων
Do, μετρήσεις εμφανίσεωνSingleUseκαι ιδιοκτησία recipient-record μέσω effective κληρονομημένων πόρων και της ιεραρχίας DPart - Τα encapsulated XObjects επικυρώνουν πλέον boolean shape, προτεινόμενο scope, Image
Intent, isolated transparency groups, blending χρωματικούς χώρους και direct ή εμφωλευμένες εξαρτήσεις optional content
Version 3.69.0
Αλλαγμένο (Changed)
- Η επικύρωση PAdES απορρίπτει πλέον διπλότυπες εγγραφές
Contents,ByteRange,SubFilter,FilterκαιTypeαντί να δέχεται την τιμή που διάλεξε ο parser - Η ανακάλυψη υπογραφών χρησιμοποιεί πλέον stream-aware γραμμική σάρωση λεξικών, αναγνωρίζει escaped PDF name tokens και δεν ανακατευθύνεται από κλειστό εμφωλευμένο λεξικό τοποθετημένο πριν το πραγματικό
ByteRange - Η επικύρωση
ByteRangeυπογραφής απαιτεί πλέον το εξαιρούμενο κενό να ταιριάζει ακριβώς με το direct hexadecimal tokenContentsενώ εξακολουθεί να επιτρέπει μεταγενέστερες incremental revisions - Τα λεξικά υπογραφών απαιτούν πλέον ένα
Filterμε τιμή όνομα και επιβάλλουν συνεπείς συνδυασμούς τύπου και subfilterSigήDocTimeStamp
Version 3.68.0
Προστέθηκε (Added)
- Το
TPdf.BuildPadesEvidenceReportσυσχετίζει facts υπογραφών PDFium, πολιτική CMS, κατάσταση trust και timestamp, hashes διαδρομής πιστοποιητικών, κάλυψη DSS/VRI και αποφάσεις μεταγενέστερων revisions για κάθε υπογραφή - Το
TPadesEvidenceReportεξάγει οριοθετημένα evidence πολλαπλών υπογραφών ως JSON ή CSV και αναφέρει telemetry πηγής, υπογραφής, DSS, revision και περικοπής
Αλλαγμένο (Changed)
- Η επικύρωση trust PAdES καταγράφει πλέον ταυτότητες SHA-256 για το πιστοποιητικό υπογράφοντα και την ταξινομημένη διαδρομή πιστοποιητικών Windows διατηρώντας offline επικύρωση ως default
- Η παραγωγή evidence επαναχρησιμοποιεί μία retained σύλληψη source bytes σε analysis compliance, trust, DSS και revision αντί να αντιγράφει το αρχικό PDF σε νέο stream για κάθε στάδιο
Version 3.67.0
Προστέθηκε (Added)
- Το
TPadesSignatureFieldOptionsδημιουργεί configurable ονόματα πεδίων υπογραφής, απαιτούμενα seed values, λίστες λόγου και legal attestation, αποδεκτά πιστοποιητικά υπογραφόντων και field locks - Η τοπική και η απομακρυσμένη υπογραφή μπορούν να συντάξουν υπογραφές έγκρισης ή πιστοποίησης με transformations
FieldMDPκαιDocMDPτου ISO 32000-1
Αλλαγμένο (Changed)
- Οι υπογραφές πιστοποίησης διατηρούν υπάρχοντα δικαιώματα catalog ενώ καταχωρούν τη νέα υπογραφή μέσω
/Perms /DocMDP
Version 3.66.0
Προστέθηκε (Added)
- Το
RenderPageBandedToStreamγράφει έξοδο PNG ή TIFF απευθείας σε stream του caller με configurable ύψος band, συμπίεση PNG και όρια output bytes - Το
RenderPageBandedToEncoderτροφοδοτεί διαδοχικά bands σελίδας σε codecs που ορίζει ο caller και επιστρέφει telemetry band, γραμμής, μνήμης, ολοκλήρωσης και εξόδου
Διορθώθηκε (Fixed)
- Το
RenderPageBandedδιατηρεί πλέον τη γεωμετρία απόδοσης πλήρους σελίδας και αποκόπτει κάθε ζητούμενο band αντί να επανακλιμακώνει την πλήρη σελίδα μέσα σε κάθε band
Version 3.65.0
Προστέθηκε (Added)
- Το
TPdfParallelRenderReportαναφέρει πλέον μέγεθος πηγής, κορυφαία captured μνήμη, storage backend και είδος shared backing
Αλλαγμένο (Changed)
- Το
RenderPagesParallelμοιράζεται την captured πηγή μέσω αμετάβλητης μνήμης, read-only file mapping ή τυχαίας πρόσβασηςFPDF_LoadCustomDocumentαντί να δεσμεύει δεύτερο byte array πλήρους εγγράφου - Οι spilled πηγές parallel render παραμένουν υπό
SaveMemoryLimitκαι δεν απαιτούν πλέον επαναφόρτωση του πλήρους PDF σε addressable process μνήμη
Version 3.64.0
Προστέθηκε (Added)
- Το
ImportImposedέχει πλέον overload που επιστρέφειTPdfImpositionExecutionReportμε μετρήσεις εγγενών εισαγωγών, μοναδικών πηγών, κενών slots, XObject templates, form objects, δημιουργίας περιεχομένου και σελίδων εξόδου
Αλλαγμένο (Changed)
- Η imposition μηδενικής geometry στέλνει κάθε ταξινομημένη σελίδα πηγής μέσω μίας κλήσης
FPDF_ImportPagesByIndexπριν από κενή εισαγωγή και εγγενή σύνθεση N-up - Η imposition custom geometry επαναχρησιμοποιεί ένα εγγενές XObject template ανά μοναδική σελίδα πηγής, διαβάζει cached page metrics χωρίς αλλαγή της σελίδας πηγής και προ-δεσμεύει ακριβή αποθήκευση σχεδίου
Version 3.63.0
Προστέθηκε (Added)
- Τα
BeginPageObjectEditTransaction,CommitPageObjectEditTransactionκαιRollbackPageObjectEditTransactionομαδοποιούν εγγενείς μεταβολές page objects σε ατομική batch scoped σε σελίδα με επικυρωμένο snapshot rollback - Το
PageObjectEditTransactionStatusαναφέρει τη δεσμευμένη σελίδα, dirty state, πλήθος επιτυχών μεταβολών και πλήθος δημιουργίας περιεχομένου
Αλλαγμένο (Changed)
- Οι δεσμευμένες batches objects καλούν πλέον το
FPDFPage_GenerateContentμία φορά αντί μία ανά μεταβολή insert, remove, transform, property, mark, annotation-object ή appearance - Αποθήκευση, αλλαγές σελίδας, διαγραφή σελίδας, εμφωλευμένα edit transactions και αποτυχημένες εγγενείς insert ή ενημερώσεις annotations απορρίπτονται πριν το deferred περιεχόμενο χαθεί
Version 3.62.0
Προστέθηκε (Added)
- Το
ReadPageObjectsSnapshotσυλλαμβάνει facts page objects ιδιοκτησίας caller με budgets object, path, clip, mark, text, string και deadline - Το
PageObjectsSnapshotπαρέχει LRU επαναχρησιμοποίηση ενήμερη για revision με configurable χωρητικότητα και telemetry occupancy, hit και miss
Αλλαγμένο (Changed)
- Το
PageComplexityεπαναχρησιμοποιεί πλέον το αμετάβλητο page-object snapshot αντί να επαναλαμβάνει εγγενή απαρίθμηση objects και ερωτήματα transparency, path και image
Version 3.61.0
Προστέθηκε (Added)
- Το
TPdfεκθέτει πλέον ενιαίο thumbnail LRU για embedded και rendered προεπισκοπήσεις με configurable ορόφους entries και bytes συν telemetry hit, miss, eviction, occupancy και revision - Το
RenderPageThumbnailδέχεται rotation, render options, χρώμα φόντου καιTPdfColorSchemeδιατηρώντας το contract bitmap ιδιοκτησίας caller
Αλλαγμένο (Changed)
- Η επαναλαμβανόμενη εξαγωγή και απόδοση thumbnails επαναχρησιμοποιεί εγγενή results PDFium μέσω κλειδιών revision, σελίδας, πηγής, μεγέθους, rotation, flags, φόντου και colour scheme, συμπεριλαμβανομένης cached απουσίας προαιρετικών embedded thumbnails
- Το
TPdfThumbnailViewσυγχρονίζει το bitmap cache ορατής σελίδας του με revisions thumbnails εγγράφου ώστε οι επεξεργασίες να μην αφήνουν παλαιές προεπισκοπήσεις
Version 3.60.0
Προστέθηκε (Added)
- Το
ReadTextPageSnapshotσυλλαμβάνει Unicode, mappings UTF-16, geometry και στυλ χαρακτήρων και κανονικοποιημένα μεταδεδομένα text objects σε ένα πέρασμα με ρητά budgets χαρακτήρων, objects, font names και deadline - Το
TextPageSnapshotπαρέχει βαθιά αντίγραφα ιδιοκτησίας caller μέσω configurable LRU ενήμερου για revision με telemetry χωρητικότητας, πλήθους, hit και miss
Αλλαγμένο (Changed)
- Τα
GetStructuredTextκαιGetTextInReadingOrderphysical layout επαναχρησιμοποιούν πλέον το ίδιο text snapshot και εφαρμόζουν ταξινόμηση geometry O(n log n)
Διορθώθηκε (Fixed)
- Οι μικρές caches snapshot text και structure αποβάλλουν πλέον την παλαιότερη σελίδα ενώ αποθηκεύουν νέα δεδομένα υπό τον ζητούμενο δείκτη σελίδας, αποτρέποντας cross-page cache aliasing
Version 3.59.0
Προστέθηκε (Added)
- Το
LifecycleActionPolicyεπιλέγει απενεργοποιημένη, explicit-only ή συμβατή αυτόματη εκτέλεση lifecycle actions PDF εγγράφου και σελίδας - Το
ExecuteDocumentLifecycleActionεκθέτει document actions JavaScript, open, close, save και print, ενώ τοExecutePageLifecycleActionεκτελεί page open και close actions χωρίς αλλαγή τουPageNumber
Αλλαγμένο (Changed)
- Τα headless page loads λαμβάνουν πλέον τις ίδιες αυτόματες page open και close actions με τα viewer-driven loads, με προσωρινές σελίδες επαναχρησιμοποιούμενες ή αποδεσμευόμενες υπό το render lock
Version 3.58.0
Προστέθηκε (Added)
- Τα
ReadStructureElementsκαιVisitStructureElementsπαρέχουν επαναληπτική διάβαση tagged δομής με ρητά budgets βάθους, στοιχείων, attributes και χρόνου συν λεπτομερή κατάσταση ολοκλήρωσης - Το
StructureElementsForPageεκθέτει snapshots σελίδων one-based χωρίς αλλαγή τουPageNumber, με πίσω τους ένα configurable LRU cache ενήμερο για revision με telemetry hit, miss και count
Αλλαγμένο (Changed)
- Οι καταναλωτές accessibility, reflow, validation και viewer επαναχρησιμοποιούν πλέον snapshots δομής ιδιοκτησίας caller μέχρι μια σχετική επεξεργασία εγγράφου ή σελίδας να τα ακυρώσει
Version 3.57.0
Προστέθηκε (Added)
- Τα πλήρη εγγενή callbacks form-host παρέχουν πλέον lazy page handles ασφαλή για διάρκεια ζωής, δρομολόγηση cursor interaction-view, ειδοποίηση αλλαγής τιμής, ορθογώνια επιλεγμένου κειμένου, συμβάντα URI και συμβάντα προορισμού GoTo
- Το
FormHostCallbacksCompleteαναφέρει ετοιμότητα callbacks, ενώ ταFormSelectionRectsκαιClearFormSelectionRectsεκθέτουν οριοθετημένη geometry επιλογής σε χώρο σελίδας
Διορθώθηκε (Fixed)
- Τα callbacks τρέχουσας σελίδας XFA μεταφράζουν πλέον σωστά μεταξύ των zero-based page indexes του PDFium και του one-based
PageNumberτου component - Τα callbacks URI AcroForm και XFA διατηρούν πλέον raw URI bytes και απαιτούν ρητή έγκριση host πριν από οποιαδήποτε εξωτερική εκκίνηση
Version 3.56.0
Προστέθηκε (Added)
- Τα indexed snapshots
PageMetricsεκθέτουν διαστάσεις, rotation, ετικέτα, διαφάνεια και τα πέντε standard page boxes μιας σελίδας χωρίς αλλαγή της ενεργής σελίδας
Αλλαγμένο (Changed)
- Οι επαναλαμβανόμενες αναγνώσεις page metadata επαναχρησιμοποιούν ένα εγγενή cache snapshot που ακυρώνεται αυτόματα, μειώνοντας ανοίγματα σελίδων σε workloads thumbnail, preflight και ανάλυσης εγγράφου
Version 3.55.0
Προστέθηκε (Added)
- Η επιθεώρηση paths εκθέτει ακριβή control points cubic Bézier όταν το φορτωμένο build PDFium παρέχει
FPDFPath_GetBezierControlPoints, με προαιρετικό probe δυνατοτήτων για παλαιότερα DLLs - Τα
FormFieldTypeAtPoint,TPdfView.FormFieldTypeAtκαι οι indexed ιδιότητεςFontFlagsεκθέτουν εγγενή facts form και γραμματοσειράς χωρίς raw handles - Το
TPdf.Signaturesεπιστρέφει όλα τα εγγενή contents υπογραφών, ByteRanges, subfilters, λόγους, ώρες και δικαιώματα σε ένα snapshot ιδιοκτησίας caller
Αλλαγμένο (Changed)
- Οι έλεγχοι παρουσίας form fields χρησιμοποιούν πλέον direct εγγενή hit testing σημείου αντί να ανοίγουν και να κλείνουν handles annotations
Διορθώθηκε (Fixed)
- Η επικύρωση PDF/E-1 επιτρέπει πλέον συνηθισμένα πεδία AcroForm, embedded files και annotations FileAttachment ενώ αναφέρει ακριβώς top-level AcroForm
/XFAκαι/NeedAppearances true, συμπεριλαμβανομένων indirect και object-stream τιμών
Version 3.54.0
Προστέθηκε (Added)
- Το
FPdfProductionπροσθέτει μετρημένη επιλογή εικόνας πολλαπλών codecs, backends επεξεργασίας χρώματος και γραμματοσειρών, διαδρομές SVG, σχέδια αντικατάστασης με στυλ, συναλλακτικές ενημερώσεις πακέτων XFA, διανύσματα γραμμωτών κώδικων, μοντέλα Portfolio και ασφαλή εξαγωγή RichMedia - Το
FPdfStandardsExecutionπροσθέτει μέτρηση και μετατροπή GeoPDF, συναλλακτική επισκευή PDF/A, σχέδια PDF/UA-2, εξωτερικά πολύχρωμα προφίλ, ιστορικά τεκμήρια DSS και VRI, ερωτήματα DPart, βαθιά γεγονότα PDF/E και λωρίδες PDF/R σταθερής μνήμης - Το
TPdf.ImportImposedσυνθέτει οριοθετημένα σχέδια N-up και Booklet μέσω εγγενών διαδρομών N-up ή page-XObject με ακριβή γεωμετρία gutter, bleed και creep, ενώ τοTPdf.CompareWithαναφέρει σημασιολογικές, γεωμετρικές και ανεκτικές διαφορές εικονοστοιχείων - Η υπογραφή PAdES υποστηρίζει πλέον συνδεόμενους επικυρωτές διαδρομής και πάροχους HSM, PDF MAC συνδεδεμένο με υπογραφή,
cms-algorithm-protectionκαι έγγραφα πολιτικής υπογραφής εκτός σύνδεσης
Αλλαγμένο (Changed)
- Η μηχανή διάταξης δέχεται οριοθετημένο HTML και Markdown, ρέει μεταξύ στηλών και επιλύει σταθερά, αυτόματα και κλασματικά ίχνη πλέγματος
- Οι πλήρεις διαδρομές XFDF διατηρούν πλέον πεδία πολλαπλών τιμών και rich-text, popups, ενέργειες, προορισμούς, επικαλύψεις εμφάνισης, προσαρμοσμένα namespaces και ρητή κατάσταση παρουσίας
Version 3.53.0
Προστέθηκε (Added)
- Το
ConfigurePdfLibraryπαρέχει αμετάβλητη εγγενή ρύθμιση renderer, γραμματοσειρών, V8, Brotli, διαδρομής γραμματοσειρών χρήστη και sandbox πριν από την πρώτη φόρτωση PDFium - Εγγενή χαρακτηριστικά δομής, σχέσεις σχολιασμών, συνημμένα αρχείων σχολιασμών, τυποποιημένες τιμές λεξικού, πολιτικές εστίασης, ερωτήματα z-order συνδέσμων και φορμών και διαγνωστικά προεπιλεγμένης αντιστοίχισης TTF είναι διαθέσιμα μέσω οριοθετημένων API υψηλού επιπέδου
- Το
TPdfView.ReplaceFormTextAndKeepSelectionδιατηρεί την ενεργή επιλογή σε επαναλαμβανόμενες επεξεργασίες και τα συμβάντα απελευθέρωσης δεξιού κουμπιού φτάνουν πλέον στην εγγενή μηχανή φορμών
Αλλαγμένο (Changed)
- Ο ντετερμινιστικός χρόνος εγγράφου χρησιμοποιεί πλέον σταθερή μετατροπή ημερολογίου UTC εκτός από σταθερή εποχή, παράγοντας τα ίδια μεταδεδομένα σε κάθε ζώνη ώρας του κεντρικού υπολογιστή
- Οι εγγραφές συμβολοσειρών συνημμένων επικυρώνουν το εγγενές αποτέλεσμα και κωδικοποιούν τα κλειδιά του λεξικού ως UTF-8
Version 3.52.0
Προστέθηκε (Added)
- Το
TPdf.GetImageObjectRenderedBitmapεπιστρέφει το αποδιδόμενο αποτέλεσμα ενός αντικειμένου εικόνας με την τρέχουσα μήτρα, χρωματικό χώρο, μάσκες και κατάσταση απόδοσης εφαρμοσμένες - Τα
TPdf.TextObjectGlyphWidth,TPdf.TextObjectFontSizeκαιTPdf.SetTextObjectFontSizeεκθέτουν εγγενή μέτρηση glyph και ακριβή επεξεργασία μεγέθους γραμματοσειράς αντικειμένου κειμένου - Τα
TPdf.TransformPageObjectClipPath,TPdf.DetachFormObjectChild,TPdf.SharePageObjectMarkκαιTPdf.IsAnnotationObjectSubtypeSupportedπροσθέτουν ακριβή επεξεργασία αντικειμένων περιεχομένου και επιθεώρηση δυνατοτήτων
Version 3.51.0
Διορθώθηκε (Fixed)
- Οκτώ μέλη του
TPdfπου ανακοινώθηκαν σε προηγούμενες σημειώσεις έκδοσης είχαν δηλωθεί στην ιδιωτική ενότητα και δεν μπορούσαν να κληθούν εκτός της μονάδαςPDFium· είναι πλέον δημόσια όπως τεκμηριώνεται:LinkAtPoint,GetTextRenderMode,GetTextObjectRenderedBitmap,IsAnnotationSubtypeSupported,ChooseRenderFlags,AttachmentHasKey,GetAttachmentStringValueκαιSetAttachmentStringValue
Αλλαγμένο (Changed)
- Η αγγλική τεκμηρίωση αναφοράς καλύπτει πλέον κάθε δημόσιο μέλος των
TPdfκαιTPdfView: 88 μέλη που δεν είχαν σελίδα αναφοράς απέκτησαν μία, και οι σελίδες κλάσεων, το ευρετήριο πλοήγησης και η αναφορά API τα απαριθμούν όλα - Οι σελίδες αναφοράς που προηγουμένως έδειχναν σε κοινή σελίδα συνδέονται πλέον στη σελίδα του ίδιου του μέλους, ώστε ένα αποτέλεσμα αναζήτησης να ανοίγει την περιγραφή του API που αναζητήθηκε
- Η αναφορά API τεκμηριώνει τα enumerations και τα records που είναι προσβάσιμα από δημόσιες υπογραφές, συμπεριλαμβανομένων τύπων αναφοράς φόρτωσης και ροής, κειμένου, γραμματοσειράς και OCR, τύπων δημιουργού διάταξης, τύπων επικύρωσης PAdES, τύπων παρτίδας και επικύρωσης, και τύπων παράλληλης απόδοσης
Version 3.50.0
Προστέθηκε (Added)
- Κάθε GUI demo ανοίγει πλέον με έτοιμο προς χρήση περιεχόμενο αντί για κενή φόρμα: τα demo προβολής και εργαστηρίου φορτώνουν ένα παραγόμενο έγγραφο δείγματος, τα demo αναφορών παράγουν μια ολοκληρωμένη αναφορά κατά την εκκίνηση και τα demo επεξεργασίας προ-δημιουργούν δείγματα εισόδου ώστε η κύρια ενέργεια να εκτελείται με ένα κλικ
- Τα
MultiPageViewer,SplitViewκαιFontPropertiesδημιουργούν έγγραφα δείγματος στη μνήμη κατά την εκκίνηση (μια επίδειξη έξι σελίδων, δύο έγγραφα σύγκρισης δίπλα-δίπλα και μια σελίδα πολλαπλών γραμματοσειρών για έλεγχο με κλικ) - Τα demo επεξεργασίας όπως τα
MergePDF,BatchExport,SplitPDF,ExtractText,PDFtoJpg,PrintPDFκαιPrintPreferencesπρο-δημιουργούν δειγματικά PDF δίπλα στο εκτελέσιμο και προ-συμπληρώνουν τα πεδία εισόδου τους, με idempotent αναδημιουργία που δεν αντικαθιστά ποτέ υπάρχοντα αρχεία - Τα
FormFillκαιExtractImagesφορτώνουν αυτόματα τα αρχεία δείγματος που συνοδεύουν τους φακέλους demo τους, τοImageToPDFδημιουργεί δύο δειγματικά bitmaps, τοWatermarkStampπρο-κατασκευάζει τα δείγματα σφραγίδων του και τοXfdfLabανοίγει σε ένα παραγόμενο έγγραφο που φέρει σχολιασμούς κειμένου και επισήμανσης
Αλλαγμένο (Changed)
- Το
CreatePDFδημιουργεί πλέον τοSample.pdfδίπλα στο εκτελέσιμο κατά την εκκίνηση χωρίς να εμφανίζει διάλογο, ώστε το έγγραφο να υπάρχει τη στιγμή που ανοίγει το demo - Τα
TPdf.AboutInfoκαι τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.50.0
Version 3.49.0
Προστέθηκε (Added)
- Τα
FORM_GetTextDirectionκαιFORM_SetTextDirectionαπό τα ενημερωμένα δυαδικά αρχεία PDFium συνδέονται πλέον, διατηρώντας το δυναμικό επίπεδο σύνδεσης σε πλήρη κάλυψη και των 472 εξαγωγών PDFium - Τα
TPdf.FocusedFormFieldTextDirectionκαιTPdf.SetFocusedFormFieldTextDirectionεκθέτουν την κατεύθυνση κειμένου στη μνήμη του εστιασμένου widget μέσω του νέου enumTPdfFormTextDirection(ftdUnknown,ftdAuto,ftdLTR,ftdRTL), με αντίστοιχαTPdfViewπου επανασχεδιάζουν τη σκηνή σελίδας μετά από αλλαγή κατεύθυνσης
Αλλαγμένο (Changed)
- Το
FPDF_LIBRARY_CONFIGαντικατοπτρίζει πλέον τη διάταξη της έκδοσης 6 του upstream με το πειραματικό πεδίοm_BrotliEnabledγια δυαδικά που κατασκευάζονται μεPDF_ENABLE_BROTLI - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.49.0
Version 3.48.0
Προστέθηκε (Added)
- Το demo
PDFViewerδημιουργεί πλέον κατά την εκκίνηση ένα έγγραφο επίδειξης έξι σελίδων στη μνήμη μέσω του creation API, ώστε ο προβολέας να ανοίγει με αποτυπωμένο περιεχόμενο και χωρίς αρχείο δείγματος στον δίσκο - Ένα πάνελ μικρογραφιών βασισμένο στο
TPdfThumbnailViewπροσφέρει προεπισκοπήσεις σελίδων με πλοήγηση με κλικ δίπλα στο δέντρο σελιδοδεικτών και στις τρεις εκδόσεις του demo - Η αναζήτηση του προβολέα επισημαίνει πλέον κάθε αντιστοιχία στην τρέχουσα σελίδα μέσω του
HighlightSearchTextαντί για ένα μόνο ορθογώνιο αποτελέσματος, με τον αριθμό των αντιστοιχιών να εμφανίζεται στη γραμμή κατάστασης - Κουμπιά
Nightκαι2-Upενός κλικ στην εργαλειοθήκη εναλλάσσουν τη νυχτερινή λειτουργία απόδοσης duotone και τη λειτουργία εμφάνισης διπλής σελίδας
Αλλαγμένο (Changed)
- Η επιλογή κειμένου στον προβολέα χρησιμοποιεί πλέον το ενσωματωμένο μηχανισμό επιλογής του
TPdfViewμε επιλογή λέξης με διπλό κλικ, επιλογή με σύρση και συντομεύσεις πρόχειρου, αντικαθιστώντας τον υλοποιημένο από το μηδέν κώδικα επιλογής - Οι σελίδες αποδίδονται με σκιά και ομαλό κύλισμα για μια σύγχρονη εμπειρία ανάγνωσης
- Τα
TPdf.AboutInfoκαι τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.48.0
Version 3.47.0
Προστέθηκε (Added)
- Το
FPdfBenchmarkεκτελεί οριοθετημένες συλλογές PDF με ρυθμιζόμενα περάσματα προθέρμανσης και μέτρησης, όρια σελίδων και εικονοστοιχείων, συνεργατική ακύρωση και κατάσταση επιτυχίας, αποτυχίας ή παράλειψης ανά περίπτωση - Το
TPdfBenchmarkReportκαταγράφει μεγέθη εισόδου και αποθηκευμένων byte, καθυστέρηση φόρτωσης και πρώτης σελίδας, ρυθμό απόδοσης, χρονισμό αποθήκευσης και νέου ανοίγματος, δειγματοληπτικό μέγιστο working set, σημασιολογικά και εικονοστοιχειακά hashes SHA-256, σταθερότητα επαναλαμβανόμενων εκτελέσεων, πύλες αναμενόμενων hash και ισοδυναμία ανεξάρτητου νέου ανοίγματος - Οι αναφορές benchmark εξάγουν CSV ασφαλές για τύπους και δομημένα JSON για CI, ποιοτική αποδοχή εκδόσεων και μακροχρόνια παρακολούθηση απόδοσης
- Τα
GetSkiaRenderCapabilities,RenderPageSkiaκαιRenderPageSkiaByIndexεκθέτουν προαιρετική εγγενή απόδοση σελίδων και φορμών μέσω Skia με επαναχρησιμοποίηση cache αναλυμένων σελίδων και χωρίς αυστηρή απαίτηση DLL export - Ένα versioned ABI εξόδου εκτύπωσης ελεγχόμενο από δυνατότητες εκθέτει ακριβή απαρίθμηση spot plates, απόδοση plates, ανίχνευση overprint και προεπισκόπηση overprint όταν τα παρέχει το φορτωμένο module PDFium
Διορθώθηκε (Fixed)
- Οι builds του PDFium χωρίς
PDF_USE_SKIAφορτώνονται πλέον κανονικά αντί να αποτυγχάνουν επειδή λείπουν τα πειραματικά Skia exports
Αλλαγμένο (Changed)
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.47.0
Version 3.46.0
Προστέθηκε (Added)
- Το
ValidatePdfRελέγχει πλέον περιεχόμενο σελίδων μόνο raster, γεωμετρία λωρίδων, χρωματικά μοντέλα, αποτελεσματική ανάλυση, παραμέτρους συμπίεσης, απαιτούμενα μεταδεδομένα και κρυπτογραφημένα προφίλ PDF 2.0 μέσω ρυθμιζόμενων επιλογών επικύρωσης - Το
BuildPdfARepairPlanμετατρέπει τα τεκμήρια επικύρωσης σε βήματα αποκατάστασης ταξινομημένα κατά εξαρτήσεις, με κλάσεις ασφαλείας, προστασίες επιπτώσεων σε υπογραφές και έξοδο JSON - Το
BuildPdfXProductionPreflightαναφέρει page boxes, ενσωματωμένες γραμματοσειρές, output intents, colourants, διαφάνεια, overprint, διαχωρισμούς, ανάλυση εικόνων και ετοιμότητα παραγωγής χωρίς αποκωδικοποίηση των φορτίων εικόνων - Η επικύρωση δομής PDF/UA-2 ελέγχει πλέον την ιδιοκτησία associated files, τη σειρά ανάγνωσης, τις περιγραφές, τις σχέσεις και την ανιχνευσιμότητα
Αλλαγμένο (Changed)
- Τα
TAssociateFile.Description,TPdf.ImageInfoκαιTPdf.PageComplexityεκθέτουν τα μεταδεδομένα που χρειάζονται τα workflows associated-file και production preflight - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.46.0
Version 3.45.0
Προστέθηκε (Added)
- Το
TPdfXmpPacketαναλύει, επεξεργάζεται, κλωνοποιεί και σειριοποιεί XMP με επίγνωση namespaces, με άγνωστα namespaces, τυποποιημένα RDF containers, τιμές URI και πόρων, qualifiers, γλωσσικές εναλλακτικές, packet wrappers και διατηρημένο padding - Τα
TPdf.ReadXmpPacketκαιSaveAsWithXmpPacketεκθέτουν ανάγνωση μεταδεδομένων υψηλού επιπέδου και ατομική έξοδο, με τις αλλαγές σε υπογεγραμμένα έγγραφα να απαιτούν ρητή εξουσιοδότηση
Ασφάλεια (Security)
- Ο οριοθετημένος XML reader απορρίπτει DTD και εξωτερικές οντότητες και περιορίζει byte πακέτου, εμφώλευση, κόμβους, χαρακτηριστικά και αριθμητικές αναφορές χαρακτήρων
Αλλαγμένο (Changed)
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.45.0
Version 3.44.0
Προστέθηκε (Added)
- Το
TPdfValidationRuleRegistryκαταχωρεί ρήτρες προφίλ με σοβαρότητα, εξαρτήσεις, οδηγίες αποκατάστασης, τεκμήρια και ενσωματωμένα ή προσαρμοσμένα κατηγορήματα - Τα
TPdfValidationBudgetκαιTPdfValidationExecutionContextοριοθετούν κανόνες, αποτυχίες, αντικείμενα, αναδρομή, τεκμήρια UTF-8, δεσμευμένη μνήμη, χρόνο εκτέλεσης, γρήγορη αποτυχία και συνεργατική ακύρωση - Το
ValidatePdfFilesParallelεπικυρώνει αρχεία μέσω απομονωμένων εγγράφων worker διατηρώντας τη σειρά εισόδου και συγκεντρώνοντας κατανομές ζητημάτων, χρονισμούς, αποτυχίες, ακυρώσεις και σφάλματα φόρτωσης
Αλλαγμένο (Changed)
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.44.0
Version 3.43.0
Προστέθηκε (Added)
- Το
TPdfStructureElementμεταφέρει πλέον γεγονότα namespace, αντιστοίχισης ρόλων namespace, αναφοράς, associated file, σχολιασμού, widget, ετικέτας και εμφάνισης για τη σημασιολογική επικύρωση PDF/UA-2 - Το
ValidatePdfUa2StructureElementsκαι οι εστιασμένοι validators του ελέγχουν namespaces και περιεκτικότητα ISO/TS 32005, οριοθετημένα πλέγματα πινάκων, σχολιασμούς, φόρμες, συσχετίσεις Formula/MathML, associated files, ρίζες εγγράφου, FENote, λίστες, αναφορές TOC, τίτλους και λεζάντες χωρίς φόρτωμα τουpdfium.dll - Το
ClassifyPdfUaNamespaceαναγνωρίζει τα namespaces δομής PDF 1.7, PDF 2.0, MathML, ARIA, DPUB, τα προσαρμοσμένα και τα απόντα - Το
PdfUa2StructureHasIssueπαρέχει ένα ασφαλές για C++Builder ερώτημα ενός ζητήματος χωρίς να επιστρέφει Pascal set κατά τιμή
Αλλαγμένο (Changed)
- Το
ValidatePdfUaStructureElementsεφαρμόζει αυτόματα το νέο σημασιολογικό σύνολο κανόνων γιαpuc2διατηρώντας τη διαδρομή κανόνων PDF/UA-1 - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.43.0
Version 3.42.0
Προστέθηκε (Added)
- Το
TPdfUaSaveOptions.PdfUa2δημιουργεί έξοδο PDF/UA-2 μεpdfuaid:part2,pdfuaid:rev2024 και αποτελεσματική έκδοση καταλόγου PDF 2.0 - Το
ValidatePdfUaανιχνεύει τοpuc2και αναφέρει απόντα μεταδεδομένα αναθεώρησης, αρχεία εκτός PDF 2.0, ανώνυμες διαμορφώσεις optional content, καταργημένους σχολιασμούς και γενικούς τίτλους H
Αλλαγμένο (Changed)
- Η επικύρωση PDF/UA επιλέγει πλέον κανόνες σειράς στηλοθετών, XFA και τίτλων ειδικούς για το προφίλ για PDF/UA-1 και PDF/UA-2
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.42.0
Version 3.41.0
Προστέθηκε (Added)
- Το
SetPageObjectMarkParamπροσθέτει ή αντικαθιστά μία παράμετρο integer, real, string ή blob σε υπάρχουσα καταχώρηση marked content χωρίς να αντικαθιστά το mark - Το
RemovePageObjectMarkParamαφαιρεί μία επιλεγμένη ιδιότητα διατηρώντας το όνομα του mark και κάθε άσχετη ιδιότητα
Αλλαγμένο (Changed)
- Οι μη ακέραιοι αριθμοί marked content πραγματοποιούν πλέον round-trip ως
pmpFloatαντί να περικόπτονται σε στιγμιότυπα ακεραίων - Η αποτυχημένη επικύρωση παραμέτρου κατά το
AddPageObjectMarkαφαιρεί το μερικώς δημιουργημένο εγγενές mark - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.41.0
Version 3.40.0
Προστέθηκε (Added)
- Το
ConfigureSystemFontProviderεγκαθιστά έναν mapper γραμματοσειρών εφαρμογής πριν ξεκινήσει το PDFium και παρέχει επικυρωμένα byte TrueType ή OpenType για γραμματοσειρές εγγράφου που λείπουν ή αντικαθίστανται - Το
TPdfSystemFontPolicyελέγχει την αντικατάσταση faces, το εγγενές fallback, τα όρια byte ανά γραμματοσειρά και την οριοθετημένη cache αιτημάτων - Το
GetSystemFontProviderStatisticsαναφέρει δραστηριότητα αντιστοίχισης, cache, fallback, απορρίψεων, πινάκων δεδομένων και ενεργών handles
Αλλαγμένο (Changed)
- Τα callbacks του provider εκθέτουν το ζητούμενο face, βάρος, στυλ, charset και pitch του PDFium κρατώντας τις αποτυχίες των callbacks μέσα στο εγγενές όριο
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.40.0
Version 3.39.0
Προστέθηκε (Added)
- Το
AddCidType2Textενσωματώνει δεδομένα TrueType από τον καλούντα με ρητή γεωμετρία CID-to-GID ανά γλύφο και αντιστοιχίσεις CID-to-Unicode - Το
TPdfCidFontOptionsεπιλέγει πλήρη ενσωμάτωση, προτιμώμενο subsetting με fallback ή απαιτούμενο subsetting και ρυθμίζει οριοθετημένα budgets γραμματοσειράς, γλύφων και Unicode - Το
TPdfCidFontReportαναφέρει αποφάσεις subsetting, μεγέθη byte, μοναδικούς γλύφους, κατάσταση ενσωμάτωσης, αναμενόμενο κείμενο, εξαγόμενο κείμενο και ακεραιότητα εξαγωγής
Αλλαγμένο (Changed)
- Το TrueType subsetting διατηρεί τους ζητούμενους αναγνωριστικούς γλύφων, απορρίπτει ανασφαλή έξοδο και αναιρεί κάθε εισαγόμενο αντικείμενο σελίδας αν αποτύχει η επαλήθευση αντιστοίχισης ή εξαγωγής
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.39.0
Version 3.38.0
Προστέθηκε (Added)
- Το
BuildReflowDocumentδημιουργεί ένα οριοθετημένο, επαναχρησιμοποιήσιμο δέντρο σημασιολογικών κόμβων από δομή Tagged PDF ή συμπέρασμα φυσικής διάταξης σε ένα επιλεγμένο εύρος σελίδων - Το
TPdfReflowDocument.ToHtmlεκπέμπει escaped, responsive επικεφαλίδες, παραγράφους, λίστες, σχήματα, λεζάντες, ενότητες σελίδων και πίνακες με σημασιολογία κεφαλίδας και span - Το
TPdfReflowOptionsελέγχει την ανίχνευση πινάκων, τις ενότητες σελίδων, τη γεωμετρία, το CSS, τις αλλαγές γραμμής, το εύρος σελίδων, την ακύρωση και τα budgets πόρων
Αλλαγμένο (Changed)
- Το περιεχόμενο πινάκων αντικαθιστά επικαλυπτόμενα blocks παραγράφων κατά το reflow, και η κατάσταση ενεργής σελίδας επαναφέρεται μετά από επιτυχία, αποτυχία ή ακύρωση
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.38.0
Version 3.37.0
Προστέθηκε (Added)
- Το
ApplyOcrSearchLayerαποδίδει τις επιλεγμένες σελίδες μέσω PDFium και στέλνει οριοθετημένα εικονοστοιχεία BGRA από πάνω προς τα κάτω σε έναIPdfOcrProviderπου παρέχει ο καλών - Το
TPdfOcrWordμεταφέρει κείμενο Unicode, βαθμό βεβαιότητας και τετράπλευρα σε χώρο εικονοστοιχείων που αντιστοιχίζονται μέσω της εγγενούς γεωμετρίας σελίδας σε αόρατο, αναζητήσιμο κείμενο - Το
TPdfOcrReportκαταγράφει ολοκλήρωση ανά σελίδα, παραλείψεις λόγω υπάρχοντος κειμένου, αποτυχίες, ακύρωση, αποδοσμένα εικονοστοιχεία και αποδεκτές ή απορριφθείσες λέξεις
Αλλαγμένο (Changed)
- Η εισαγωγή OCR διατηρεί τις αρχικές ροές εικόνων σάρωσης, φιλτράρει κακοσχηματισμένα ή χαμηλής βεβαιότητας αποτελέσματα, υποβάλλει μία φορά ανά σελίδα και επαναφέρει την ενεργή σελίδα
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.37.0
Version 3.36.0
Προστέθηκε (Added)
- Το
ExtractTablesανιχνεύει πίνακες με χαραγές ή στοίχιση κενών με βάση την εγγενή γεωμετρία λέξεων και τις μετασχηματισμένες χαραγές διαδρομών - Το
TPdfTableαναφέρει γραμμές, στήλες, συγχωνευμένα spans, όρια σελίδας, κελιά κεφαλίδας, τρόπο ανίχνευσης, βαθμό βεβαιότητας και άμεση έξοδο CSV ή JSON - Το
ExtractDocumentTablesσαρώνει κάθε σελίδα υπό κοινά budgets και επισημαίνει πίνακες που ταιριάζουν και συνεχίζονται πέρα από όρια σελίδων
Αλλαγμένο (Changed)
- Η εξαγωγή πινάκων επιβάλλει ρυθμιζόμενα όρια λέξεων, χαραγών, κελιών και πινάκων και επαναφέρει την ενεργή σελίδα μετά από σαρώσεις επιπέδου εγγράφου
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.36.0
Version 3.35.0
Προστέθηκε (Added)
- Το
GenerateTaggedLayoutδημιουργεί ένα νέο έγγραφο σημασιολογικής διάταξης με εγγενές marked content, δέντρο δομής Document, αντιστοιχίσεις ParentTree και IDTree και μεταδεδομένα γλώσσας εγγράφου - Το
TPdfLayoutSemanticsμοντελοποιεί επικεφαλίδες, ενότητες, λίστες, σχήματα, λεζάντες, πίνακες, συσχετίσεις κεφαλίδων, spans, εναλλακτικό κείμενο, actual text, γλώσσες και IDs στοιχείων - Το
TPdfLayoutDocument.AddLinkεκπέμπει σχολιασμούς URI Link και συσχετίζει κάθε σχολιασμό με το στοιχείο δομής Link του μέσω αντιστοιχίσεων OBJR και StructParent
Αλλαγμένο (Changed)
- Το κείμενο διάταξης προεπιλέγει σημασιολογία παραγράφου, ενώ οι κεφαλίδες, τα υποσέλιδα, οι γραμμές, οι εικόνες και οι επαναχρησιμοποιήσιμες φόρμες προεπιλέγουν σε artifacts εκτός αν επισημανθούν ρητά
- Η επαλήθευση σημασιολογικού σχεδίου απορρίπτει διπλά IDs, γονείς που λείπουν, κύκλους, άκυρη περιεκτικότητα λιστών ή πινάκων, σχήματα χωρίς κείμενο αντικατάστασης και ανεπίλυτα IDs κεφαλίδων πινάκων πριν από την εκπομπή του εγγράφου
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.35.0
Version 3.34.0
Προστέθηκε (Added)
- Το
TPdf.AddShapedTextγράφει runs γλύφων RTL, bidi, συμφραζόμενων μορφών και συνδετικών μέσω εγγενούς shaping συστήματος και των API γραμματοσειράς CID Type 2 του PDFium - Τα
ShapePdfTextκαιTPdfUniscribeTextShaperεκθέτουν τοποθετημένα IDs γλύφων, advances, offsets, πηγαία clusters, οπτικές θέσεις runs και επίπεδα bidi χωρίς να τροποποιούν έγγραφο
Αλλαγμένο (Changed)
- Οι παραγόμενοι χάρτες ToUnicode καλύπτουν κάθε διαμορφωμένο γλύφο, ενώ το
ActualTextαποθηκεύει την αρχική λογική συμβολοσειρά Unicode για συμμορφωμένους καταναλωτές εξαγωγής και προσβασιμότητας - Οι συμβολοσειρές marked content με byte-order marks UTF-16 αποκωδικοποιούνται πλέον σωστά μέσω του
PageObjectMarks - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.34.0
Version 3.33.0
Προστέθηκε (Added)
- Το
TPdfLayoutCachedNodeχτίζει περιεχόμενο διάταξης υποκατηγορίας στην πρώτη χρήση και υποστηρίζει επαναλαμβανόμενες κλιμακωτές τοποθετήσεις μέσω τουAddCachedNode - Το
TPdfLayoutPlanαναφέρει εύρηματα και αστοχίες cache μέτρησης, τοποθετήσεις cached nodes και επαναχρησιμοποιημένα εγγενή XObjects
Αλλαγμένο (Changed)
- Το
BuildPlanεπαναχρησιμοποιεί σχέδια που ταιριάζουν βάσει πλήρων περιορισμών σελίδας, περιεχομένου, γραμματοσειράς, στυλ, πηγής και ταυτότητας μετρητή χωρίς να επαναλαμβάνει τη μέτρηση κειμένου - Το
GenerateLayoutμετατρέπει κάθε μοναδικό cached node σε ένα XObject δεσμευμένο στον προορισμό και δημιουργεί ελαφριά αντικείμενα Form για κάθε τοποθέτηση - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.33.0
Version 3.32.0
Προστέθηκε (Added)
- Το
TPdfLayoutDocumentχτίζει αναδιπλωμένο κείμενο, διαστήματα, γραμμές, εικόνες, επαναχρησιμοποιήσιμα XObjects σελίδας, ρητές αλλαγές σελίδας, κεφαλίδες και υποσέλιδα σε ένα μετρημένο σχέδιο σελίδων - Το
GenerateLayoutσελιδοποιεί την πλήρη διάταξη πριν προσθέσει ατομικά εγγενείς σελίδες και αντικείμενα σελίδων, με σταθερές αναφορές{page}και{pages}
Αλλαγμένο (Changed)
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.32.0
Version 3.31.0
Προστέθηκε (Added)
- Οι builders του
TPdfPagePlanπεριγράφουν λειτουργίες διαγραφής, μετακίνησης, εισαγωγής, διαίρεσης και συγχώνευσης σελίδων χωρίς να τις εφαρμόζουν - Το
ValidatePagePlanεπιστρέφει τον ακριβή χάρτη παλαιά-προς-νέα σελίδα και καταγράφει τους επηρεαζόμενους σελιδοδείκτες, επώνυμους προορισμούς, ετικέτες σελίδων, πεδία φορμών, σελίδες με tags, εισαγόμενα χαρακτηριστικά και υπογραφές
Ασφάλεια (Security)
- Σχέδια που θα άφηναν κρεμασμένους προορισμούς πλοήγησης ή θα άλλαζαν υπογεγραμμένο περιεχόμενο χωρίς ρητή εξουσιοδότηση απορρίπτονται πριν εκτελεστεί οποιαδήποτε εγγενής λειτουργία σελίδων
Αλλαγμένο (Changed)
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.31.0
Version 3.30.0
Προστέθηκε (Added)
- Το
SaveRecoverySnapshotγράφει ένα πακέτο αποκατάστασης με checksum και όριο μεγέθους που περιέχει το δακτυλικό αποτύπωμα της πηγής και το επαληθευμένο ημερολόγιο επεξεργασίας εγγράφου - Το
RestoreRecoverySnapshotεπαναλαμβάνει ένα πακέτο αποκατάστασης μόνο όταν το checksum, η αλυσίδα ημερολογίου, το δακτυλικό αποτύπωμα πηγής και το δακτυλικό αποτύπωμα αποκατάστασης ταιριάζουν όλα - Το
EnableRecoveryAutosaveανανεώνει ατομικά ένα ρητό αρχείο αποκατάστασης μετά από κάθε αλλαγμένο commit, undo ή redo χωρίς να ξαναγράφει το PDF πηγής
Αλλαγμένο (Changed)
- Το
InspectRecoverySnapshotαναφέρει την πηγή αποκατάστασης, τα δακτυλικά αποτυπώματα, τον αριθμό καταχωρήσεων, τη θέση και την οριοθετημένη αποθήκευση χωρίς να εφαρμόζει το πακέτο - Το
ImportEditJournalκαι η επαναφορά αποκατάστασης απαιτούν πλέον ρητή εξουσιοδότησηAllowSignedDocumentπριν εφαρμόσουν επεξεργασίες σε υπογεγραμμένο PDF - Η αποθήκευση των πακέτων αποκατάστασης χρησιμοποιεί το ρυθμισμένο οριοθετημένο random-access store και αντικατάσταση write-through στον ίδιο κατάλογο για μεγάλα ημερολόγια και crash-safe ενημερώσεις autosave
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.30.0
Version 3.29.0
Προστέθηκε (Added)
- Τα
BeginEditTransaction,CommitEditTransactionκαιRollbackEditTransactionομαδοποιούν αυθαίρετες εγγενείς επεξεργασίες εγγράφου σε ατομικές συναλλαγές - Τα
UndoEditκαιRedoEditεφαρμόζουν επαληθευμένα με SHA-256 αντίστροφα και εμπρόσθια delta σε αλλαγές σελίδων, αντικειμένων, σχολιασμών, συνημμένων και μεταδεδομένων - Τα
ExportEditJournalκαιImportEditJournalδιατηρούν οριοθετημένα φορητά delta με επαλήθευση δακτυλικού αποτυπώματος πηγής και αλυσίδας digest για μεταγενέστερη επανάληψη
Αλλαγμένο (Changed)
- Τα στιγμιότυπα συναλλαγών χρησιμοποιούν αναπαραγώγιμη εγγενή έξοδο, ώστε τα αμετάβλητα commits να παραμένουν κενά ακόμη και όταν οι συνηθισμένες αποθηκεύσεις του PDFium περιέχουν μη ντετερμινιστικά αναγνωριστικά ή χρονοσφραγίδες
- Τα αποτυχημένα commits και η άκυρη επανάληψη ημερολογίου επαναφέρουν ατομικά το προηγούμενο φορτώσιμο έγγραφο, ενώ ο αριθμός καταχωρήσεων, τα αποθηκευμένα byte και το μέγεθος στιγμιότυπου παραμένουν κάτω από όρια ρυθμισμένα από τον καλούντα
- Τα υπογεγραμμένα PDF απαιτούν ρητή εξουσιοδότηση
AllowSignedDocumentπριν ξεκινήσει μια συναλλαγή επεξεργασίας εγγράφου - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.29.0
Version 3.28.0
Προστέθηκε (Added)
- Το
TPdf.InspectOptionalContentαπαριθμεί στρώματα OCG, προεπιλεγμένες και εναλλακτικές διαμορφώσεις, καταστάσεις χρήσης View/Print/Export, μεταδεδομένα ζουμ και γλώσσας, κλειδωμένα στρώματα, πίνακες τάξης, ομάδες radio, πολιτικές OCMD, εκφράσεις ορατότητας και αποτελεσματική κατάσταση απόδοσης - Το
TPdf.SaveAsOptionalContentConfiguredγράφει ένα αυστηρά επαληθευμένο αντίγραφο με καταστάσεις στρωμάτων που επιλέγει ο καλών για μια επιλεγμένη χρήση και διαμόρφωση
Αλλαγμένο (Changed)
- Η έξοδος καταστάσεων στρωμάτων ενημερώνει πλέον τόσο τους πίνακες
/ONκαι/OFFτης διαμόρφωσης όσο και τα λεξικά κατάστασης Usage των OCG, ώστε το PDFium να εφαρμόζει τη ζητούμενη ορατότητα μέσω του εγγενούς rendering context - Οι εγγραφές διαμόρφωσης απορρίπτουν άγνωστες ομάδες, αλλαγές κλειδωμένων στρωμάτων, συγκρούσεις ομάδων radio, κρυπτογραφημένα staged αρχεία και υπογεγραμμένα αρχεία χωρίς ρητή εξουσιοδότηση, και αφαιρούν προεπιλεγμένα τους κανόνες αυτόματης κατάστασης για να διατηρεί ντετερμινιστικό το επιλεγμένο αποτέλεσμα
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.28.0
Version 3.27.0
Προστέθηκε (Added)
- Το
TPdf.RenderPageByIndexαποδίδει οποιαδήποτε σελίδα με δείκτη βάσει του ένα σε ακριβές μέγεθος εικονοστοιχείων χωρίς να αλλάζει την ενεργή σελίδα επεξεργασίας ή να πυροδοτεί γεγονότα αλλαγής σελίδας - Τα
PageSceneCacheCapacity,PageSceneCacheCountκαιClearPageSceneCacheεκθέτουν οριοθετημένο έλεγχο και διαγνωστικά της scene cache
Αλλαγμένο (Changed)
- Οι αποδόσεις σελίδων κατά δείκτη, οι αποδοσμένες μικρογραφίες και η εξαγωγή ενσωματωμένων μικρογραφιών επαναχρησιμοποιούν πλέον την αναλυμένη κατάσταση σελίδας του PDFium μέσω cache LRU οκτώ καταχωρήσεων από προεπιλογή
- Οι καταχωρήσεις scene ακυρώνονται κατά την ενεργοποίηση σελίδας, την επεξεργασία, αλλαγές στο δέντρο σελίδων, callbacks κατάστασης φόρμας, ρητό καθαρισμό και την κατεδάφιση του εγγράφου, με τις αποδόσεις σε εξέλιξη να διατηρούνται με ασφάλεια μέχρι την απελευθέρωση
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.27.0
Version 3.26.0
Προστέθηκε (Added)
- Το
TPadesSignatureAlgorithmInfoαναφέρει τα OID digest, υπογραφής, δημόσιου κλειδιού και επώνυμης καμπύλης κάθε υπογράφοντα CMS μαζί με την ανεξάρτητα αξιολογημένη κατάσταση πολιτικής αλγορίθμου - Τα
InspectPadesSignatureAlgorithmκαιEvaluatePadesSignatureAlgorithmαναγνωρίζουν τα προφίλ P-256, P-384, P-521, brainpoolP256r1, brainpoolP384r1, brainpoolP512r1, Ed25519 και Ed448
Ασφάλεια (Security)
- Η επικύρωση PAdES απορρίπτει πλέον ασυμφωνίες καμπύλης ελλείψεων και digest, OID υπογραφών ECDSA που διαφωνούν με το digest CMS, ανώνυμες παραμέτρους EC, παραμέτρους Ed25519 και μήκη εξόδου SHAKE256 του Ed448 διαφορετικά από 512 bits
- Η εγγενής επαλήθευση CMS παραμένει η πηγή της κρυπτογραφικής εγκυρότητας, ενώ οι μη διαθέσιμοι αλγόριθμοι και οι μη αναγνωρισμένες καμπύλες αναφέρονται ως
pcsUnsupportedαντί να θεωρούνται άκυρες υπογραφές - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.26.0
Version 3.25.0
Προστέθηκε (Added)
- Το
TPdf.ExportObjectGraphεξάγει τα ενεργά αντικείμενα classic, xref-stream και object-stream ως οριοθετημένο τυποποιημένο JSON με ρητά λεξικά, πίνακες, συμβολοσειρές, ονόματα, βαθμωτές τιμές, έμμεσες αναφορές, μετρήσεις byte ροών και προαιρετικά digests ροών SHA-256 - Το
TPdf.SaveAsObjectGraphPatchedορίζει ή αφαιρεί τιμές λεξικού ανωτάτου επιπέδου με έλεγχο σχήματος μέσω τυποποιημένων τιμών patch null, Boolean, integer, real, name, text-string και indirect-reference
Ασφάλεια (Security)
- Η εξαγωγή object graph επιβάλλει budgets αντικειμένων, αναδρομής, συμβολοσειρών και byte εξόδου, ενώ το patching επικυρώνει κάθε λειτουργία πριν την παράδοση και απορρίπτει κρεμασμένες αναφορές, διπλές λειτουργίες, κρυπτογραφημένες εισόδους, προστατευμένες αλλαγές φίλτρων ή μήκους ροής και υπογεγραμμένα έγγραφα χωρίς ρητή εξουσιοδότηση
- Τα patches του object graph σταδιοποιούνται ως επαυξητική αναθεώρηση, υλοποιούνται ξανά για επαλήθευση xref, φορτώνονται αυστηρά μέσω PDFium και αντιγράφονται ή μετονομάζονται ατομικά μόνο αφού επιτύχουν όλοι οι έλεγχοι
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.25.0
Version 3.24.0
Προστέθηκε (Added)
- Το
TPdf.ValidatePadesTrustεπαληθεύει κάθε ανιχνεύσιμη αποσπασμένη υπογραφή κατά του ακριβούς αρχικούByteRange, αξιολογεί τη δέσμευση signing-certificate-v2 και την τρέχουσα εμπιστοσύνη συστήματος Windows και αναφέρει ανεξάρτητες καταστάσεις υπογραφής, αλυσίδας, ανάκλησης και χρονοσφραγίδας - Το
TPdf.ValidatePadesTrustAsyncαπαθανατίζει την αρχική φορτωμένη πηγή πριν την αποστολή, αναφέρει σταδιοποιημένη πρόοδο για ανάλυση, κρυπτογραφία, δόμηση αλυσίδας, AIA, OCSP, CRL και εργασία χρονοσφραγίδας RFC 3161 και υποστηρίζει συνεργατική ακύρωση - Το
TPadesTrustValidationOptionsεπιλέγει εμπιστοσύνη offline ή online, προαιρετική επαλήθευση ανάκλησης και χρονοσφραγίδας, οριοθετημένη λήξη ανάκτησης URL, token ακύρωσης και callback προόδου
Ασφάλεια (Security)
- Τα token χρονοσφραγίδας υπογραφής και Document Time-stamp επαληθεύουν πλέον το SHA-256 message imprint, τη συνημμένη υπογραφή CMS, την αλυσίδα TSA και την προαιρετική κατάσταση ανάκλησης ανεξάρτητα από τη συνηθισμένη υπογραφή του εγγράφου
- Η επαλήθευση εμπιστοσύνης δεν κάνει ποτέ hash αντίγραφο που επανααποθήκευσε το PDFium, προεπιλέγει ανάκτηση πιστοποιητικών μόνο από offline cache και αναφέρει μη υποστηριζόμενες ή αόριστες καταστάσεις αντί να θεωρεί έγκυρη τη μη διαθέσιμη εγγενή εμπιστοσύνη ή τα τεκμήρια ανάκλησης
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.24.0
Version 3.23.0
Προστέθηκε (Added)
- Τα
TPdf.RenewPadesArchiveTimestampκαιRenewPadesArchiveTimestampToStreamπροσθέτουν μια νέα χρονοσφραγίδα RFC 3161 Document Time-stamp σε μια υπάρχουσα αλυσίδα υπογραφών PAdES χωρίς να αλλάζουν κανένα ιστορικό byte - Το
TPadesArchiveTimestampOptionsελέγχει την πρόσβαση TSA, το nonce, τη δεσμευμένη χωρητικότητα token και μια προαιρετική πλήρη ανανέωση DSS, ενώ τοTPadesArchiveTimestampReportκαταγράφει τα επίπεδα πηγής και αποτελέσματος, τα μήκη αλυσίδων, τα μήκη byte και την ταυτότητα της επιστραφείσας χρονοσφραγίδας
Διορθώθηκε (Fixed)
- Η νέα και η ανανεωμένη έξοδος PAdES B-LTA δηλώνει ESIC ExtensionLevel 2, ενώ η επικύρωση B-LT δεν απαιτεί πλέον Level 2 εκτός αν υπάρχει χρονοσφραγίδα Document Time-stamp
Ασφάλεια (Security)
- Η ανανέωση κάνει hash τα ακριβή αρχικά φορτωμένα byte συν κάθε ζητούμενη ενημέρωση DSS, απορρίπτει κρυπτογραφημένες ή ατελείς πηγές, επαληθεύει το ανιχνεύσιμο αποτέλεσμα B-LTA πριν γράψει την έξοδο και σταδιοποιεί την έξοδο αρχείου πριν την αντικατάσταση
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.23.0
Version 3.22.0
Προστέθηκε (Added)
- Το
TPdf.AnalyzeSignatureRevisionsανακατασκευάζει την αρχική αλυσίδα επαυξητικών αναθεωρήσεων και επιστρέφει αλλαγές αντικειμένων ανά υπογραφή ταξινομημένες έναντι των δικαιωμάτων DocMDP και FieldMDP - Το
TPadesRevisionAnalysisReportδιακρίνει τις επιτρεπόμενες ενημερώσεις φορμών, σχολιασμών, υπογραφών και υλικού επικύρωσης από τις μη επιτρεπόμενες αλλαγές σελίδων ή εγγράφου, τις ανεπίλυτες περιπτώσεις και τους ύποπτους ορισμούς σκιάς
Ασφάλεια (Security)
- Η ανάλυση αναθεωρήσεων ανιχνεύει ορισμούς αντικειμένων χωρίς αναφορές, επαναορισμούς αντικειμένων υπογραφής, ενεργό περιεχόμενο, κακοσχηματισμένες αλυσίδες αναθεωρήσεων και μη επιλυμένα συμπιεσμένα αντικείμενα επιβάλλοντας οριοθετημένα budgets αναθεώρησης, αντικειμένων και αλλαγών
- Η ανάλυση χρησιμοποιεί πάντα το αρχικό φορτωμένο αρχείο, την ενδιάμεση μνήμη, την προσαρμοσμένη ροή ή την ολοκληρωμένη προοδευτική πηγή αντί για byte που ξαναγράφτηκαν από το PDFium
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.22.0
Version 3.21.0
Προστέθηκε (Added)
- Το
TPdf.PreparePadesRemoteSignatureδημιουργεί ένα placeholder σταθερού πλάτους αποσπασμένης υπογραφής και επιστρέφει ένα επίμονο αίτημα που περιέχει το digest SHA-256 του εγγράφου, το ακριβέςByteRange, τις συντεταγμένες κράτησης και το δακτυλικό αποτύπωμα του προετοιμασμένου PDF - Το
TPdf.CompletePadesRemoteSignatureολοκληρώνει συνεδρίες υπογραφής HSM, cloud ή διακεκομμένες μετά την επαλήθευση του επίμονου αιτήματος και του επιστραφέντος CMS - Τα
TPdf.SavePadesRemoteSigningRequestκαιTPdf.LoadPadesRemoteSigningRequestπαρέχουν ένα σταθερό τυποποιημένο δυαδικό μορφότυπο συνεδρίας για όρια διεργασιών και μηχανημάτων
Ασφάλεια (Security)
- Η ολοκλήρωση απορρίπτει τροποποιημένα προετοιμασμένα PDF, αλλαγμένες συντεταγμένες
ByteRange, επαναχρησιμοποιημένα μη κενά placeholders, υπερμεγέθεις τιμές CMS, μη υποστηριζόμενα σχήματα SignedData, απούσες ιδιότητες signing-certificate-v2 και digests μηνυμάτων CMS που δεν ταιριάζουν με το προετοιμασμένο έγγραφο - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.21.0
Version 3.20.0
Προστέθηκε (Added)
- Το
TPadesDssOptions.Vrisγράφει ένα έμμεσο λεξικό/Type /VRIανά υπογραφή, με κλειδί το SHA-1 με κεφαλαία της πλήρους αποκωδικοποιημένης τιμής/Contentsσυμπεριλαμβανομένου του padding - Το
TPadesDssVriεπιλέγει υλικό πιστοποιητικών, OCSP και CRL μέσω επικυρωμένων δεικτών, ενώ η υπογραφή PAdES B-LT και B-LTA δημιουργεί πλέον αυτόματα το VRI της νέας υπογραφής
Αλλαγμένο (Changed)
- Τα πιστοποιητικά DSS, οι αποκρίσεις OCSP και τα CRL απαλλάσσονται από διπλότυπα με content-hash, με σταθερή ταξινόμηση πρώτης εμφάνισης, ελέγχους σύγκρουσης ακριβών byte και επαναχαρτογράφηση αναφορών VRI πριν γραφούν byte προορισμού
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.20.0
Version 3.19.0
Προστέθηκε (Added)
- Το
TPdf.GetStructuredTextμετατρέπει την τρέχουσα σελίδα σε επαναχρησιμοποιήσιμες εγγραφές block, γραμμής και styled-span διατηρώντας δείκτες χαρακτήρων πηγής, βαθμωτές τιμές Unicode, γεωμετρία, ονόματα γραμματοσειρών, μεγέθη, βάρη και γωνίες κειμένου - Το
TPdfStructuredTextOptionsεπιλέγει σειρά content-stream ή φυσικής διάταξης, προαιρετικό εμπλουτισμό γραμματοσειράς και σημασιολογίας και μέγιστο budget χαρακτήρων με συμπεριφορά fail-closed - Τα Tagged PDF και τα ευρετικά ευανάγνωστα τμήματα περιεχομένου εμπλουτίζουν τα blocks με είδος δομής, επίπεδο επικεφαλίδας, γλώσσα, πηγή και ταυτότητα στοιχείου δομής, ενώ το εναλλακτικό κείμενο μη ταιριαστών Figure παραμένει εκπροσωπούμενο
Αλλαγμένο (Changed)
- Η εξαγωγή φυσικής διάταξης χρησιμοποιεί πλέον ταξινόμηση χαρακτήρων O(n log n), γεωμετρικά αναπτυσσόμενους ενδιάμεσους χώρους γραμμών και span, ομαδοποίηση γραμμών και στηλών, ενδιάμεση δόμηση Unicode και cache γραμματοσειρών γειτονικών μη κενών αντικειμένων κειμένου για προβλέψιμη απόδοση σε μεγάλες σελίδες
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.19.0
Version 3.18.0
Ασφάλεια (Security)
- Το
TPdf.SaveAsRedactedεφαρμόζει κάθε ορθογώνιο/Redactσε ένα απομονωμένο στιγμιότυπο του εγγράφου, αφαιρεί κάθε τεμνόμενο αντικείμενο σελίδας ανωτάτου επιπέδου και ζωγραφίζει ένα αδιαφανές ορθογώνιο αντικατάστασης χωρίς να αλλάζει το φορτωμένο έγγραφο - Το αρχείο εξόδου μετά την απόκρυψη αφαιρεί τους σχολιασμούς redaction, προαιρετικά αφαιρεί άλλους τεμνόμενους σχολιασμούς, διαγράφει τα εγγενή ενσωματωμένα συνημμένα και απογυμνώνει το
/AFτου καταλόγου, το ενεργό περιεχόμενο, τις φόρμες, τα μεταδεδομένα και τα μη προσβάσιμα αντικείμενα προηγούμενων αναθεωρήσεων - Το
TPdfRedactionOptionsελέγχει το χρώμα αντικατάστασης, την αφαίρεση επικαλυπτόμενων σχολιασμών και ένα budget σάρωσης αντικειμένων σελίδας fail-closed, ενώ τοTPdfRedactionReportκαταγράφει κάθε αφαίρεση και κάθε μετρική εξόδου - Το
TPdfSanitiseOptions.StripAssociatedFilesαφαιρεί πλέον από προεπιλογή τις αναφορές associated files επιπέδου καταλόγου
Αλλαγμένο (Changed)
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.18.0
Version 3.17.0
Προστέθηκε (Added)
- Το
TPdf.RenderPagesParallelαποδίδει ταυτόχρονα αιτήματα σελίδων με δείκτη βάσει του ένα, ενώ κάθε worker κατέχει ένα ανεξάρτητα φορτωμένο module, έγγραφο και κατάσταση σελίδας PDFium προερχόμενα από ένα αποτυπωμένο στιγμιότυπο του εγγράφου - Το
TPdfParallelRenderOptionsελέγχει το DPI, τον αριθμό workers, την περιστροφή, τις εγγενείς σημαίες απόδοσης, το χρώμα φόντου, τα όρια εικονοστοιχείων ανά σελίδα και τα συγκεντρωτικά όρια διατηρούμενης εξόδου - Το
TPdfParallelRenderReportδιατηρεί τη σειρά αιτημάτων και επιστρέφει buffers BGRA ή RGBA από πάνω προς τα κάτω σε ιδιοκτησία του καλούντος, με επιτυχία, ακύρωση, αποτυχία, διαστάσεις, χρονισμό και διαγνωστικές λεπτομέρειες ανά σελίδα - Η προοδευτική απόδοση worker ερωτά το
IPdfCancellationTokenμεταξύ εγγενών τμημάτων, ενώ τα άκυρα αιτήματα και οι αποτυχίες budgets παραμένουν απομονωμένα στα αντίστοιχα αποτελέσματα - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.17.0
Version 3.16.0
Προστέθηκε (Added)
- Το
TPdfEncryptionRevision.erR7προσθέτει έξοδο ISO/TS 32003 AES-256-GCM με/V 6,/R 7,/CFM /AESV4και την απαιτούμενη επέκταση προγραμματιστή PDF 2.0 - Κάθε κρυπτογραφημένη συμβολοσειρά και ροή λαμβάνει ένα μοναδικό IV 96 bit, κρυπτοκείμενο αμετάβλητου μήκους και ετικέτα ταυτοποίησης 128 bit, ενώ το
EncryptMetadata = Falseδιατηρεί τα byte της ροής μεταδεδομένων - Το
DecryptAesGcmDocumentBytesεπικυρώνει κωδικούς χρήστη ή ιδιοκτήτη, κρυπτογραφημένα δικαιώματα, προαιρετικά αυτόνομα δεδομένα PDF MAC και κάθε ετικέτα GCM πριν επιστρέψει byte καθαρού κειμένου συμβατά με το PDFium - Η έξοδος AESV4 μπορεί να συνδυαστεί με το
TPdfEncryptOptions.EnableIntegrityProtection, ώστε να συνυπάρχουν η ταυτοποίηση GCM ανά αντικείμενο και η προστασία ISO/TS 32004 PDF MAC για όλο το έγγραφο - Η κρυπτογράφηση χρησιμοποιεί πλέον έγκυρες κλασικές καταχωρήσεις διασταυρούμενων αναφορών αντί να ερμηνεύει κείμενο σε μορφή αντικειμένου μέσα σε δεδομένα ροής ως έμμεσα αντικείμενα
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.16.0
Version 3.15.0
Προστέθηκε (Added)
- Το
TPdfEncryptOptions.EnableIntegrityProtectionγράφει αυτόνομους κωδικούς ταυτοποίησης ISO/TS 32004 PDF MAC για έγγραφα AES-256 Standard Security Handler αναθεώρησης 5 και 6 - Το
TPdf.ValidatePdfMacεπαληθεύει τα ακριβή αρχικά byte πηγής, το αυστηρό/ByteRangeπου καλύπτει το EOF, τοAuthenticatedDataCMS, το κλειδί αρχείου παράγωγο κωδικού, τα ταυτοποιημένα χαρακτηριστικά, το περιτυλιγμένο κλειδί MAC και την τιμή HMAC - Το
FPdfHmacπροσθέτει HMAC-SHA256 και HKDF-SHA256, ενώ τοFPdfAesπροσθέτει RFC 3394 AES-256 Key Wrap και primitives ταυτοποιημένου unwrap - Το
TPdfMacValidationResultδιακρίνει έγκυρους, απόντες, άκυρους και μη υποστηριζόμενους κωδικούς ταυτοποίησης με διαγνωστικό κείμενο - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.15.0
Version 3.14.0
Προστέθηκε (Added)
- Το
TPdf.ValidatePadesεπαληθεύει πλέον αποσπασμένες υπογραφές CMS κατά των ακριβών αρχικών τμημάτων/ByteRangeστα Windows, συμπεριλαμβανομένων των υπογεγραμμένων χαρακτηριστικών και της τιμής υπογραφής - Το
TPadesValidationResultεκθέτει συγκεντρωτική κατάσταση ακεραιότητας και καταστάσεις ByteRange, CMS,signing-certificate-v2, εμπιστοσύνης συστήματος, ανάκλησης και χρονοσφραγίδας ανά υπογραφή, χωρίς να συγχέει μη υποστηριζόμενα ή ανέλεγκτα τεκμήρια με άκυρη υπογραφή - Η δέσμευση πιστοποιητικού υπογράφοντος ελέγχεται με SHA-256, οι αλυσίδες πιστοποιητικών χρησιμοποιούν αξιολόγηση εμπιστοσύνης συστήματος Windows μόνο από cache, και οι εγγενείς κωδικοί σφάλματος παραμένουν διαθέσιμοι για διάγνωση
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.14.0
Version 3.13.1
Διορθώθηκε (Fixed)
- Το
TPdf.ValidatePadesεπιθεωρεί πλέον το αρχικό αρχείο, την ενδιάμεση μνήμη ή τα byte προσαρμοσμένης ροής αντί για αντίγραφο που επανααποθήκευσε το PDFium και θα μπορούσε να ακυρώσει offsets ή να απορρίψει λεξικά υπογραφών - Οι έλεγχοι
/ByteRangePAdES δέχονται πλέον υπογραφές που καλύπτουν μια προηγούμενη πλήρη αναθεώρηση PDF ακολουθούμενη από έγκυρες επαυξητικές ενημερώσεις, ενώ επικυρώνουν παράλληλα τα εύρη χρονοσφραγίδων Document Time-stamp - Το
TPadesValidationResult.SourceStatusδιακρίνει την επικύρωση αρχικής πηγής από μη διαθέσιμη ή ατελή προοδευτική είσοδο, και τα κατηγορήματα συμμόρφωσης απορρίπτουν αποτελέσματα χωρίς αρχικά byte - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.13.1
Version 3.13.0
Προστέθηκε (Added)
- Το
FPdfSha3παρέχει primitives SHA3-256, SHA3-384, SHA3-512 και SHAKE256 χωρίς εξαρτήσεις για εργασία ISO/TS 32001 και συναφές κρυπτογραφικό έργο PDF 2.x - Τα επαυξητικά contexts απορροφούν είσοδο τμηματισμένη αυθαίρετα, ενώ το SHAKE256 υποστηρίζει επαναλαμβανόμενες κλήσεις squeeze και έξοδο που διασχίζει όρια ρυθμού σφουγγαριού
- Βοηθητικές συναρτήσεις one-shot για πίνακες byte και δεκαεξαδικά με πεζά συμπληρώνουν το streaming API, με ρητή επαλήθευση κύκλου ζωής και μεγέθους σε Delphi, C++Builder και Lazarus
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.13.0
Version 3.12.0
Προστέθηκε (Added)
- Το
TPdf.ImportFDFεισάγει δεδομένα φορμών FDF από αρχεία ή ροές και εφαρμόζει τις αναλυμένες τιμές μέσω της υπάρχουσας διαδρομής πεδίων widget - Τα
FdfImportFromStreamκαιFdfImportFromFileαναλύουν απευθείας ή έμμεσα ιεραρχικά πεδία, κυριολεκτικές και δεκαεξαδικές συμβολοσειρές PDF, PDFDocEncoding, κείμενο Unicode, τιμές ονομάτων και ρητές κενές τιμές υπό οριοθετημένα budgets πόρων - Η εξαγωγή FDF γράφει πλέον μη ASCII ονόματα πεδίων και τιμές ως συμβολοσειρές κειμένου UTF-16BE σύμφωνες με τα πρότυπα και διαφεύγει με ασφάλεια τα ονόματα αρχείων πηγής
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.12.0
Version 3.11.0
Προστέθηκε (Added)
- Το
TPdf.DetectPageSkewαποδίδει την τρέχουσα σελίδα σε χαμηλό DPI και ανιχνεύει τη γωνία κλίσης προβάλλοντας τα σκοτεινά εικονοστοιχεία σε υποψήφιες γωνίες περιστροφής, επιστρέφοντας τη γωνία που μεγιστοποιεί τη διακύμανση αθροισμάτων γραμμών (στοίχιση γραμμών κειμένου) με ακρίβεια ~0.1 βαθμού - Το
TPdfSkewReportεκθέτει την ανιχνευμένη γωνία, τη βεβαιότητα και τις διαστάσεις δείγματος - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.11.0
Version 3.10.0
Προστέθηκε (Added)
- Το
TPdf.GetTextInReadingOrderεξάγει το κείμενο της τρέχουσας σελίδας σε ακατέργαστη σειρά content-stream ή σε σειρά φυσικής διάταξης (από πάνω προς τα κάτω, από αριστερά προς τα δεξιά) μέσωFPDFText_GetCharBox+ εξαγωγής χαρακτήρων ταξινομημένων κατά θέση, ώστε το κείμενο σε πολλές στήλες και το οπτικά αναδιατεταγμένο κείμενο να διαβάζεται φυσικά - Το enum
TPdfReadingOrderεπιλέγει μεταξύroContentOrderκαιroPhysicalLayout - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.10.0
Version 3.09.0
Προστέθηκε (Added)
- Το
TPdfImageOptimizeOptions.PreserveBilevelπαραλείπει τις εικόνες 1-bit bilevel (ImageMask / σαρώσεις line-art) κατά τοOptimizeImages, ώστε η μείωση ανάλυσης nearest-neighbour να μην καταστρέφει τα καθαρά τους άκρα - Το
TPdfImageOptimizeOptions.MinDimensionπαραλείπει εικόνες μικρότερες από το κατώφλι (τυπικά εικονίδια ή διακοσμητικά στοιχεία που δεν ωφελούνται από περαιτέρω μείωση) - Το
TPdfImageOptimizeOptions.Defaultπαρέχει το συνιστώμενο σημείο εκκίνησης (στόχος 150 DPI, λόγος 1.5, διατήρηση bilevel, ελάχιστη διάσταση 8) - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.09.0
Version 3.08.0
Προστέθηκε (Added)
- Το
TPdfTileCacheπαρέχει μια οριοθετημένη cache LRU αποδοσμένων πλακιδίων σελίδας με κλειδιά την αναθεώρηση εγγράφου, τη σελίδα, το ζουμ, την περιστροφή, τις σημαίες απόδοσης και το ορθογώνιο συσκευής, ώστε τα αμετάβλητα πλακίδια να μην επανααποδίδονται σε repaints και τα παρωχημένα πλακίδια προηγούμενης αποθήκευσης να απομακρύνονται αυτόματα - Το
TTileKeyεκθέτει το σύνθετο κλειδί cache με στατικό factoryCreateκαι συγκριτήEquals - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.08.0
Version 3.07.0
Προστέθηκε (Added)
- Τα
TPdf.GetAnnotationFontColorκαιTPdf.SetAnnotationFontColorτυλίγουν τα προηγουμένως δεσμευμένα αλλά αχρησιμοποίηταFPDFAnnot_GetFontColorκαιFPDFAnnot_SetFontColor, εκθέτοντας ανάγνωση και εγγραφή χρώματος κειμένου widget για επεξεργασία πεδίων φορμών χωρίς άμεση επαφή με το λεξικό σχολιασμού - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.07.0
Version 3.06.0
Προστέθηκε (Added)
- Το
TPdf.RenderPageBandedαποδίδει την τρέχουσα σελίδα σε οριζόντιες ζώνες μέσω callback, ώστε αφίσες και σελίδες μηχανικής να εξάγονται χωρίς ποτέ να δεσμεύεται πλήρες bitmap προορισμού — κάθε ζώνη αποδίδεται σε ένα πρόσφατα δημιουργημένοTBitmapτου ζητούμενου ύψους ζώνης και απελευθερώνεται μετά την επιστροφή του callback - Το
TPdfBandCallbackεκθέτει τη σύμβαση ανά ζώνη (δείκτης ζώνης, μετατόπιση top-y, bitmap) με Boolean επιστροφή που επιτρέπει στους καλούντες να ακυρώσουν έγκαιρα την απόδοση σε ζώνες - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.06.0
Version 3.05.0
Προστέθηκε (Added)
- Το
TPdf.RenderPageProgressiveWithColorSchemeοδηγεί τον εγγενή βρόχο προοδευτικής απόδοσης με χρωματικό θέμα χαμηλής όρασης μέσω τουFPDF_RenderPageBitmapWithColorScheme_Start, επιτρέποντας στους καλούντες να παρακάμψουν τα χρώματα γεμίσματος / περιγράμματος διαδρομών και γεμίσματος / περιγράμματος κειμένου για προσβασιμότητα, διατηρώντας τον βρόχο Continue με επίγνωση ακύρωσης - Το
TPdfColorSchemeεκθέτει τα τέσσερα πεδία παράκαμψηςTColorμε έναDefaultπου αναθέτει στα ενσωματωμένα χρώματα του PDFium όταν όλα τα πεδία είναιclDefault - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.05.0
Version 3.04.0
Προστέθηκε (Added)
- Το
TPdf.ExportFDFσειριοποιεί τιμές πεδίων φορμών ως έγγραφο FDF (ISO 32000-1 §12.7.11) δίπλα στην υπάρχουσα διαδρομή XFDF, επαναχρησιμοποιώντας το ίδιο μοντέλο δεδομένωνTXfdfField, ώστε οι καλούντες να συλλέγουν τα πεδία μία φορά και να εκπέμπουν είτε το ένα είτε το άλλο μορφότυπο - Τα
FdfExportToStreamκαιFdfExportToFileστοFPdfXfdfεκθέτουν τον σειριοποιητή FDF χαμηλού επιπέδου για καλούντες που κατασκευάζουν συλλογές πεδίων ανεξάρτητα από φορτωμένοTPdf - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.04.0
Version 3.03.0
Προστέθηκε (Added)
- Το
TPdf.SaveAsSanitisedγράφει ένα καθαρό αντίγραφο μίας αναθεώρησης που απογυμνώνει το ενεργό περιεχόμενο από τον κατάλογο (/OpenAction,/AAκαταλόγου,/Names,/AcroForm,/Metadata) και μετά κλαδεύει τα μη προσβάσιμα αντικείμενα, ώστε τα ορφανά σώματα JavaScript, ενεργειών και συνημμένων να εξαφανίζονται από το σώμα του αρχείου - Το
TPdfSanitiseOptionsεκθέτει ανεξάρτητους ελέγχους απογύμνωσης ανά διάνυσμα συν ένα προαιρετικό πέρασμα κλαδέματος προσβασιμότητας· τοTPdfSanitiseReportκαταγράφει τον αριθμό απογυμνωμένων καταχωρήσεων, τον αριθμό κλαδεμένων αντικειμένων, τα μεγέθη byte και τυχόν σφάλμα - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.03.0
Version 3.02.0
Προστέθηκε (Added)
- Το
TPdf.SaveAsPageLabelledγράφει ένα πλήρες αντίγραφο PDF του οποίου το δέντρο αριθμών/PageLabelsτου καταλόγου αντικαθίσταται από τα παρεχόμενα εύρη, εφαρμόζοντας δεκαδικά, ρωμαϊκά με κεφαλαία/πεζά και αλφαβητικά με κεφαλαία/πεζά στυλ αρίθμησης με προαιρετικές συμβολοσειρές προθέματος και αριθμούς εκκίνησης κατά ISO 32000-1 §12.4.2 - Τα
TPdfPageLabelRange,TPdfPageLabelRanges,TPdfPageLabelStyleκαιTPdfPageLabelReportεκθέτουν το μοντέλο εύρους, το enum στυλ και τις μετρήσεις byte/εύρη ανά αποθήκευση - Οι υπάρχουσες καταχωρήσεις
/PageLabelsτου καταλόγου ανιχνεύονται και απορρίπτονται εκτός αν περαστείReplaceExisting=True, οπότε η παλιά καταχώρηση αφαιρείται πριν εγχυθούν τα νέα εύρη - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.02.0
Version 3.01.0
Προστέθηκε (Added)
- Το
TPdf.FlattenPageRotationενσωματώνει το τρέχον/Rotateκάθε σελίδας στη ροή περιεχομένου, στα page boxes και στα ορθογώνια σχολιασμών και μετά μηδενίζει το/Rotateσε 0 — τυλίγοντας ταFPDFPageObj_TransformF+FPDFAnnot_GetRect/SetRect+FPDFPage_SetMediaBox/SetCropBox+FPDFPage_SetRotation, ώστε η οπτική διάταξη να διατηρείται χωρίς να βασίζεται στην υπένδειξη εμφάνισης της περιστροφής - Το
TPdfFlattenRotationOptionsεκθέτει μετασχηματισμό σχολιασμών ανά σελίδα, εναλλαγή page boxes και ελέγχους αυτόματης ενημέρωσης· τοTPdfFlattenRotationReportκαταγράφει τις επεξεργασμένες, παραλειφθείσες και αποτυχημένες σελίδες συν το σύνολο μετασχηματισμένων αντικειμένων και σχολιασμών - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.01.0
Version 3.00.0
Προστέθηκε (Added)
- Το
TPdf.StampPagesFromPdfσφραγίζει μια σελίδα πηγής ως επικάλυψη ή υποκάλυψη Form XObject τοποθετημένη, κλιμακωτή και προαιρετικά περιστραμμένη σε μία ή περισσότερες σελίδες προορισμού, τυλίγοντας ταCreateXObjectFromPage+FPDFPageObj_SetMatrix+FPDFPageObj_SetBlendMode+FPDFPage_InsertObjectAtIndexμε ρητές πολιτικές page box, άγκυρας, περιθωρίου, κλίμακας, περιστροφής, blending και z-order - Τα
TPdfOverlayOptionsκαιTPdfOverlayReportεκθέτουν τους ελέγχους τοποθέτησης, μετασχηματισμού, blending και z-order συν μετρήσεις σφραγισμένων, αποτυχημένων και παραλειφθεισών σελίδων ανά σελίδα - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 3.00.0
Version 2.99.0
Προστέθηκε (Added)
- Το
TPdf.RefreshAppearanceαναγεννά επιλεκτικά τη ροή εμφάνισης ενός μόνο widget μέσω τουFPDFAnnot_SetAP, αποφεύγοντας την αναδόμησηNeedAppearancesολόκληρης της σελίδας - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.99.0
Version 2.98.0
Προστέθηκε (Added)
- Το
TPdfView.MouseDownδρομολογεί πλέον τα γεγονότα δεξιού κουμπιού στην εγγενή μηχανή συμπλήρωσης φορμών μέσω τουFORM_OnRButtonDown, επιτρέποντας μενού περιβάλλοντος και αλληλεπιδράσεις widget με δεξί κλικ - Τα στοιχεία 78 (αντιστοίχιση σχολιασμών συνδέσμων), 82 (παρουσίαση widget) και 83 (μοντέλο χαρακτηριστικών δομής) του χάρτη διαδρομών επιβεβαιώθηκαν ως ήδη πλήρη μέσω της υπάρχουσας υποδομής
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.98.0
Version 2.97.0
Προστέθηκε (Added)
- Τα
TPdf.SetDeterministicTimeκαιTPdf.RestoreActualTimeεπιτρέπουν σε δοκιμές και αναπαραγώγιμα builds να εγχύουν σταθερό χρόνο δημιουργίας, τροποποίησης και τρέχοντα χρόνο μέσω υποστηριζόμενων εγγενών callbacks - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.97.0
Version 2.96.0
Προστέθηκε (Added)
- Το
TPdf.GetWidgetAdditionalActionJavaScriptδιαβάζει το JavaScript πρόσθετων ενεργειών widget για ένα δεδομένο έναυσμα γεγονότος μέσω τουFPDFAnnot_GetFormAdditionalActionJavaScriptχωρίς να εκτελεί οποιοδήποτε script - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.96.0
Version 2.95.0
Προστέθηκε (Added)
- Το
TPdf.GetObjectTextεξάγει το Unicode κείμενο ενός αντικειμένου σελίδας κειμένου μέσω τουFPDFTextObj_GetTextγια ακριβή επεξεργασία περιεχομένου και διαγνωστικά κωδικοποίησης - Το
TPdf.GetObjectsByTypeεπιστρέφει τους δείκτες όλων των αντικειμένων σελίδας που ταιριάζουν σε μια κατηγορία (κείμενο, διαδρομή, εικόνα, φόρμα, σκίαση) για επιλεκτική έξοδο κατηγορίας - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.95.0
Version 2.94.0
Προστέθηκε (Added)
- Τα
TPdf.AttachmentHasKey,GetAttachmentStringValueκαιSetAttachmentStringValueδιαβάζουν, γράφουν και ελέγχουν προσαρμοσμένες τιμές επέκτασης file-spec σε ενσωματωμένα συνημμένα - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.94.0
Version 2.93.0
Προστέθηκε (Added)
- Το
TPdf.InsertObjectAtIndexεισάγει ένα αντικείμενο σελίδας σε ζητούμενη θέση στοίβας μέσω τουFPDFPage_InsertObjectAtIndexαντί να το προσθέτει πάντα στο τέλος - Το
TPdf.UpdateAnnotationObjectυποβάλλει ένα επεξεργασμένο αντικείμενο εμφάνισης σχολιασμού μέσω τουFPDFAnnot_UpdateObject, ώστε οι αλλαγές σε αντικείμενα σελίδας που ανήκουν σε σχολιασμό να διατηρούνται αξιόπιστα - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.93.0
Version 2.92.0
Προστέθηκε (Added)
- Το
TPdf.InsertClipPathδημιουργεί μια ορθογώνια διαδρομή αποκοπής και την εισάγει στην τρέχουσα σελίδα μέσω των εγγενών διαδρομώνFPDF_CreateClipPathκαιFPDFPage_InsertClipPath, συμπληρώνοντας τον υπάρχοντα επιθεωρητήPageObjectClipPath - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.92.0
Version 2.91.0
Προστέθηκε (Added)
- Το
TPdf.GetPageComplexityσαρώνει την τρέχουσα σελίδα και αναφέρει αριθμούς αντικειμένων εικόνας, διαδρομής και κειμένου συν συνολικά τμήματα διαδρομών, συνολικά εικονοστοιχεία εικόνων και παρουσία διαφάνειας για σχεδιασμό απόδοσης - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.91.0
Version 2.90.0
Προστέθηκε (Added)
- Το
TPdf.IsAnnotationSubtypeSupportedρωτά το φορτωμένο DLL PDFium ποιοι υποτύποι σχολιασμού υποστηρίζονται πριν την επεξεργασία - Το
TPdf.ChooseRenderFlagsεπιλέγει εγγενείς σημαίες απόδοσης (halftone, περιορισμένη cache εικόνων) από την τελική κλίμακα και το μέγεθος προορισμού για προσαρμοστική υποδειγματοληψία εικόνων - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.90.0
Version 2.89.0
Προστέθηκε (Added)
- Το
TPdf.GetTextRenderModeεκθέτει την εγγενή λειτουργία απόδοσης κειμένου (γέμισμα, περίγραμμα, αποκοπή) ενός αντικειμένου σελίδας κειμένου για διαγνωστικά συγγραφής - Το
TPdf.GetTextObjectRenderedBitmapαποδίδει ένα μοναδικό αντικείμενο κειμένου σε απομονωμένο bitmap μέσω της εγγενούς διαδρομήςFPDFTextObj_GetRenderedBitmap - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.89.0
Version 2.88.0
Προστέθηκε (Added)
- Το
TPdf.GetThumbnailμεταπίπτει πλέον σε απόδοση αντικατάστασης όταν η σελίδα δεν έχει ενσωματωμένη μικρογραφία, υλοποιώντας την προτίμηση ενσωματωμένης μικρογραφίας πρώτα - Το
TPdf.LinkAtPointεπιστρέφει αν υπάρχει εγγενής σύνδεσμος σε μια συντεταγμένη χώρου σελίδας χρησιμοποιώντας τοFPDFLink_GetLinkAtPointαντί για σαρώσεις μόνο ορθογωνίων - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.88.0
Version 2.87.0
Προστέθηκε (Added)
- Το
TPdf.AuditActiveContentεπιστρέφει ένα στιγμιότυποTPdfActiveContentAuditμε τον αριθμό ενεργειών JavaScript, τον αριθμό ενσωματωμένων αρχείων, τον αριθμό υπογραφών, τον τύπο φόρμας XFA και τα δικαιώματα εγγράφου χωρίς να εκτελεί κανένα script ή ενέργεια - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.87.0
Version 2.86.0
Προστέθηκε (Added)
- Το
TPdf.GetFeatureInventoryσαρώνει κάθε σελίδα μία φορά και επιστρέφει μια ενοποιημένη εγγραφή με τους αριθμούς αντικειμένων κειμένου, διαδρομής, εικόνας, form XObject και σκίασης μαζί με γεγονότα συνημμένων, υπογραφών, τύπου φόρμας, δικαιωμάτων και έκδοσης PDF - Το
TPdfFeatureInventoryσυγκεντρώνει γεγονότα σε επίπεδο εγγράφου που προηγουμένως απαιτούσαν ξεχωριστές κλήσεις ιδιοτήτων σε ένα ενιαίο στιγμιότυπο - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.86.0
Version 2.85.0
Προστέθηκε (Added)
- Το
TPdf.SaveAsReproducibleξαναγράφει το έγγραφο ώστε δύο αποθηκεύσεις της ίδιας κατάστασης στη μνήμη να παράγουν byte-πανομοιότυπη έξοδο - Οι μη ντετερμινιστικές χρονοσφραγίδες
/Info(/CreationDate,/ModDate) αφαιρούνται και το/IDτης πηγής (παράγωγο byte που εξαρτώνται από το ρολόι τοίχου) παραλείπεται, ενώ η τάξη και η γενιά αντικειμένων παραμένουν σταθερές - Το
TPdfReproducibleReportαναφέρει τους αριθμούς διατηρημένων και κλαδεμένων αντικειμένων συν τον αριθμό των αφαιρεθεισών καταχωρήσεων χρονοσφραγίδων - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.85.0
Version 2.84.0
Προστέθηκε (Added)
- Το
TPdf.SaveAsInlineImagesExternalisedξαναγράφει το έγγραφο εξάγοντας κάθε ενσωματωμένη εικόναBI/ID/EIσε ένα επαναχρησιμοποιήσιμο XObject εικόνας και αντικαθιστώντας το ενσωματωμένο block με τελεστή/ImN Do - Οι συντομεύσεις λεξικού ενσωματωμένων εικόνων (
/W,/H,/BPC,/CS,/F, τιμές χρωματικού χώρου και τιμές φίλτρων) επεκτείνονται στα πλήρη ονόματα image-XObject, ώστε το εξαγόμενο αντικείμενο να συμμορφώνεται με τα πρότυπα - Το λεξικό
/Resources /XObjectτης σελίδας ενημερώνεται με τις νέες αναφορές XObject και η ξαναγραμμένη ροή περιεχομένου συμπιέζεται με Flate - Το
TPdfInlineImageExternaliseReportαναφέρει αριθμούς εξωτερικευμένων, παραλειφθεισών και αποτυχημένων συν τον αριθμό των δημιουργηθέντων XObject - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.84.0
Version 2.83.0
Προστέθηκε (Added)
- Το
TPdf.SaveAsFlateRecompressedξαναγράφει το έγγραφο και επανακωδικοποιεί τις επιλέξιμες ροέςFlateDecodeμε μέγιστη συμπίεση, αντικαθιστώντας μια ροή μόνο όταν η μετρημένη εξοικονόμηση byte υπερβαίνει ένα κατώφλι του καλούντος - Το
TPdfFlateRecompressOptionsεπιλέγει μια ελάχιστη εξοικονόμηση σε byte και έναν ελάχιστο λόγο εξοικονόμησης, ώστε οι ήδη βέλτιστες ροές να μένουν ανέπαφες - Το
TPdfFlateRecompressReportαναφέρει τους αριθμούς επανασυμπιεσμένων, παραλειφθεισών και αποτυχημένων ροών μαζί με τα συνολικά byte αρχικών και επανασυμπιεσμένων ροών - Οι αριθμοί και οι γενιές αντικειμένων παραμένουν σταθεροί· αλλάζουν μόνο τα φορτία των επανασυμπιεσμένων ροών και οι άμεσες τιμές
/Lengthτους, ώστε κάθε επιζώσα διασταυρούμενη αναφορά να παραμένει έγκυρη - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.83.0
Version 2.82.0
Προστέθηκε (Added)
- Το
TPdf.OptimizeImagesδιασχίζει κάθε αντικείμενο εικόνας σελίδας και μειώνει την ανάλυση εκείνων των οποίων το αποτελεσματικό DPI τοποθέτησης υπερβαίνει έναν στόχο που επιλέγει ο καλών, και μετά υποβάλλει κάθε αγγιγμένη σελίδα μέσω του εγγενή δημιουργού περιεχομένου - Το
TPdfImageOptimizeOptionsεπιλέγει το DPI στόχο και έναν ελάχιστο λόγο, ώστε να επανακωδικοποιούνται μόνο οι εικόνες με πραγματικά υπερβολική δειγματοληψία - Το
TPdfImageOptimizeReportαναφέρει τους αριθμούς βελτιστοποιημένων, παραλειφθεισών και αποτυχημένων εικόνων μαζί με δομημένο μήνυμα αποτυχίας - Η μείωση ανάλυσης χρησιμοποιεί ένα πέρασμα nearest-neighbour πάνω στο εγγενές buffer bitmap του PDFium, διατηρώντας τον μορφότυπο πηγής, το stride και το κανάλι alpha, και το
FPDFImageObj_SetBitmapεπανακωδικοποιεί το επιζών - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.82.0
Version 2.81.0
Προστέθηκε (Added)
- Το
TPdf.SaveAsDeduplicatedξαναγράφει το έγγραφο ως μία καθαρή αναθεώρηση που συμπτυχώνει συμβατές γραμματοσειρές, εικόνες και form XObjects σε έναν κοινό εκπρόσωπο - Ένα αναδρομικό δακτυλικό αποτύπωμα περιεχομένου συνδυάζει κάθε λεξικό πόρων, το πλήρες προσβάσιμο subgraph του και το ακατέργαστο φορτίο ροής του, ώστε τα διπλότυπα να συγχωνεύονται μόνο όταν ολόκληρο το περιεχόμενό τους είναι ταυτόσημο
- Κάθε διασταυρούμενη αναφορά σε αφαιρεθέν διπλότυπο ξαναγράφεται στον επιζόντα εκπρόσωπο, ενώ ο επανακατασκευασμένος κλασικός πίνακας διασταυρούμενων αναφορών διατηρεί σταθερούς τους αριθμούς αντικειμένων
- Το
TPdfDedupReportαναφέρει τους αριθμούς διατηρημένων και κλαδεμένων αντικειμένων συν αριθμούς συγχωνευμένων γραμματοσειρών, εικόνων και form XObjects ανά κατηγορία - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.81.0
Version 2.80.0
Προστέθηκε (Added)
- Το
TPdf.SaveAsReachableξαναγράφει το έγγραφο ως μία καθαρή αναθεώρηση που διατηρεί μόνο τα έμμεσα αντικείμενα προσβάσιμα από τον κατάλογο και το λεξικό /Info του trailer - Το
TPdfPruneReportαναφέρει τους αριθμούς διατηρημένων και κλαδεμένων έμμεσων αντικειμένων μαζί με τα μεγέθη byte πηγής και εξόδου και δομημένους λόγους αποτυχίας για κρυπτογραφημένη ή κακοσχηματισμένη είσοδο - Τα ορφανά μη προσβάσιμα αντικείμενα που αφήνουν πίσω τους επαυξητικές ενημερώσεις, συγχωνεύσεις σελίδων ή επισκευασμένες αποθηκεύσεις απομακρύνονται, ενώ η επανακατασκευασμένη κλασική διασταυρούμενη αναφορά και το trailer διατηρούν τα
/Root,/Infoκαι/IDχωρίς επαναρίθμηση - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.80.0
Version 2.79.0
Προστέθηκε (Added)
- Το
TPdf.CreateDocumentSearchδημιουργεί μια αναζήτηση σε όλο το έγγραφο προς τα εμπρός ή προς τα πίσω που επιστρέφει ένα αποτέλεσμα κάθε φορά χωρίς να δομεί ευρετήριο κειμένου πλήρους εγγράφου - Το
TPdfDocumentSearchResultαναφέρει τη σελίδα με δείκτη βάσει του ένα, το εύρος χαρακτήρων, το ταιριασμένο κείμενο και τα ορθογώνια χώρου σελίδας για κάθε αποτέλεσμα - Οι συνεδρίες αναζήτησης δέχονται το
IPdfCancellationToken, διατηρούν μόνο τα τρέχοντα handles σελίδας και κειμένου του PDFium και ολοκληρώνονται με ασφάλεια όταν κλείνει το έγγραφο - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.79.0
Version 2.78.0
Αλλαγμένο (Changed)
- Το
TPdfRangeRequestSchedulerκαταλαμβάνει πλέον με προτεραιότητα τις αλληλεπικαλυπτόμενες μεταφορές χαμηλότερης προτεραιότητας, ώστε οι κρίσιμες για σελίδες υποδείξεις του PDFium να μην περιμένουν πίσω από λήψεις παρασκηνίου - Τα αραιά byte διαθέσιμα εξωτερικά ακυρώνουν περιττές ενεργές μεταφορές, ενώ τα callbacks μεταφοράς που υπερκεράστηκαν ή είναι διπλά επιστρέφουν False χωρίς να δημοσιεύουν παρωχημένη κάλυψη
- Η προαγωγή προτεραιότητας διατηρεί ανεξάρτητα ιστορικά επαναλήψεων, και η προτεραιοποίηση της μεταφοράς δεν καταναλώνει πλέον το budget επαναλήψεων των ανεπηρέαστων ουρών εύρους
- Το
TPdfRangeRequestStatistics.SupersededRequestCountαναφέρει την εργασία μεταφοράς που εκτοπίστηκε από υποδείξεις υψηλότερης προτεραιότητας ή κάλυψη που παρέχεται εξωτερικά - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.78.0
Version 2.77.0
Προστέθηκε (Added)
- Το
TPdf.SaveAsNormalizedContentγράφει συντακτικά κανονικοποιημένο περιεχόμενο σελίδων σε ροή ή αρχείο που αντικαθίσταται ατομικά και αναφέρει αριθμούς κανονικοποιημένων, παραλειφθεισών και συσσωρευμένων σελίδων - Το
NormalizePdfContentSequenceπαρέχει αυτόνομη, οριοθετημένη κανονικοποίηση token για αποκωδικοποιημένες ακολουθίες content-stream
Αλλαγμένο (Changed)
- Οι πίνακες
/Contentsσελίδων μπορούν πλέον να συγχωνεύονται σε μία ροή διατηρώντας συμβολοσειρές, ονόματα, φορτία ενσωματωμένων εικόνων, άγνωστους τελεστές και κατάσταση γραφικών μεταξύ ροών - Τα κακοσχηματισμένα token, τα μη ισορροπημένα πεδία κατάστασης, τα μη υποστηριζόμενα φίλτρα, η κρυπτογραφημένη είσοδος και οι ξαναγραφές υπογεγραμμένων εγγράφων έχουν ρητές πολιτικές και δομημένη αναφορά κατάστασης
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.77.0
Version 2.76.0
Προστέθηκε (Added)
- Το
TPdfStreamInspectorπαρέχει απογραφή αυθαίρετων φυσικών αντικειμένων ροής PDF και αναφέρει offsets αντικειμένων, ακατέργαστα μήκη, αλυσίδες φίλτρων, DecodeParms, δείκτες εξωτερικών αρχείων, κατάσταση κρυπτογράφησης και εγγενείς διαδρομές εικόνας ή συνημμένων - Το
CopyRawDataαντιγράφει πλήρη κωδικοποιημένα φορτία ή επικυρωμένα παράθυρα byte, ενώ τοDecodeDataεφαρμόζει προβλέπτες ASCIIHex, ASCII85, LZW, Flate, RunLength, TIFF 8-bit και PNG με τη δηλωμένη σειρά - Το
TPdfStreamInspectOptionsοριοθετεί πόρους πηγής, ακατέργαστων, αποκωδικοποιημένων, λεξικού, αριθμού ροών και λόγου επέκτασης, με δομημένες αναφορές για όρια, κακοσχηματισμένα δεδομένα, μη υποστηριζόμενους codecs, κρυπτογράφηση και αποτυχίες εγγραφής
Αλλαγμένο (Changed)
- Η επίλυση μήκους ροής εκθέτει πλέον ακριβή διαστήματα για άμεσες και έμμεσες τιμές
/Length, συμπεριλαμβανομένων ροών μηδενικού μήκους και φορτίων που περιέχουν την κυριολεκτική ακολουθίαendstream - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.76.0
Version 2.75.0
Προστέθηκε (Added)
- Το
TPdfLoadOptionsπροσθέτει πολιτικές συμβατή, αυστηρή και αποκατάστασης στη φόρτωση από αρχείο, μνήμη, εύρος byte και προσαρμοσμένη ροή - Το
TPdfLoadReportαναφέρει την εγγενή διαδρομή αποκατάστασης, την εγκυρότητα xref, τα κατεστραμμένα offsets, τις συγκρούσεις καταχωρήσεων, τους αριθμούς αναθεωρήσεων, τα budgets ελέγχου και δομημένα ζητήματα για κλασικά, υβριδικά έγγραφα και έγγραφα xref-stream - Το
TPdf.SaveAsRepairedδημιουργεί ένα πλήρες αντίγραφο μίας αναθεώρησης και το φορτώνει αυστηρά ανεξάρτητα πριν παραδώσει την επαληθευμένη ροή ή αντικαταστήσει ατομικά ένα αρχείο προορισμού
Αλλαγμένο (Changed)
- Οι υπάρχουσες υπερφορτώσεις φόρτωσης διατηρούν συμβατή συμπεριφορά και δημοσιεύουν πλέον την εγγενή εγκυρότητα xref και την κατάσταση αποκατάστασης μέσω του
LastLoadReport - Η αυστηρή φόρτωση απορρίπτει έγγραφα που απαιτούσαν εγγενή επαναδόμηση xref ή απέτυχαν τον δομικό έλεγχο, ενώ η υπογεγραμμένη έξοδος επισκευής απαιτεί ρητή εξουσιοδότηση του καλούντος
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.75.0
Version 2.74.0
Προστέθηκε (Added)
- Το
TPdf.MergeFilesσυγχωνεύει λίστες πηγών βασισμένες σε αρχεία με εύρη σελίδων και κωδικούς ανά πηγή διατηρώντας το πολύ ένα έγγραφο πηγής ανοιχτό - Το
TPdfBatchMergeOptionsπροσθέτει διαχείριση σφαλμάτων με διακοπή ή παράλειψη, εισαγωγές ανά πηγή ή σε τμήματα, πολιτικές φορμών και περιγραμμάτων, έλεγχο εισαγωγής, callbacks προόδου, ακύρωση, αντιγραφή προτιμήσεων προβολέα και έλεγχο αναίρεσης - Το
TPdfBatchMergeReportαναφέρει σελίδες που υποβλήθηκαν ή αναιρέθηκαν, εκβάσεις πηγών, κλήσεις εγγενούς εισαγωγής, τη μεγαλύτερη παρτίδα, το μέγιστο ανοιχτών πηγών, ανιχνεύσεις πολιτικών, ζητήματα και την τελική κατάσταση
Αλλαγμένο (Changed)
- Η προεπιλεγμένη διαδρομή παρτίδας εκτελεί μία εγγενή εισαγωγή σελίδων ανά πηγή, ώστε το PDFium να επαναχρησιμοποιεί κλωνοποιημένα αντικείμενα σε εκείνη την πηγή, και μετά κλείνει την πηγή πριν ανοίξει το επόμενο αρχείο
- Η λειτουργία τμημάτων παρέχει λεπτότερα σημεία ακύρωσης και μικρότερες εγγενείς παρτίδες, ενώ οι μερικώς αποτυχημένες πηγές και οι εκβάσεις διακοπής ή ακύρωσης μπορούν να αφαιρέσουν όλες τις σελίδες που εισήγαγε η λειτουργία
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.74.0
Version 2.73.0
Προστέθηκε (Added)
- Το
TPdfRandomAccessStoreπαρέχει ασφαλές ως προς νήματα σειριακό και τοποθετημένο I/O, κρατά μικρό περιεχόμενο σε οριοθετημένη μνήμη και ξεχειλίζει μία φορά σε ιδιωτική προσωρινή αποθήκευση σε ένα ταβάνι που επιλέγει ο καλών - Τα
TPdf.SaveMemoryLimitκαιSaveTemporaryDirectoryρυθμίζουν τη σταδιοποίηση αποθήκευσης, ενώ ταLastSaveSpillCountκαιLastSaveLargestMemoryBufferεκθέτουν μετρήσιμα διαγνωστικά ανά αποθήκευση
Αλλαγμένο (Changed)
- Οι ενδιάμεσες μνήμες σταδιοποίησης αποθήκευσης, μετατροπής προτύπων, επικύρωσης, κρυπτογράφησης, DSS και PAdES μοιράζονται πλέον οριοθετημένο χώρο εργασίας με αποκλειστικά αρχεία διαρροής delete-on-close και εκκαθάριση μνήμης
- Τα προσαρμοσμένα callbacks block του PDFium σειριοποιούν τις συνηθισμένες αναζητήσεις ροής και χρησιμοποιούν τοποθετημένες αναγνώσεις ανεξάρτητες δρομέα όταν υποστηρίζονται από
TPdfRandomAccessStore - Η σάρωση δυνατοτήτων XFA βασισμένη σε αρχείο διαβάζει πλέον αλληλεπικαλυπτόμενα blocks σταθερού μεγέθους αντί να αντιγράφει το πλήρες PDF στη μνήμη
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.73.0
Version 2.72.0
Προστέθηκε (Added)
- Τα
TPdf.BeginIncrementalSave,CommitIncrementalSaveκαιEndIncrementalSaveπαρέχουν μια συνεδρία αναθεώρησης που προσθέτει μόνο τα τροποποιημένα ή νεοδημιουργημένα έμμεσα αντικείμενα - Το
TPdfIncrementalCommitInfoαναφέρει τον αριθμό τροποποιημένων αντικειμένων, τα προσαρτημένα byte, τα συνολικά byte εξόδου και τον αριθμό επιτυχημένων αναθεωρήσεων για κάθε commit
Αλλαγμένο (Changed)
- Κάθε dirty commit διατηρεί την πλήρη προηγούμενη έξοδο ως ακριβές πρόθεμα byte, δεν εκπέμπει αναθεώρηση όταν τίποτα δεν άλλαξε και συνεχίζει τον κλασικό μορφότυπο ή xref-stream της πηγής
- Η εγγενής επαυξητική έξοδος xref-stream επισκευάζεται με τον απαιτούμενο τύπο, την καταχώρηση self, το μήκος, τον δείκτη και τον τερματιστή αντικειμένου της πριν από περαιτέρω επεξεργασία
- Τα κρυπτογραφημένα έγγραφα απορρίπτονται πριν ξεκινήσει μια συνεδρία, ενώ τα υπογεγραμμένα έγγραφα απαιτούν ρητή άδεια του καλούντος, ώστε η πολιτική υπογραφών να μην παρακάμπτεται τυχαία
- Η υπερφόρτωση αρχείου ολοκληρώνει ένα συνοδευτικό προσωρινό αρχείο πριν αντικαταστήσει ατομικά τον προορισμό και αναιρεί την κατάσταση συνεδρίας μετά από οποιαδήποτε αποτυχία εγγραφής ή αντικατάστασης
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.72.0
Version 2.71.0
Προστέθηκε (Added)
- Το
TPdf.SaveAsObjectStreamγράφει αρχεία PDF 1.5+ με οριοθετημένες συμπιεσμένες ομάδες αντικειμένων και καθαρή ροή xref που περιέχει πλήρεις καταχωρήσεις τύπου 2 - Το
PackPdfObjectStreamsμπορεί να εκσυγχρονίσει κλασική, υβριδική, xref-stream και υπάρχουσα είσοδο object-stream μετά την επίλυση της ενεργής αναθεώρησης
Αλλαγμένο (Changed)
- Η ταξινόμηση αντικειμένων τοπικά στη σελίδα, τα προσαρμοστικά πλάτη πεδίων xref, η άμεση πρόσβαση στον κατάλογο και τα ρυθμιζόμενα ταβάνια μελών και αποκωδικοποιημένων byte ισορροπούν το μέγεθος αρχείου με την απόδοση τυχαίας πρόσβασης
- Η υπερφόρτωση αρχείου ολοκληρώνει ένα συνοδευτικό προσωρινό αρχείο πριν αντικαταστήσει ατομικά τον προορισμό, ενώ οι άκυρες επιλογές επαυξησης, έκδοσης και ομαδοποίησης απορρίπτονται πριν ξεκινήσει η έξοδος
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.71.0
Version 2.70.0
Προστέθηκε (Added)
- Το
TPdf.SaveAsLinearizedγράφει ένα αληθινό PDF Fast Web View σε ροή ή αρχείο χρησιμοποιώντας ομαδοποίηση αντικειμένων πρώτης σελίδας, δύο ενότητες διασταυρούμενων αναφορών και πίνακες υποδείξης μετατοπίσεων σελίδων και κοινόχρηστων αντικειμένων του Annex F - Τα ενεργά μέλη object-stream υλοποιούνται αυτόματα, επιτρέποντας στις εισόδους xref-stream και object-stream να γίνουν έξοδος φιλική προς εύρη χωρίς να αλλάξει το ορατό περιεχόμενο σελίδων
Αλλαγμένο (Changed)
- Η υπερφόρτωση αρχείου ολοκληρώνει ένα συνοδευτικό προσωρινό αρχείο πριν αντικαταστήσει ατομικά τον προορισμό, ενώ η υπερφόρτωση ροής διατηρεί τις κανονικές επιλογές αποθήκευσης του PDFium και τους ρητούς ελέγχους έκδοσης
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.70.0
Version 2.69.0
Προστέθηκε (Added)
- Το
TPdfRangeRequestSchedulerμετατρέπει τις υποδείξεις εύρους byte του PDFium σε προταξινομημένη, συγχωνευμένη και οριοθετημένη σε μέγεθος εργασία μεταφοράς χωρίς να επιβάλλει συνεχόμενη λήψη - Πλήρης και μερική ολοκλήρωση, οριοθετημένες επαναλήψεις, αφαίρεση διπλοτύπων αραιής διαθεσιμότητας, στατιστικά αιτημάτων και ακύρωση με ασφάλεια γενεών υποστηρίζουν αγωγούς μεταφοράς HTTP Range και προσαρμοσμένους
- Το
TPdfProgressiveDocument.RangeRequestsδέχεται αυτόματα υποδείξεις εγγράφου, φόρμας και σελίδας, προάγοντας μόνο τα ακριβή byte που μπλοκάρουν μια διαδραστική σελίδα
Αλλαγμένο (Changed)
- Το
CancelProgressiveLoadακυρώνει πλέον την ενεργή εργασία εύρους πριν από την κατεδάφιση εγγενούς διαθεσιμότητας και ροής, και οι παρωχημένες ολοκληρώσεις μεταφοράς αγνοούνται με ασφάλεια - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.69.0
Version 2.68.0
Προστέθηκε (Added)
- Το
TPdfProgressiveDocumentκρατά ζωντανή τη συνεδρία διαθεσιμότητας του PDFium ενώ μια απομακρυσμένη ή μεγαλούσα ροή τυχαίας πρόσβασης δέχεται τα εύρη byte που ζητά το PDFium - Τα
CheckDocumentAvailability,CheckFormAvailabilityκαιLoadAvailablePageεπιστρέφουν συγχωνευμένες υποδείξειςTPdfDownloadRange, ώστε ένας host να ανακτήσει μόνο τα δεδομένα που χρειάζονται για το άνοιγμα και την εμφάνιση γραμμικοποιημένης σελίδας - Το
AvailableByteCountυποστηρίζει μονότονες συνεχόμενες λήψεις, ενώ τοOnDataAvailableυποστηρίζει αραιές και εκτός σειράς caches εύρους
Αλλαγμένο (Changed)
- Τα γραμμικοποιημένα αρχεία χρησιμοποιούν τις εγγενείς πύλες προοδευτικού εγγράφου, φόρμας και σελίδας του PDFium· τα μη γραμμικοποιημένα αρχεία αλλάζουν αυτόματα στον εγγενή φορτωτή προσαρμοσμένης ροής αφού είναι παρόν το πλήρες αρχείο
- Το
TPdfStreamAdapterμπορεί να εκθέσει λογικό τελικό μέγεθος που διαφέρει από τα byte που είναι αποθηκευμένα προς το παρόν, διατηρώντας το ρητό όριο 4 GiB τουFPDF_FILEACCESS - Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.68.0
Version 2.67.0
Προστέθηκε (Added)
- Το
TPdfView.AllowFormEventsαπενεργοποιεί τα γεγονότα ποντικιού, πληκτρολογίου και εστίασης που προωθεί ο προβολέας στη στρώση συμπλήρωσης φορμών, για έναν προβολέα μόνο ανάγνωσης ή έναν που οδηγεί ο ίδιος την αλληλεπίδραση φορμών - Τα πεδία φορμών αποδίδονται κανονικά και όταν είναι απενεργοποιημένο: η φόρτωση και το κλείσιμο σελίδας αφήνονται σκόπιμα εκτός ελέγχου, αφού αυτά αρχικοποιούν τη στρώση φορμών αντί να αντιδρούν σε είσοδο
- Ο διακόπτης ενώνεται με τους υπάρχοντες διακόπτες
AllowUserPageChangeκαιAllowUserTextSelectionκαι προεπιλέγει σε True, ώστε η υπάρχουσα συμπεριφορά να μην αλλάζει
Αλλαγμένο (Changed)
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.67.0
Version 2.66.0
Προστέθηκε (Added)
- Οι επώνυμες ενέργειες που εγείρει ένα έγγραφο (ISO 32000-1 §12.6.4.11) φτάνουν πλέον στον host μέσω του νέου γεγονότος
OnNamedAction· προηγουμένως κάθε μία τους απορρίπτονταν - Χωρίς διαχείριση, τα τέσσερα τυπικά ονόματα πλοήγησης —
NextPage,PrevPage,FirstPage,LastPage— μετακινούν τη σελίδα, με περιορισμό στην πρώτη και την τελευταία αντί για αναδίπλωση - Το
TPdf.PerformNamedActionεπιτρέπει σε μια εφαρμογή να ενεργοποιήσει την ίδια συμπεριφορά απευθείας, επιστρέφοντας False για ένα όνομα χωρίς νόημα που παρέχει η βιβλιοθήκη
Διορθώθηκε (Fixed)
- Μια δοκιμή κρυπτογράφησης μετρούσε το σώμα μιας ροής σαρώνοντας προς τα πίσω από το
endstream, κάτι που θεωρούσε περιστασιακά λανθασμένα ένα byte κρυπτοκειμένου ως τερματιστή γραμμής και ανέφερε διαλείπουσα αποτυχία· η βιβλιοθήκη ήταν σωστή σε όλη τη διάρκεια
Αλλαγμένο (Changed)
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.66.0
Version 2.65.0
Προστέθηκε (Added)
- Το
BuildToUnicodeCMapδημιουργεί το CMap ToUnicode (ISO 32000-1 §9.10.3) που χρειάζεται μια γραμματοσειρά CID ώστε το κείμενό της να μπορεί να αντιγράφεται, να αναζητείται και να διαβάζεται από υποστηρικτική τεχνολογία — χωρίς αυτό το κείμενο αποδίδεται σωστά αλλά εξάγεται ως τίποτα - Οι καταχωρήσεις τμηματοποιούνται στο όριο 100 ανά block που θέτει η προδιαγραφή, οι διπλοί γλύφοι γράφονται μία φορά και το
.notdefπαραλείπεται - Το CMap ακολουθεί τη σύμβαση CID = GID, οπότε δεν χρειάζεται ροή
CIDToGIDMapδίπλα του
Αλλαγμένο (Changed)
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.65.0
Version 2.64.0
Προστέθηκε (Added)
- Οι σχολιασμοί ink και stamp σχεδιάζουν τον εαυτό τους από τα δικά τους αντικείμενα σελίδας παρά από τη ροή περιεχομένου της σελίδας, και αυτά τα αντικείμενα είναι πλέον προσβάσιμα: τα
AnnotationObjectCountκαιAnnotationObjectInfoτα διαβάζουν, τοAddPathToAnnotationπαραδίδει στον σχολιασμό μια διαδρομή δομημένη με τοCreatePathκαι τοRemoveAnnotationObjectδιαγράφει μία - Η δόμηση της εμφάνισης ενός stamp δεν απαιτεί πλέον εξωτερικό εργαλείο: δημιουργήστε τη διαδρομή ως συνήθως και δώστε την στον σχολιασμό αντί στη σελίδα
- Το PDFium δέχεται αντικείμενα σελίδας μόνο σε υποτύπους ink και stamp, οπότε κάθε άλλος υποτύπος απορρίπτεται με μήνυμα που κατονομάζει τον περιορισμό αντί να αποτυγχάνει αδιευκρίνιστα
Αλλαγμένο (Changed)
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.64.0
Version 2.63.0
Προστέθηκε (Added)
- Το
TPdf.AddStandardFontTextσχεδιάζει κείμενο με μία από τις 14 γραμματοσειρές που κάθε PDF reader υποχρεούται να παρέχει, χωρίς να ενσωματώνει καθόλου πρόγραμμα γραμματοσειράς — το προκύπτον αρχείο είναι μετρήσιμα μικρότερο από το ίδιο κείμενο σχεδιασμένο με τοAddText, που ενσωματώνει το system face που βρίσκει - Το νέο enum
TPdfStandardFontονομάζει και τις 14 όψεις, ώστε ένας καλών να μην μπορεί να πληκτρολογήσει λάθος ένα βασικό όνομα γραμματοσειράς· το PDFium ταιριάζει αυτά τα ονόματα ακριβώς και ένα τυπογραφικό λάθος θα έδινε σιωπηλά καμία γραμματοσειρά - Τα PDF/A και PDF/X απαιτούν και τα δύο κάθε γραμματοσειρά ενσωματωμένη, οπότε η έξοδος που στοχεύει σε αυτά τα προφίλ πρέπει να συνεχίζει να χρησιμοποιεί το
AddText
Αλλαγμένο (Changed)
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.63.0
Version 2.62.0
Προστέθηκε (Added)
- Το
TPdf.TextObjectGlyphOutlineεπιστρέφει το περίγραμμα ενός γλύφου της γραμματοσειράς ενός αντικειμένου κειμένου ως τμήματα διαδρομής, για μετατροπή κειμένου σε διανυσματική τέχνη ή επιθεώρηση ενός γλύφου που μια αντικατάσταση γραμματοσειράς μπορεί να άλλαξε - Το αποτέλεσμα επαναχρησιμοποιεί τον υπάρχοντα τύπο
TPdfPathSegments, ώστε να διαβάζεται ακριβώς όπως το περίγραμμα ενός σχεδιασμένου αντικειμένου διαδρομής - Οι συντεταγμένες είναι στον δικό του χώρο σχεδίασης της γραμματοσειράς, κανονικοποιημένες ώστε ένα em να είναι 1.0· το ζητούμενο μέγεθος γραμματοσειράς δεν τις κλιμακώνει, οπότε ένας καλών που θέλει μονάδες συσκευής πολλαπλασιάζει μόνος του με το μέγεθος σε στιγμές
- Ένα κενό αποτέλεσμα σημαίνει ότι η γραμματοσειρά δεν εκθέτει περίγραμμα για εκείνον τον γλύφο, κάτι που δεν είναι σφάλμα· το να ζητηθεί γλύφος μη κειμενικού αντικειμένου εγείρει εξαίρεση
Αλλαγμένο (Changed)
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.62.0
Version 2.61.0
Προστέθηκε (Added)
- Το
TPdf.InspectAvailabilityαναφέρει ό,τι μπορεί να πει το PDFium για ένα PDF χωρίς να το φορτώσει ως έγγραφο: αν το αρχείο είναι γραμμικοποιημένο (“web optimized”), αν μια πλήρης ανάλυση θα πετύχαινε, αν μεταφέρει δεδομένα φορμών και ποια σελίδα θα έδειχνε πρώτη ένας προβολέας - Οι νέοι τύποι
TPdfAvailability,TPdfLinearizationκαιTPdfFormAvailabilityμεταφέρουν τις απαντήσεις· η ροή διαβάζεται αλλά δεν διατηρείται, και η θέση της επανέρχεται κατά την επιστροφή - Αυτό κλείνει το τελευταίο κενό στην οικογένεια
FPDFAvail_*, που ήταν δεσμευμένη και φορτωμένη αλλά δεν είχε κανένα καλούντα πουθενά στη βιβλιοθήκη - Τα Delphi, Lazarus και C++Builder καλύπτουν καθένα τα αναφερόμενα γεγονότα, την εγγύηση θέσης ροής και την απόρριψη nil ροής
Αλλαγμένο (Changed)
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.61.0
Version 2.60.0
Προστέθηκε (Added)
- Το marked content (ISO 32000-1 §14.6) είναι πλέον προσβάσιμο από το API υψηλού επιπέδου: το
PageObjectMarksδιαβάζει κάθε ετικέτα BDC και τη λίστα ιδιοτήτων της από ένα αντικείμενο σελίδας, τοAddPageObjectMarkγράφει μία, τοRemovePageObjectMarkδιαγράφει μία και τοPageObjectMarkedContentIDαναφέρει το MCID - Οι νέοι τύποι
TPdfContentMark,TPdfContentMarkParamκαιTPdfMarkParamKindμεταφέρουν το όνομα ετικέτας και τις τυποποιημένες παραμέτρους της (integer, float, string, blob), με το είδος τιμής να επιλύεται από το PDFium αντί να μαντεύεται από το getter που πετυχαίνει - Η προσθήκη mark ανοικοδομεί τη ροή περιεχομένου της σελίδας, ώστε η ετικέτα να επιβιώνει μια αποθήκευση· αυτό έπρεπε να είναι ρητό επειδή το
SaveAsδεν αναγεννά περιεχόμενο από μόνο του - Τα Delphi, Lazarus και C++Builder μεταφέρουν καθένα έξι περιπτώσεις, συμπεριλαμβανομένης μίας που φουσκώνει την αποθηκευμένη ροή περιεχομένου για να επιβεβαιώσει ότι ο τελεστής BDC και η λίστα ιδιοτήτων του βρέθηκαν πραγματικά μέσα
Αλλαγμένο (Changed)
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.60.0
Version 2.59.0
Προστέθηκε (Added)
- Το
TPdfAnnotationαποκτάHasLinkUriκαιLinkUri, ώστε τοCreateAnnotationνα μπορεί πλέον να παράγει λειτουργικό web link: ο σχολιασμός αποθηκεύεται με ενέργεια/URIπου δείχνει στη δεδομένη διεύθυνση - Ο ορισμός URI συνδέσμου σε οποιονδήποτε υποτύπο εκτός από
anLinkεγείρει εξαίρεση, αφού μόνο ένας σχολιασμός Link μεταφέρει λεξικό ενεργειών - Το πεδίο είναι προς το παρόν μόνο για εγγραφή· η ανάγνωση ενός προορισμού συνδέσμου περνά μέσω της οικογένειας
FPDFLink_*, που χρειάζεται το handle του εγγράφου - Τα Delphi, Lazarus και C++Builder επαληθεύουν όλα ότι τα αποθηκευμένα byte μεταφέρουν την ενέργεια
/URIκαι τη διεύθυνση προορισμού
Αλλαγμένο (Changed)
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.59.0
Version 2.58.12
Προστέθηκε (Added)
- Η επικύρωση PDF/X αναφέρει
pvxiTrimBoxWithArtBoxόταν μια σελίδα φέρει/TrimBoxκαι/ArtBoxμαζί· και τα δύο δηλώνουν την τελειωμένη σελίδα, οπότε ένα RIP δεν έχει τρόπο να ξέρει ποιο είναι αυθεντικό (ISO 15930) - Η επικύρωση PDF/X αναφέρει
pvxiPageBoxOutsideMediaBoxόταν το/TrimBoxή το/BleedBoxεκτείνεται εκτός του/MediaBox, συμπεριλαμβανομένου πλαισίου με αρνητική προέλευση· ένα πλαίσιο πέρα από το μέσο δεν μπορεί να απεικονιστεί - Τα ορθογώνια κανονικοποιούνται πριν τη σύγκριση, οπότε οποιαδήποτε σειρά γωνιών γίνεται δεκτή, και ένα πλαίσιο που αγγίζει ακριβώς το όριο του μέσου εξακολουθεί να επικυρώνεται
- Οι αναφορές preflight ταξινομούν και τα δύο ζητήματα υπό τη δομή και κατονομάζουν τη συγκεκριμένη λύση
- Τα Delphi, Lazarus και C++Builder καλύπτουν όλα τις δύο απορριφθείσες περιπτώσεις και τη σύμφωνη
Αλλαγμένο (Changed)
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.58.12
Version 2.58.11
Προστέθηκε (Added)
- Η επικύρωση PDF/UA αναφέρει
pvuaiTociWithoutTocόταν ένα έγγραφο επισημαίνει καταχωρήσεις TOCI αλλά δεν επισημαίνει ποτέ τον περιέκτη TOC στον οποίο ανήκουν, αφήνοντας την υποστηρικτική τεχνολογία να αναγγέλλει στοιχεία πίνακα περιεχομένων χωρίς πίνακα περιεχομένων (ISO 14289-1 §7.7) - Οι αναφορές preflight ταξινομούν το ζήτημα υπό τη δομή και συστήνουν το τύλιγμα των καταχωρήσεων σε στοιχείο TOC
- Το C++Builder αποκτά την πρώτη του κάλυψη δοκιμών PDF/UA δίπλα στις περιπτώσεις Delphi και Lazarus
Αλλαγμένο (Changed)
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.58.11
Version 2.58.10
Προστέθηκε (Added)
- Η επικύρωση PDF/A αναφέρει
pvaiSymbolicTrueTypeEncodingόταν μια συμβολική γραμματοσειρά TrueType φέρει καταχώρηση/Encoding· το ISO 19005-1 §6.3.7 δέχεται μόνο το ενσωματωμένο cmap της γραμματοσειράς, οπότε ένα/Encodingθα το αντιβαίνει - Η σημαία symbolic διαβάζεται από το
/FontDescriptor, είτε γράφεται ενσωματωμένα στο λεξικό γραμματοσειράς είτε αναφέρεται έμμεσα· μια μη συμβολική γραμματοσειρά διατηρεί το απαιτούμενο/WinAnsiEncodingή/MacRomanEncodingχωρίς να επισημαίνεται - Οι αναφορές preflight ταξινομούν το ζήτημα υπό το περιεχόμενο και συστήνουν αφαίρεση της καταχώρησης
- Τα Delphi και Lazarus καλύπτουν την επισημασμένη περίπτωση συν και τις δύο αποδεκτές· το C++Builder καλύπτει την επισημασμένη και τη μη συμβολική περίπτωση
Αλλαγμένο (Changed)
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.58.10
Version 2.58.9
Προστέθηκε (Added)
- Η επικύρωση PDF/A αναφέρει τα όρια υλοποίησης περιεκτών του ISO 19005-1 Annex C:
pvaiNameOverLimitγια ονόματα μεγαλύτερα από 127 byte,pvaiArrayOverLimitπέρα από 8191 στοιχεία,pvaiDictOverLimitπέρα από 4095 καταχωρήσεις καιpvaiNestingOverLimitπέρα από 28 επίπεδα εμφώλευσης - Τα όρια είναι συμπεριληπτικά, οπότε ένας περιέκτης που κάθεται ακριβώς σε ένα εξακολουθεί να επικυρώνεται· οι δοκιμές καρφιτσώνουν και την απορριφθείσα και την αποδεκτή πλευρά κάθε ορίου
- Οι αναφορές preflight ταξινομούν τα τέσσερα ζητήματα υπό τη δομή και κατονομάζουν το συγκεκριμένο όριο σε κάθε σύσταση
- Τα Delphi και Lazarus καλύπτουν και τα τέσσερα όρια συν τις περιπτώσεις ορίων· το C++Builder καλύπτει το όριο πίνακα και το όριο
Αλλαγμένο (Changed)
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.58.9
Version 2.58.8
Προστέθηκε (Added)
- Η επικύρωση PDF/R αναφέρει
pvriPageImageMismatchόταν ο αριθμός εικόνων δεν ταιριάζει με τον αριθμό σελίδων· το ISO 23504-1 §6.5.1 κάνει κάθε σελίδα ακριβώς μία εικόνα λωρίδας, οπότε μια σελίδα χωρίς καμία ή με πολλές δεν είναι σύμφωνη - Οι δοκιμές Delphi, Lazarus και C++Builder καλύπτουν μια σελίδα χωρίς εικόνα, μια με δύο και τη σύμφωνη περίπτωση μίας εικόνας
Αλλαγμένο (Changed)
- Οι δοκιμές έγχυσης δεικτών PDF/R ξεκινούν πλέον από μια σελίδα πηγής που φέρει ήδη εικόνα λωρίδας, αφού η έγχυση δεικτών προσθέτει μεταδεδομένα και δεν μπορεί να παρέχει περιεχόμενο σελίδας
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.58.8
Version 2.58.7
Προστέθηκε (Added)
- Η επικύρωση PDF/R αναφέρει
pvriFontForbiddenόταν μια σελίδα ονομάζει πόρο γραμματοσειράς· μια σελίδα PDF/raster μεταφέρει τη σαρωμένη εικόνα και τίποτα άλλο (ISO 23504-1 §6.5.2) - Η επικύρωση PDF/R αναφέρει
pvriForbiddenImageFilterγια κωδικοποιήσεις λωρίδων εκτός λίστας επιτρεπόμενων, οπότε τα/LZWDecode,/RunLengthDecode,/ASCII85Decode,/ASCIIHexDecode,/JBIG2Decodeκαι/Cryptαπορρίπτονται ενώ τα/CCITTFaxDecode,/DCTDecode,/JPXDecodeκαι/FlateDecodeπερνούν (ISO 23504-1 §6.6) - Οι αναφορές preflight ταξινομούν και τα δύο ζητήματα υπό το περιεχόμενο και συστήνουν τη συγκεκριμένη λύση
- Οι δοκιμές Delphi, Lazarus και C++Builder καλύπτουν έναν πόρο γραμματοσειράς, ένα απορριφθέν φίλτρο και μια σελίδα που χρησιμοποιεί μόνο κωδικοποιήσεις από τη λίστα επιτρεπόμενων
Αλλαγμένο (Changed)
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.58.7
Version 2.58.6
Προστέθηκε (Added)
- Η επικύρωση PDF/E αναφέρει
pveiFontNotEmbeddedόταν ένα έγγραφο δείχνει χρήση γραμματοσειράς αλλά δεν φέρει ενσωματωμένο πρόγραμμα γραμματοσειράς, ώστε η απαίτηση να ελέγχεται και στη διαδρομή χωρίς DLL καθώς και μέσω PDFium - Ένα τεχνικό σχέδιο πρέπει να αποδίδεται ταυτόσημα δεκαετίες αργότερα, οπότε το ISO 24517-1 δεν εξαιρεί καμία από τις τυπικές 14 γραμματοσειρές· ο έλεγχος ισχύει εξίσου για
/Type1,/TrueType,/Type0και/MMType1 - Οι αναφορές preflight ταξινομούν το νέο ζήτημα υπό το περιεχόμενο και συστήνουν ενσωμάτωση κάθε προγράμματος γραμματοσειράς
- Οι δοκιμές Delphi, Lazarus και C++Builder καλύπτουν έναν descriptor χωρίς πρόγραμμα, ένα ενσωματωμένο
/FontFile2και ένα έγγραφο που δεν χρησιμοποιεί καθόλου γραμματοσειρά
Αλλαγμένο (Changed)
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.58.6
Version 2.58.5
Προστέθηκε (Added)
- Το
InjectPdfEMarkersγράφει πλέον το output intent που απαιτεί το ISO 24517-1 §6.2: ένα ενσωματωμένο προφίλ ICC προορισμού sRGB, ένα output intent/GTS_PDFE1που το ονομάζει και τον πίνακα/OutputIntentsτου καταλόγου, όλα ως μέρος της ίδιας επαυξητικής ενημέρωσης - Η ροή προφίλ παράγει το
/Nτης από την κεφαλίδα ICC αντί να υποθέτει τρία συστατικά, οπότε ένα προφίλ CMYK θα περιγραφόταν σωστά - Η επικύρωση PDF/E αναφέρει
pveiMissingOutputIntentκαιpveiMissingIccProfile, οπότε ένας υποψήφιος χωρίς δηλωμένη χρωματική συνθήκη δεν γίνεται πλέον δεκτός - Οι δοκιμές Delphi, Lazarus και C++Builder καλύπτουν ένα αποδεκτό output intent, ένα χωρίς προφίλ προορισμού και έναν κατάλογο χωρίς καθόλου output intent
Αλλαγμένο (Changed)
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.58.5
Version 2.58.4
Προστέθηκε (Added)
- Η επικύρωση PDF/X αναφέρει πλέον το
pvxiFontNotEmbeddedαπό σάρωση byte, οπότε μια μη ενσωματωμένη γραμματοσειρά εντοπίζεται στη διαδρομή χωρίς DLL αντί μόνο μέσω του ελέγχου με υποστήριξη PDFium - Σε αντίθεση με το PDF/A, οι τυπικές 14 γραμματοσειρές δεν εξαιρούνται στο PDF/X, οπότε κάθε χρήση γραμματοσειράς χωρίς ενσωματωμένο πρόγραμμα αναφέρεται
- Ο έλεγχος παραμένει συντηρητικός: ενεργοποιείται μόνο όταν το αρχείο δείχνει χρήση γραμματοσειράς αλλά δεν φέρει καθόλου
/FontFile,/FontFile2ή/FontFile3, επειδή η μέτρηση descriptors έναντι προγραμμάτων παράγει ψευδή θετικά σε κοινούς descriptors - Οι δοκιμές Delphi, Lazarus και C++Builder καλύπτουν έναν descriptor χωρίς πρόγραμμα, ένα ενσωματωμένο πρόγραμμα και ένα έγγραφο που δεν χρησιμοποιεί γραμματοσειρά
Αλλαγμένο (Changed)
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.58.4
Version 2.58.3
Προστέθηκε (Added)
- Η επικύρωση PDF/X αναφέρει πλέον
pvxiColorSpaceForbiddenόταν ένας υποψήφιος PDF/X-1a φέρει/DeviceRGB,/CalRGBή/Lab, τα οποία το ISO 15930-1 §6.2 αποκλείει από την ανταλλαγή CMYK του - Ο έλεγχος περιορίζεται μόνο στο PDF/X-1a, οπότε τα PDF/X-3 και νεότερα συνεχίζουν να επιτρέπουν RGB και τους ανεξάρτητους συσκευής χώρους που συνδυάζουν με το output intent
- Ελέγχονται μόνο σαφή token ονομάτων χρωματικών χώρων· μια ροή
ICCBasedχρειάζεται το/Nτης επιλυμένο και παραμένει στη στρώση μοντέλου αντικειμένων - Οι δοκιμές Delphi, Lazarus και C++Builder καλύπτουν έναν επισημασμένο χώρο RGB, έναν επισημασμένο χώρο Lab, ένα αποδεκτό ζεύγος CMYK και κλίμακας του γκρι και την επιτρεπόμενη περίπτωση σε PDF/X-3
Αλλαγμένο (Changed)
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.58.3
Version 2.58.2
Προστέθηκε (Added)
- Η επικύρωση PDF/X αναφέρει πλέον
pvxiTransparencyForbiddenγια ομάδα διαφάνειας ή ενεργό soft mask, που τα ISO 15930-1 §6.2 (PDF/X-1a) και ISO 15930-3 §6.3 (PDF/X-3) απαγορεύουν - Ο έλεγχος περιορίζεται στην ανιχνευμένη συμμόρφωση, οπότε τα PDF/X-4 και PDF/X-6 συνεχίζουν να επιτρέπουν διαφάνεια και ένα αρχείο του οποίου το επίπεδο δεν μπόρεσε να αναγνωριστεί δεν επισημαίνεται ποτέ για κανόνα που μπορεί να μην ισχύει γι' αυτό
- Ένα soft mask απενεργοποιημένο ρητά με
/SMask /Noneδεν αντιμετωπίζεται ως διαφάνεια - Το
PdfHasActiveSMaskμεταφέρθηκε από τοFPdfPdfaστη διεπαφήFPdfPdfCommon, ώστε κάθε validator να μοιράζεται έναν κανόνα soft mask - Οι δοκιμές Delphi, Lazarus και C++Builder καλύπτουν μια επισημασμένη ομάδα σε X-1a, ένα επισημασμένο soft mask σε X-3, ένα απενεργοποιημένο soft mask και την επιτρεπόμενη περίπτωση σε X-4
Αλλαγμένο (Changed)
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.58.2
Version 2.58.1
Προστέθηκε (Added)
- Η επικύρωση PDF/X ελέγχει πλέον το σχήμα του output intent που απαιτεί το ISO 15930-7 §6.2.4: το
pvxiOutputIntentSchemeαναφέρει έναν υποτύπο που είναι παρών αλλά δεν είναι/GTS_PDFXκαι τοpvxiOutputIntentMissingIdentifierαναφέρει ένα απόν/OutputConditionIdentifier - Ο υποτύπος ταιριάζεται ως ολόκληρο token ονόματος, οπότε ένα μεγαλύτερο όνομα όπως το
/GTS_PDFXVersionδεν περνά πλέον, ενώ μια γραφή του ίδιου ονόματος με διαφυγή#xxεξακολουθεί να περνά - Ένα output intent που δεν φέρει καθόλου υποτύπο δεν πειράζεται, επειδή η απουσία του αναφέρεται ήδη από τα ζητήματα επιπέδου δεικτών
- Οι αναφορές preflight καταχωρούν και τα δύο ζητήματα υπό την κατηγορία output intent και προτείνουν τη διόρθωση
- Οι δοκιμές Delphi, Lazarus και C++Builder καλύπτουν τον αποδεκτό υποτύπο, έναν υποτύπο PDF/A, ένα μεγαλύτερο token ονόματος, έναν απόντα υποτύπο και ένα λείπον αναγνωριστικό συνθήκης
Αλλαγμένο (Changed)
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.58.1
Version 2.58.0
Αλλαγμένο (Changed)
- Και τα 35 callbacks που καλεί το PDFium από τα δικά του πλαίσια C++ (συμπλήρωση φορμών, XFA, πλατφόρμα JavaScript, παύση προοδευτικής απόδοσης και ανάγνωση και εγγραφή ροών) περιέχουν πλέον κάθε εξαίρεση Pascal και επιστρέφουν την τεκμηριωμένη τιμή αποτυχίας αντί να ξετυλίγονται πέρα από το όριο γλώσσας
- Ένας χειριστής γεγονότων που εγείρει, μια αποτυχημένη δέσμευση ή ένα απρόσμενο σφάλμα μέσα σε callback δεν μπορεί επομένως πλέον να ρίξει τη διεργασία ή να αφήσει το PDFium σε απροσδιόριστη κατάσταση
Διορθώθηκε (Fixed)
- Η καταχώρηση χρονιστή φόρμας διέρρεε την καταχώρησή της όταν δεν μπορούσε να δημιουργηθεί ο υποκείμενος χρονιστής
Προστέθηκε (Added)
- Οι δοκιμές Delphi, Lazarus και C++Builder καλύπτουν πλέον την αποθήκευση σε ροή προορισμού που αρνείται εγγραφές και βεβαιώνουν ότι το έγγραφο παραμένει χρησιμοποιήσιμο και αποθηκεύσιμο μετά
Version 2.57.8
Διορθώθηκε (Fixed)
- Οι παλαιότερες εκδόσεις Delphi (XE5 και προηγούμενες) σταματούσαν να μεταγλωττίζουν τη δοκιμαστική βιβλιοθήκη με
E2003 Undeclared identifier: 'GetTickCount64'στοFPdfPades.pas, επειδή η μονάδα Windows που συνοδεύει εκείνους τους compilers δεν εξάγει το σύμβολο - Οι ίδιοι compilers αποτύγχαναν επίσης στο
GetUserDefaultLocaleNameστοPDFium.pasκαι στην ανάθεσηTBytesσεarray of ByteστοGetXfaFormPackets, οπότε το callback τοπικών ρυθμίσεων XFA και το στιγμιότυπο πακέτων δομούνται πλέον και σε εκείνους τους compilers
Αλλαγμένο (Changed)
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.57.8
Version 2.57.7
Αλλαγμένο (Changed)
- Κάθε ξαναγραφή από την πλευρά της αποθήκευσης περικόπτει πλέον τη ροή προορισμού πριν την εγγραφή αντί μόνο να την επαναφέρει στην αρχή, ώστε μια ενδιάμεση μνήμη του καλούντος που κρατούσε ήδη μεγαλύτερο έγγραφο να μην μπορεί να κρατήσει παρωχημένη ουρά πέρα από το νέο
%%EOF - Οι δοκιμές Delphi, Lazarus και C++Builder καλύπτουν πλέον την αποθήκευση σε προσυμπληρωμένη ροή
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.57.7
Version 2.57.6
Διορθώθηκε (Fixed)
- Η σάρωση αντικειμένων που προηγείται της κρυπτογράφησης δεχόταν ακολουθίες ψηφίων οποιουδήποτε μήκους, οπότε ένας μακρύς αριθμός οπουδήποτε στο αρχείο μπορούσε να τυλιχθεί σε αρνητικό ή πλαστό αριθμό αντικειμένου και να προσθέσει φανταστική καταχώρηση στον επανακατασκευασμένο πίνακα διασταυρούμενων αναφορών
- Οι αριθμοί αντικειμένων πάνω από το όριο ISO 32000-1 Annex C και οι γενιές πάνω από 65535 απορρίπτονται πλέον ως κεφαλίδες αντικειμένων αντί να περικόπτονται
Προστέθηκε (Added)
- Οι δοκιμές Delphi, Lazarus και C++Builder βεβαιώνουν πλέον τον ακριβή αριθμό καταχωρήσεων σε χρήση του επανακατασκευασμένου πίνακα
Αλλαγμένο (Changed)
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.57.6
Version 2.57.5
Διορθώθηκε (Fixed)
- Η κρυπτογράφηση με
EncryptMetadata = Falseέγραφε/EncryptMetadata falseστο λεξικό Encrypt αλλά κρυπτογραφούσε ακόμη τη ροή μεταδεδομένων του εγγράφου, οπότε ένας αναγνώστης που ακολουθούσε εκείνη τη δήλωση έβρισκε μη αναγνώσιμο XMP - Μια ροή
/Type /Metadataαντιγράφεται πλέον αμετάβλητη όταν η κρυπτογράφηση μεταδεδομένων είναι απενεργοποιημένη, ενώ κάθε άλλη ροή κρυπτογραφείται ακόμη
Προστέθηκε (Added)
- Το
AnsiNameTokenMatchesKeyείναι πλέον μέρος της διεπαφήςFPdfPdfCommonγια συγκρίσεις ονομάτων με επίγνωση οριοθετών - Οι δοκιμές Delphi, Lazarus και C++Builder καλύπτουν πλέον και τις δύο λειτουργίες κρυπτογράφησης μεταδεδομένων
Αλλαγμένο (Changed)
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.57.5
Version 2.57.4
Διορθώθηκε (Fixed)
- Ο πίνακας διασταυρούμενων αναφορών που επανακατασκευαζόταν κατά την κρυπτογράφηση παραλειπούσε την υποχρεωτική κεφαλή ελεύθερης λίστας αντικειμένου 0 που απαιτεί το ISO 32000-1 §7.5.4, οπότε η πρώτη του υποενότητα άρχιζε ένα αντικείμενο αργά
- Κάθε επανακατασκευασμένη καταχώρηση ισχυριζόταν γενιά 0· τα αντικείμενα γραμμένα με μεγαλύτερη γενιά τη διατηρούν πλέον, ώστε ο πίνακας να συμφωνεί με τις κεφαλίδες αντικειμένων που δείχνει
Προστέθηκε (Added)
- Οι δοκιμές Delphi, Lazarus και C++Builder καλύπτουν πλέον την καταχώρηση κεφαλής ελεύθερης λίστας και τη διατήρηση γενιάς στον επανακατασκευασμένο πίνακα
Αλλαγμένο (Changed)
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.57.4
Version 2.57.3
Διορθώθηκε (Fixed)
- Η κρυπτογραφημένη έξοδος εγκατέλειπε τη λέξη-κλειδί
streamκάθε αντικειμένου ροής, οπότε το αποθηκευμένο αρχείο δεν ήταν πλέον έγκυρη σύνταξη PDF και οι αυστηροί αναγνώστες ανέφεραν το περιεχόμενο σελίδων ούτε ως ροή ούτε ως πίνακα ροών - Η ξαναγραφή του
/Lengthταιριαζε το/Lengthως απλή υποσυμβολοσειρά, οπότε ένα λεξικό ροής που έφερε/Length1(οποιαδήποτε ενσωματωμένη γραμματοσειρά) είχε το όνομα κλειδιού του κατεστραμμένο ενώ το πραγματικό μήκος παρέμενε παρωχημένο - Μια ροή που δήλωνε το μήκος της έμμεσα ως
/Length N 0 Rείχε τον αριθμό αντικειμένου της επικαλυμμένο με το νέο μήκος· η καταχώρηση αντικαθίσταται πλέον από το άμεσο κρυπτογραφημένο μήκος - Ένα λεξικό ροής χωρίς καθόλου
/Lengthλαμβάνει πλέον ένα αντί να αφήνει τον αναγνώστη χωρίς μήκος
Προστέθηκε (Added)
- Το
AnsiFindDictKeyTokenείναι πλέον μέρος της διεπαφήςFPdfPdfCommonγια αναζητήσεις κλειδιών λεξικού ανωτάτου επιπέδου με επίγνωση οριοθετών - Οι δοκιμές Delphi, Lazarus και C++Builder καλύπτουν πλέον τη διατήρηση
/Length1, την αντικατάσταση έμμεσου μήκους και τη συμφωνία μεγέθους σώματος ροής
Αλλαγμένο (Changed)
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.57.3
Version 2.57.2
Διορθώθηκε (Fixed)
- Τα
SaveAsEncryptedκαιSaveAsEncryptedToStreamμεRevision = erR6παρήγαγαν έγγραφα που απέρριπταν τον δικό τους σωστό κωδικό σε περίπου ένα αρχείο από τα τέσσερα, επειδή ο μετρητής γύρων του αλγορίθμου 2.B του ISO 32000-2 §7.6.4.3 ξεκινούσε έναν γύρο πολύ χαμηλά και ο επιπλέον γύρος άλλαζε τις τιμές/U,/O,/UEκαι/OE - Τα κρυπτογραφημένα έγγραφα R6 ανοίγουν πλέον ξανά με τον κωδικό χρήστη ή ιδιοκτήτη σε οποιονδήποτε σύμφωνο αναγνώστη, και εξακολουθούν να απορρίπτουν λανθασμένο κωδικό
Προστέθηκε (Added)
- Οι σουίτες δοκιμών Lazarus και C++Builder απέκτησαν κάλυψη κρυπτογράφησης που προηγουμένως υπήρχε μόνο σε Delphi: μήκη κλειδιών R6, πεδία λεξικού Encrypt, ένα επαναλαμβανόμενο round trip κρυπτογράφησης και νέου ανοίγματος και απόρριψη λανθασμένου κωδικού
Αλλαγμένο (Changed)
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.57.2
Version 2.57.1
Αλλαγμένο (Changed)
- Η πληκτρολόγηση σε πεδίο φόρμας, η μετακίνηση του δρομέα και η εναλλαγή πλαισίων ελέγχου επαναζωγραφίζουν πλέον μόνο την περιοχή που το PDFium αναφέρει ως κατεστραμμένη αντί για ολόκληρο τον προβολέα
- Τα πλαίσια ζημιάς κανονικοποιούνται για τον άνω άξονα Y της σελίδας, διευρύνονται κατά ένα εικονοστοιχείο ώστε τα anti-aliased περιγράμματα widget να μένουν καθαρά, και κόβονται στην ορατή περιοχή πελάτη
- Ένα πλαίσιο ζημιάς που έχει κυλήσει εντελώς εκτός θύρας προβολής δεν προγραμματίζει πλέον επαναζωγραφίση, ενώ μια ανενεργή προβολή ή μια μη χαρτογραφημένη σελίδα εξακολουθεί να καταφεύγει σε πλήρη επαναζωγραφίση
- Οι δοκιμές Delphi, Lazarus και C++Builder καλύπτουν πλέον οριοθετημένη ακύρωση φορμών, ανεστραμμένα πλαίσια σελίδων, πλαίσια εκτός οθόνης και ασφάλεια ανενεργής προβολής
- Τα
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.57.1
Version 2.57.0
Προστέθηκε (Added)
- Το
TPdfThumbnailView.Orientationυποστηρίζει κάθετες και οριζόντιες διατάξεις μικρογραφιών διατηρώντας την υπάρχουσα κάθετη προεπιλογή - Τα
FirstVisiblePageIndex,LastVisiblePageIndexκαιEnsureCurrentPageVisibleεκθέτουν και ελέγχουν τη θύρα προβολής μικρογραφιών με δείκτες σελίδων βασισμένους στο ένα
Αλλαγμένο (Changed)
- Η αλλαγή του
CurrentPageIndexκάνει τώρα κύλιση της επιλεγμένης μικρογραφίας στην προβολή σε οποιονδήποτε προσανατολισμό - Οι δοκιμές Delphi, Lazarus και C++Builder καλύπτουν πλέον προεπιλογές προσανατολισμού, εναλλαγή, ορατά εύρη και ορατότητα επιλεγμένης σελίδας
- Το
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.57.0
Version 2.56.2
Αλλαγμένο (Changed)
- Τα
HighlightSearchText,AddSearchTextHighlightκαιClearHighlightακυρώνουν πλέον μόνο τα ορθογώνια συσκευής για τις περιοχές αναζήτησης που προστέθηκαν ή αφαιρέθηκαν, αντί να επανα ζωγραφίζουν ολόκληρο τον προβολέα - Η αντικατάσταση επισήμανσεων με τα ίδια αποτελέσματα ή η προσθήκη διπλότυπων αποτελεσμάτων δεν προγραμματίζει πλέον περιττή επαναζωγραφίση
- Οι δοκιμές Delphi, Lazarus και C++Builder καλύπτουν πλέον περιορισμένη ακύρωση, ισοδύναμες (idempotent) ενημερώσεις, εκκαθάριση και ασφάλεια ανενεργής προβολής
- Το
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.56.2
Version 2.56.1
Αλλαγμένο (Changed)
- Το
TPdfThumbnailViewεπαναχρησιμοποιεί πλέον τα rendered bitmaps για σελίδες που παραμένουν ορατές μεταξύ repaints και παρακείμενων θέσεων κύλισης - Η cache διατηρεί μόνο το τρέχον ορατό εύρος σελίδων και απελευθερώνει καταχωρήσεις ακριβώς όταν οι σελίδες εγκαταλείπουν αυτό το εύρος, το εκχωρημένο έγγραφο αλλάζει, ή οι διαστάσεις μικρογραφίας αλλάζουν
- Οι δοκιμές Delphi, Lazarus και C++Builder καλύπτουν πλέον επαναχρησιμοποίηση cache, pruning θύρας προβολής, ακύρωση μεγέθους, αντικατάσταση εγγράφου και καταστροφή στοιχείου
- Το
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.56.1
Version 2.56.0
Προστέθηκε (Added)
- Τα
TPdfView.CutSelectedFormTextToClipboardκαιTPdfView.PasteFormTextFromClipboardπαρέχουν επεξεργασία πρόχειρου Unicode για το εστιασμένο επεξεργάσιμο widget φόρμας
Αλλαγμένο (Changed)
- Οι εστιασμένοι επεξεργαστές φορμών χειρίζονται πλέον τις τυπικές συντομεύσεις πληκτρολογίου copy, cut, paste και select-all πριν από την προώθηση της εισόδου κειμένου στο PDFium
- Τα cut και paste απορρίπτουν πεδία μόνο για ανάγνωση και συνεδρίες χωρίς άδεια συμπλήρωσης ή τροποποίησης φόρμας, ενώ το cut αντιγράφει επιτυχώς πριν από την αφαίρεση του επιλεγμένου κειμένου
- Οι δοκιμές Delphi, Lazarus και C++Builder καλύπτουν πλέον συμπεριφορά χωρίς εστίαση, round-trip συντόμευσης και απόρριψη μόνο για ανάγνωση
- Το
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.56.0
Version 2.55.0
Προστέθηκε (Added)
- Το
TPdfView.AddSearchTextHighlightπροσθέτει μοναδικά αποτελέσματα για έναν επιπλέον όρο αναζήτησης στην επικάλυψη της τρέχουσας σελίδας, επιτρέποντας σε διάφορα ερωτήματα να παραμείνουν επισημασμένα μαζί
Αλλαγμένο (Changed)
- Το
HighlightSearchTextπαραμένει το σημείο εισόδου αντικατάστασης και μοιράζεται πλέον τον προσθετικό σαρωτή, ενώ τα διπλότυπα εύρη χαρακτήρων αγνοούνται και τοClearHighlightαφαιρεί το πλήρες συσσωρευμένο σύνολο - Οι δοκιμές Delphi, Lazarus και C++Builder καλύπτουν πλέον συσσώρευση διακριτών ερωτημάτων και καταστολή διπλότυπων εύρων
- Το
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.55.0
Version 2.54.0
Προστέθηκε (Added)
- Το
TPdfεκθέτει πλέον πλήρη στιγμιότυπα αντικειμένων σελίδας, ομαδοποιημένες ενημερώσεις στυλ, affine μετασχηματισμούς αντικειμένων, τμήματα διαδρομής, clip paths και παιδιά Form XObject - Η επιθεώρηση χαρακτήρων περιλαμβάνει πλέον χρώματα γεμίσματος και μολυβιάς, όνομα και σημαίες γραμματοσειράς, χαλαρά όρια glyph, ενεργές μήτρες, λαβές αντικειμένων κειμένου και μετατροπή δείκτη χαρακτήρα-σε-κείμενο
- Οι σχολιασμοί round-trip πλέον τη γεωμετρία περιγράμματος και τις ροές εμφάνισης normal, rollover και down
- Νέοι raw και decoded προσβάτες μικρογραφιών, μετασχηματισμοί περιεχομένου σελίδας και σχολιασμών, και το
RenderPageWithMatrixπαρέχουν απευθείας προχωρημένες διαδρομές απόδοσης και επεξεργασίας
Αλλαγμένο (Changed)
- Οι αλλαγές στυλ αντικειμένου σελίδας μπορούν πλέον να δεσμευτούν ως μία παρτίδα ώστε το PDFium να αναγεννά το περιεχόμενο σελίδας μόνο μία φορά
- Η απόδοση μήτρας χρησιμοποιεί την υπάρχουσα διαδρομή bitmap zero-copy όταν η διάταξη του bitmap προορισμού είναι συμβατή
Version 2.53.1
Διορθώθηκε (Fixed)
- Η ενσωματωμένη κινεζική λεζάντα μενού Copy χρησιμοποιεί πλέον σημεία κώδικα Unicode ανεξάρτητα από κωδικοποίηση και εμφανίζεται σωστά στα builds Lazarus
- Παλαιότερες toolchains Delphi μπορούν να μεταγλωττίσουν το
FPdfAsyncόταν η μονάδα τουςWinapi.Windowsπαραλείπει τη δήλωσηGetTickCount64
Version 2.53.0
Προστέθηκε (Added)
- Νέο σύνολο δοκιμών
Tests.ApiCoverageπου καλύπτει δημόσια API του TPdf που προηγουμένως δεν είχαν καθόλου end-to-end κάλυψη δοκιμών:GetPageBox/SetPageBox(ανάγνωση/εγγραφή MediaBox/CropBox, σφάλματα missing-box και round-trip αποθήκευσης),FlattenPage/FlattenAllPages(τιμή επιστροφής και διατήρηση αριθμού σελίδων),GenerateFormAppearances(no-op σε έγγραφα χωρίς φόρμες),SaveAsEncrypted/SaveAsEncryptedToStream(AES-256 με round-trip κωδικού πρόσβασης — επαλητεύει ότι το κρυπτογραφημένο αρχείο αρνείται να ανοίξει χωρίς τον κωδικό και ανοίγει με αυτόν), επικύρωση ορίωνDeletePage(σελίδα 0 και εκτός εύρους εγείρουνEPdfError), και οι φρουροί (sentinels) σχολιασμώνHasContents/HasAuthorπου εισήχθησαν στην v2.38.0 (επαλητεύοντας ότι τοDefault(TPdfAnnotation)τους αφήνειFalse)
Version 2.52.0
Προστέθηκε (Added)
- Το
TPdfView.CopySelectedFormTextToClipboardαντιγράφει την επιλογή κειμένου μέσα στο εστιασμένο widget AcroForm στο πρόχειρο των Windows ωςCF_UNICODETEXT
Αλλαγμένο (Changed)
- Οι λειτουργίες αντιγραφής κειμένου σελίδας και εστιασμένης φόρμας μοιράζονται πλέον τον ίδιο αμυντικό writer πρόχειρου Unicode και αφήνουν το πρόχειρο αμετάβλητο όταν η επιλογή τους είναι κενή
- Οι δοκιμές Delphi, Lazarus και C++Builder καλύπτουν πλέον ανενεργές ή μη εστιασμένες κλήσεις αντιγραφής φόρμας και ένα round-trip επιλογής εστιασμένης φόρμας μέσω του πρόχειρου των Windows
- Το
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.52.0
Version 2.51.0
Προστέθηκε (Added)
- Το
TPdfView.SelectLineAtεπιλέγει την οπτική γραμμή κειμένου που περιέχει μια σελίδα βασισμένη στο ένα και έναν δείκτη χαρακτήρα βασισμένο στο μηδέν χωρίς να απαιτείται είσοδος ποντικιού
Αλλαγμένο (Changed)
- Η προγραμματική επιλογή γραμμής, η επιλογή με τριπλό κλικ και τα
Shift+HomeήShift+Endμοιράζονται πλέον ένα μοντέλο ορίων γραμμής βασισμένο σε κουτί χαρακτήρα - Οι δοκιμές Delphi, Lazarus και C++Builder καλύπτουν πλέον σταθερή επιλογή γραμμής και μη έγκυρους δείκτες σελίδας ή χαρακτήρα
- Το
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.51.0
Version 2.50.0
Προστέθηκε (Added)
- Το
TPdf.LoadDocumentδέχεται πλέον ένα παράθυροIndexβασισμένο στο μηδέν καιCountσε μια ενδιάμεση μνήμηTBytes, επιτρέποντας στα ενσωματωμένα PDF να φορτώθούν χωρίς να δεσμευτεί προσωρινό τμήμα πίνακα byte
Αλλαγμένο (Changed)
- Η φόρτωση εύρους byte απορρίπτει αρνητικά ή εκτός ορίων παράθυρα πριν από την αλλαγή της κατάστασης του εγγράφου και διατηρεί τις υπάρχουσες επιλογές διάρκειας ζωής ενδιάμεσης μνήμης και δανεικής ενδιάμεσης μνήμης
- Οι δοκιμές Delphi, Lazarus και C++Builder καλύπτουν πλέον παράθυρα ενσωματωμένων PDF και μη έγκυρα ορίσματα εύρους byte
- Το
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.50.0
Version 2.49.1
Προστέθηκε (Added)
- Το
TPdfView.FitModeυποστηρίζει πλέον τοpfmFitHeightγια προσαρμογή της τρέχουσας σελίδας στο ορατό ύψος της θύρας προβολής, επιτρέποντας οριζόντια κύλιση όταν χρειάζεται
Διορθώθηκε (Fixed)
- Οι λειτουργίες προσαρμοής συγκλίνουν πλέον αφού η αλλαγή ορατότητας της γραμμής κύλισης τροποποιήσει την περιοχή πελάτη, διατηρώντας τα αποτελέσματα fit-page, fit-width και fit-height συνεπή μεταξύ VCL και LCL
- Οι δοκιμές προβολέα Delphi, Lazarus και C++Builder καλύπτουν πλέον την επιλογή
pfmFitHeightκαι τα ταξίδια επιστροφής απαρίθμησης - Το
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.49.1
Version 2.49.0
Προστέθηκε (Added)
- Η δημόσια επιφάνεια δεσμευτικού του PDFium καλύπτει πλέον και τις 470 εξαγόμενες συναρτήσεις στις αναθεωρημένες κεφαλίδες, συμπεριλαμβανομένης της πρόσβασης σε περιγραφές συνημμένων μέσω των
FPDFAttachment_SetDescriptionκαιFPDFAttachment_GetDescription - Το
TPdfεκθέτει πλέον περιγραφές συνημμένων, εγκυρότητα διασταυρούμενων αναφορών, μετατοπίσεις τέλους trailer, αναθεώρηση security-handler, φόρτωση μνήμης 64-bit, εύρη ψηφίων υπογραφής, εύρη κειμένου διαδικτυακών συνδέσμων και εκτεταμένα στιγμιότυπα δεδομένων εικόνας, φίλτρου, μεταδεδομένων και προφίλ ICC - Οι βοηθοί φορμών υποστηρίζουν πλέον εγγενή εστίαση πεδίων, ερωτήματα και ενημερώσεις εστιασμένων επιλογών, προώθηση τροχού ποντικιού, εγγράψιμες πινελιές μελανιού και επικαλύψεις φορμών μετά την προοδευτική απόδοση
Αλλαγμένο (Changed)
- Τα
FormFieldCount, οι δείκτες πεδίων φόρμας και η σειρά καρτελών περιγράφουν πλέον μόνο σχολιασμούς widget αντί να περιλαμβάνουν άσχετους σχολιασμούς σελίδας - Οι σελίδες
TPdfχωρίς κεφαλίδα εισέρχονται πλέον και εξέρχονται από τον κύκλο ζωής της σελίδας συμπλήρωσης φόρμας ώστε η εγγενής εστίαση και τα API εστιασμένων πεδίων να λειτουργούν χωρίςTPdfView - Οι εξαγωγές περιγραφών συνημμένων περιορίζονται από δυνατότητες ώστε οι εφαρμογές που χρησιμοποιούν παλαιότερη έκδοση PDFium να μπορούν ακόμα να φορτώσουν τη βιβλιοθήκη και να ανιχνεύσουν τη μη διαθέσιμη λειτουργία
Διορθώθηκε (Fixed)
- Η προοδευτική απόδοση σελίδας ζωγραφίζει πλέον τα στοιχεία ελέγχου φόρμας όταν η συμπλήρωση φορμών είναι ενεργοποιημένη
- Οι δοκιμές Delphi, Lazarus και C++Builder καλύπτουν πλέον τη νέα διαγνωστικά εγγράφων, περιγραφές συνημμένων, διαδρομές μελανιού, συμπεριφορά φορμών, εύρη ψηφίων υπογραφής, εύρη διαδικτυακών συνδέσμων και μεταδεδομένα εικόνων
- Το
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.49.0
Version 2.48.0
Προστέθηκε (Added)
- Το
TPdfMatrixεκθέτει πλέον εργοστάσια, κλωνοποίηση και ανάθεση, διαγνωστικά πεπερασμένης κατάστασης και αντιστρεψιμότητας, σύγκριση βασισμένη σε ανοχή, πρόσβαση μετάφρασης, αναφορά ορίζουσας και affine αποσύνθεση - Σύνθεση prepend, περιστροφή επίγνωστη του άξονα, κλιμάκωση, κλίση και αναστροφές, συν χαρτογράφηση ορθογωνίων stretch, contain και cover υποστηρίζουν ροές εργασίας τοπικού χώρου και προσαρμοσμένες διατάξεις χωρίς χειροκίνητη αριθμητική συντελεστών
- Μη μεταλλάξιμη αντίστροφη πρόσβαση, αντίστροφη χαρτογράφηση σημείων, μετασχηματισμοί διανυσμάτων και τετραπλεύρων, δυναμικές παρτίδες σημείων και ορθογωνίων, in-place παραλλαγές και μετασχηματισμένα όρια σε ένα πέρασμα επεκτείνουν την επαναχρησιμοποιήσιμη γεωμετρική επιφάνεια
Αλλαγμένο (Changed)
- Μετάφραση, κλιμάκωση και αναστροφές αξόνων ενημερώνουν πλέον μόνο τους επηρεαζόμενους συντελεστές αντί δρομολόγησης μέσω γενικού affine πολλαπλασιασμού
- Ο μετασχηματισμός ορθογωνίων κανονικοποιεί την είσοδό του μία φορά, χρησιμοποιεί μια εξειδικευμένη ακριβή ευθυγράμμιση-με-άξονες διαδρομή όπου είναι δυνατόν και υπολογίζει γενικά περιστραμμένα όρια χωρίς προσωρινές εγγραφές σημείων
- Οι μετασχηματισμοί παρτίδων σημείων και ορθογωνίων δεσμεύουν έναν πίνακα αποτελεσμάτων ή επαναχρησιμοποιούν τον αποθηκευτικό χώρο καλούντος, ενώ τα μετασχηματισμένα όρια σημείων συσσωρεύονται σε ένα πέρασμα χωρίς ενδιάμεσο πίνακα
Διορθώθηκε (Fixed)
- Η χαρτογράφηση ορθογωνίων απορρίπτει αποτελέσματα μηδενικού μεγέθους, μη πεπερασμένα και με υπερχείλιση
Singleπριν δημοσιεύσει έναν μη χρησιμοποιήσιμο πίνακα - Οι δοκιμές Delphi, Lazarus και C++Builder επαληθεύουν πλέον τη σειρά σύνθεσης, τα αναλλοίωτα του άξονα, τα αντίστροφα ταξίδια επιστροφής, τα προσαρμοσμένα ορθογώνια, την αποσύνθεση και τη συμπεριφορά μαζικής γεωμετρίας
- Το
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.48.0
Version 2.47.0
Προστέθηκε (Added)
- Το
FPdfAsyncπαρέχει πλέον δομημένους λόγους και μηνύματα ακύρωσης, αφαιρούμενες εγγραφές επιστροφής κλήσης, πηγές βασισμένες σε χρονικό όριο, αναμονή ακύρωσης και ατομικές λειτουργίες try-cancel μέσω εκτεταμένων διεπαφών που διατηρούν το αρχικό API - Το
TPdfFuture<T>.RunExπροσθέτει διαμορφώσιμη διανομή απάντησης και προτεραιότητα εργάτη ενώ οι φάκελοι αποτελεσμάτων εκθέτουν αναγνωριστικά λειτουργιών, εγκυρότητα τιμών, ονόματα κλάσεων εξαιρέσεων, χρονομέτρηση ολοκλήρωσης και επαναχρησιμοποιήσιμους βοηθούς ολοκλήρωσης - Το
TPdfAsyncExecutorπροσθέτει ένα επαναχρησιμοποιήσιμο σταθερό σύνολο εργατών με τέσσερα FIFO λωρίδες προτεραιότητας, προαιρετική οπισθενδοχή οριακής ουράς, ακυρώσιμες λαβές εργασιών, αναμονή επίγνωστη χρονικού ορίου, στιγμιότυπα εργασιών, συγκεντρωτικά στατιστικά και κομψή απενεργοποίηση
Αλλαγμένο (Changed)
- Επαναλαμβανόμενες ασύγχρονες εργασίες μπορούν να επαναχρησιμοποιήσουν νήματα εργατών και λειτουργίες ουράς O(1) αντί να δημιουργούν ένα νήμα για κάθε εργασία, ενώ ο συγχρονισμένος τερματισμός παραμένει διαθέσιμος για φορείς UI
- Αποτυχίες εκτελεστή και future διατηρούν διαγνωστικά κλάσης και μηνύματος εξαίρεσης, η ακύρωση διατηρεί τον αρχικό της λόγο και οι εξαιρέσεις επιστροφής κλήσης παραμένουν απομονωμένες από τον κύκλο ζωής του εργάτη και την απενεργοποίηση
- Οι δοκιμές Delphi, Lazarus και C++Builder καλύπτουν πλέον την εκτεταμένη επιφάνεια ακύρωσης, μεταδεδομένων future, ελέγχου εργασιών, οπισθενδοχής, διάταξης προτεραιοτήτων, στατιστικών, αποτυχίας και απενεργοποίησης
Διορθώθηκε (Fixed)
- Οι ταυτόχρονοι κάτοχοι ακύρωσης λαμβάνουν πλέον ένα ντετερμινιστικό αποτέλεσμα πρώτου-εγγραφέα αντί να βασίζονται σε ξεχωριστή ακολουθία παρατήρησης και ακύρωσης
- Η αναμονή αδράνειας του κύριου νήματος επεξεργάζεται συγχρονισμένες απαντήσεις εργασιών, αποτρέποντας έναν ολοκληρωμένο εργάτη από το να αφήσει τον εκτελεστή μόνιμα μη-αδρανή κατά τη συντονισμένη απενεργοποίηση
- Το
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.47.0
Version 2.46.0
Προστέθηκε (Added)
- Το
FPdfAsn1εκθέτει πλέον κλάσεις αναγνωριστικών, κωδικοποίηση και αποκωδικοποίηση αριθμών υψηλών ετικετών 64-bit, αναλυμένες εγγραφές TLV, παράθυρα θυγατρικού αναγνώστη μηδενικής αντιγραφής, τυποποιημένους αποκωδικοποιητές πρωτόγονων και φέτες περιεχομένου ή κωδικοποιημένων τιμών - Οι εγγραφείς DER υποστηρίζουν πλέον το πλήρες μη προσημασμένο εύρος INTEGER 64-bit, επικυρωμένο αυθαίρετο περιεχόμενο INTEGER, ENUMERATED, αυτόματη επιλογή UTCTime ή GeneralizedTime, application και private ετικέτες, πολυτιμικές SEQUENCE και κανονικά ταξινομημένη έξοδο SET OF
- Το
ValidateDerεπιστρέφει σφάλματα επικύρωσης επίγνωστα μετατόπισης επιβάλλοντας διαμορφώσιμα όρια φωλιάσματος, μέτρησης κόμβων, μήκους περιεχομένου, μέτρησης σφαλμάτων, ρίζας και προαιρετικής ταξινόμησης SET
Αλλαγμένο (Changed)
- Η concatentation DER και η πολυτιμική σύνθεση χρησιμοποιούν μία κατανομή εξόδου, οι ενδιάμεσες μνήμες εγγραφέα εκθέτουν λειτουργίες reserve, count, capacity και μεταφοράς ιδιοκτησίας και η ταξινόμηση SET OF χρησιμοποιεί πλέον
O(n log n)ταξινόμηση συγχώνευσης - Οι τιμές BOOLEAN, INTEGER, BIT STRING, OBJECT IDENTIFIER, NULL, UTF8String, PrintableString, IA5String, UTCTime και GeneralizedTime λαμβάνουν ελέγχους κανονικής μορφής κατά την κωδικοποίηση, τυποποιημένη αποκωδικοποίηση ή επικύρωση
- Το πακέτο χρόνου εκτέλεσης Lazarus εξάγει πλέον το
FPdfAsn1και οι σουίτες δοκιμών Delphi, Lazarus και C++Builder ασκούν την ίδια δημόσια επιφάνεια DER
Διορθώθηκε (Fixed)
- Οι αριθμοί ετικετών εξαρτώμενων από πλαίσιο μεγαλύτεροι από 30 δεν περικόπτονται πλέον στα πέντε χαμηλά bits του αναγνωριστικού
- Παραμορφωμένα αναγνωριστικά υψηλών ετικετών, μη ελάχιστες ορισμένες μηκές, μη έγκυρο UTF-8, μη μηδενικό γέμισμα BIT STRING, μη έγκυρα πεδία χρόνου, τελικές ρίζες και παραβιάσεις ορίων πόρων απορρίπτονται ντετερμινιστικά
- Το
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.46.0
Version 2.45.0
Προστέθηκε (Added)
- Το
FPdfPreflightReportεκχωρεί πλέον σοβαρότητα Info, Warning ή Error σε κάθε πρόβλημα και εκθέτει API σοβαρότητας, κατάστασης, κατηγορίας, κωδικού προβλήματος, αναζήτησης, έρευνας, ισοπέδωσης και φιλτραρίσματος σε επίπεδο προτύπου και αναφοράς - Οι αναφορές preflight εξάγουν πλέον SARIF 2.1.0, JUnit XML, NDJSON και εγγενές XML μέσω αντίστοιχων μεθόδων
To*καιSave*ToFileγια αγωγούς CI, αυτοματισμού και ροής - Σταθερά δακτυλικά αποτυπώματα αναφορών SHA-256 αναγνωρίζουν ισοδύναμα αποτελέσματα επικύρωσης ανεξάρτητα από διαδρομές πηγής και χρονοσφραγίδες παραγωγής
Αλλαγμένο (Changed)
- Οι αναφορές JSON, CSV, text, Markdown και HTML περιλαμβάνουν πλέον σοβαρότητα και εκτεταμένες περιλήψεις κατάστασης· το HTML προσθέτει προσιτές λεζάντες πινάκων και μια περίληψη κατάστασης
- Η κατασκευή συλλογών προβλημάτων και προτύπων χρησιμοποιεί γεωμετρική ανάπτυξη χωρητικότητας, τα αποτελέσματα ερωτημάτων είναι προδιαστασιοποιημένα, η διαφυγή JSON γράφει σε μία περιορισμένη ενδιάμεση μνήμη εξόδου και όλα τα αρχεία αναφορών χρησιμοποιούν έναν άμεσο εγγραφέα UTF-8
- Οι περιλήψεις κατηγοριών προβλημάτων χρησιμοποιούν ντετερμινιστική διάταξη, οι χρονοσφραγίδες περιλαμβάνουν χιλιοστά του δευτερολέπτου, το JSON φέρει
formatVersion: 2και τα κελιά CSV εξουδετερώνουν τύπους λογιστικών φύλλων
Διορθώθηκε (Fixed)
- Η εξαγωγή JSON διατηρεί πλέον έγκυρα συμπληρωματικά ζεύγη Unicode και αντικαθιστά απομονωμένες μονάδες κώδικα UTF-16 αντικαταστάτη αντί να εκπέμπει παραμορφωμένα κλιμακωτά δεδομένα
- Η εξαγωγή HTML διαφεύγει πλέον αποστρόφους και οι φιλτραρισμένες προβολές αναφορών κατέχουν ανεξάρτητους πίνακες προβλημάτων αντί να μοιράζονται μεταλλάξιμη αποθήκευση αποτελεσμάτων
- Το
TPdf.AboutInfo, τα μεταδεδομένα πακέτου Lazarus και τα μεταδεδομένα εγκαταστάτη αναφέρουν πλέον ομόφωνα την Version 2.45.0
Version 2.44.0
Προστέθηκε (Added)
- Οι σελιδοδείκτες και οι προορισμοί εκθέτουν την κατάσταση ανοίγματος, τον αριθμό απογόνων, τους προορισμούς ενεργειών, τις λειτουργίες προβολής προορισμού και έως τέσσερις παραμέτρους προβολής
- Τα
Metadata,GrantedPermissions,UserGrantedPermissions,HasPermissionκαιUserHasPermissionπαρέχουν τυποποιημένα στιγμιότυπα επιθεώρησης εγγράφου και ερωτήματα δικαιωμάτων - Το
ExtractThumbnail(PageNumber)αποδίδει μια ζητούμενη σελίδα χωρίς να αλλάζει την ενεργή σελίδα, και τα αποτελέσματα χρονικής σφραγίδας RFC 3161 εκθέτουν λεπτομέρειες πολιτικής, χρόνου παραγωγής και nonce
Αλλαγές (Changed)
- Οι διαδρομές σελιδοδεικτών, JavaScript, μεταδεδομένων, προορισμού και μικρογραφιών χρησιμοποιούν επικυρωμένα two-pass buffers, γεωμετρική αύξηση συλλογών και cycle-safe traversal
- Η μετεπεξεργασία αποθήκευσης επιλύει τον ενεργό κατάλογο, το δέντρο σελίδων και την open action μέσω της τρέχουσας αναθεώρησης xref, αποθηκεύει σε κρυφή μνήμη τα αποκωδικοποιημένα object streams και σαρώνει τα PDF dictionaries με λεξικά όρια
- Η κοινόχρηστη ανάλυση PDF επιβάλλει τώρα ακριβείς κεφαλίδες αντικειμένων, generations, κλειδιά λεξικού, stream lengths, predictor geometry, integer ranges και όρια σχολίων, literal-string και hexadecimal-string
- Η επικύρωση απάντησης RFC 3161 δεσμεύει τώρα τόσο το nonce όσο και το SHA-256
messageImprint, απαιτεί έναν δομικά έγκυρο signer και εφαρμόζει αυστηρούς κανόνες μήκους DER, OID, INTEGER και GeneralizedTime
Διορθώσεις (Fixed)
- Τα incremental documents δεν επιλέγουν πλέον ανενεργά διπλά καταλόγους ή κακοσχηματισμένα επιθήματα αναφοράς κατά την προσθήκη μιας προεπιλεγμένης open action
- Τα timestamp tokens με long-form DER lengths διατηρούν το πλήρως κωδικοποιημένο token, ενώ η κακοσχηματισμένη σειρά προαιρετικών πεδίων CMS και τα κενά signer sets απορρίπτονται
- Οι καθαρές ενσωματώσεις Delphi γράφουν τώρα τα PAdES nonce seed fields μέσω aligned-safe byte copies και περνούν τα XFA response bytes με τον ακριβή native pointer type
- Το
TPdf.AboutInfo, τα μεταδεδομένα του Lazarus package και τα μεταδεδομένα του installer αναφέρουν πλέον την Version 2.44.0 με συνέπεια
Version 2.43.0
Προστέθηκε (Added)
- Οι εγγραφές field και annotation του XFDF εκθέτουν τώρα presence flags που διακρίνουν μια παραλειφθείσα τιμή XML από μια ρητά κενή τιμή
Αλλαγές (Changed)
- Η εισαγωγή XFDF αποδέχεται στοιχεία και χαρακτηριστικά με πρόθεμα namespace, μεικτό περιεχόμενο κειμένου και CDATA, entity references και whitespace-significant τιμές, ενώ απορρίπτει μη έγκυρα Unicode scalar references
- Η εισαγωγή και εξαγωγή XFDF χρησιμοποιούν indexed field matching και bounded geometric buffers, βελτιώνοντας το throughput και τη συμπεριφορά peak allocation για βαθιά nested φόρμες, μεγάλες συλλογές annotation, ink lists, vertices και markup quadrilaterals
- Η επικύρωση PDF/A και PDF/UA χρησιμοποιεί bounded growth για μεγάλες συλλογές σελίδων, stream, structure-name και RoleMap; Η επίλυση PDF/UA RoleMap ακολουθεί τώρα direct arrays και indirect name ή array objects ακριβούς παραγωγής
Διορθώσεις (Fixed)
- Τα XFDF round-trips διατηρούν τώρα βαθιά nested διαδρομές field, ρητές κενές τιμές field, ρητά κενά περιεχόμενα annotation και τη διάκριση μεταξύ απόντων και κενών περιεχομένων
- Οι μη έγκυρες φορτώσεις memory-buffer και out-of-range αναθέσεις σελίδων απορρίπτονται χωρίς να αφήνουν μερική κατάσταση εγγράφου ή σελίδας, και ένα αποτυχημένο native page reload διατηρεί την προηγουμένως ενεργή σελίδα
- Τα μεγάλα marked-content identifiers και signature metadata buffers περιορίζονται και επικυρώνονται πριν από το allocation ή τη native πρόσβαση
Version 2.42.0
Προστέθηκε (Added)
- Το
TPdfMatrixπαρέχει τώρα ταInvert,TryInvert,TransformPointκαιTransformRectγια coordinate mapping, hit testing, normalized bounds και ρητό χειρισμό singular-matrix - Το
TPdf.WrapTextαπέκτησε μια υπερφόρτωσηBreakLongWordsπου διασπά CJK και άλλο κείμενο χωρίς κενά, διατηρώντας παράλληλα έγκυρα UTF-16 surrogate pairs μαζί - Το
TPdfAnnotation.AttachmentPointSetsεκθέτει κάθε quadrilateral σε multi-line markup annotations, ενώ το υπάρχον πεδίοAttachmentPointsπαραμένει ένα alias για το πρώτο set
Αλλαγές (Changed)
- Η εξαγωγή κειμένου, η κατασκευή readable-content, η αναζήτηση λέξεων και το offset mapping ομιλούμενου κειμένου χρησιμοποιούν τώρα bounded allocation και binary lookup paths, μειώνοντας τις επαναλαμβανόμενες αναθέσεις μνήμης και τα linear scans σε μεγάλες σελίδες
- Η σειριοποίηση ASN.1 και η κρυπτογραφημένη παραγωγή PDF χρησιμοποιούν τώρα geometric output buffers; Η διάταξη των encrypted-objects χρησιμοποιεί ταξινόμηση
O(n log n)και οι σειρές xref γράφονται απευθείας στο τελικό buffer - Το
WrapTextδιατηρεί τα όρια γραμμών CR, LF και CRLF και επαναχρησιμοποιεί ένα native measurement object για ολόκληρη τη λειτουργία - Η εισαγωγή και εξαγωγή XFDF διατηρούν κάθε markup quadrilateral; Η εισαγωγή εφαρμόζει επίσης χρώματα RGB/interior και αναλύει δεκαδικές συντεταγμένες ανεξάρτητα από το locale της διεργασίας
Διορθώσεις (Fixed)
- Οι παλαιοί καλούντες μπορούν και πάλι να ενημερώσουν το περιεχόμενο και τον συγγραφέα ενός annotation αναθέτοντας μη κενές συμβολοσειρές, χωρίς να ορίσουν τα νεότερα sentinel
HasContentsκαιHasAuthor - Οι ρητά κενές συμβολοσειρές annotation χρησιμοποιούν τώρα ένα έγκυρο zero-terminated native buffer, επομένως η εκκαθάριση των
/Contents,/T, και άλλων προαιρετικών κλειδιών κειμένου δεν περνά πλέον nil pointer στο PDFium
Version 2.41.0
Αλλαγές (Changed)
- Οι μέθοδοι αναφοράς Preflight
SaveJsonToFile,SaveMarkdownToFileκαιSaveTextToFileγράφουν τώρα UTF-8 στο Delphi (ταιριάζοντας με το υπάρχονSaveHtmlToFile), αντί για την κωδικοσελίδα ANSI του συστήματος; Οι χαρακτήρες μη-ASCII σε διαδρομές αρχείων, συστάσεις και σημειώσεις πεδίου είχαν αλλοιωθεί στο Delphi όταν αποθηκεύονταν μέσω αυτών των μεθόδων - Η μέθοδος
SaveCsvToFileγράφει τώρα UTF-8 με πρόθεμα BOM, ώστε το Excel για Windows να ανιχνεύει αυτόματα την κωδικοποίηση; Χωρίς το BOM, το Excel αντιμετωπίζει ένα UTF-8 CSV ως κωδικοσελίδα 1252 και αλλοιώνει τυχόν χαρακτήρες μη-ASCII
Διορθώσεις (Fixed)
- Η επίδειξη
ExtractImagesπαρουσίαζε διαρροή των αποθηκευμένων αντικειμένωνTBitmapστοFExtractedImagesόταν η φόρμα έκλεινε χωρίς να καθαριστούν ρητά πρώτα; Η φόρμα παρακάμπτει τώρα τη μέθοδοDestroyγια να καλέσει τηClearExtractedImages, απελευθερώνοντας κάθε προσωρινά αποθηκευμένο bitmap
Version 2.40.0
Αλλαγές (Changed)
- Το
TPdf.RenderPage(HDC, ...)καλύπτει τώρα τις εξαιρέσεις FPU/SSE γύρω από την κλήσηFPDF_RenderPage, ταιριάζοντας με τοTPdfView.RenderPage(HDC)(διορθώθηκε στην έκδοση v2.25.0) και κάθε σημείο εισόδου απόδοσης που επιστρέφει bitmap; Η υπερφόρτωση απευθείας-σε-DC επιπέδουTPdfάφηνε προηγουμένως τις εξαιρέσεις FPU ακάλυπτες σε μεταγλωττιστές πριν από την έκδοση D12
Διορθώσεις (Fixed)
- Το
ColorToARGBεπιστρέφει τώρα ένα πλήρως διαφανές εικονοστοιχείο (alpha 0) για ταclNoneκαιclDefaultαντί να αντιμετωπίζει την τιμή φρουρό ως κυριολεκτικό χρώμα RGB; Η προηγούμενη συμπεριφορά παρήγαγε ένα σκούρο, σχεδόν αδιαφανές γέμισμα όταν ο καλών περνούσεclNoneαναμένοντας “no colour”
Version 2.39.1
Διορθώσεις (Fixed)
- Οι ρητές αποθηκεύσεις PDF 1.3 καταργούν τώρα τις καταχωρήσεις
/SMask /None,/AIS falseκαι/TK trueπου επαναλαμβάνουν μόνο την αρχική κατάσταση γραφικών, ενώ συνεχίζουν να απορρίπτουν τη μη προεπιλεγμένη κατάσταση διαφάνειας
Version 2.39.0
Αλλαγές (Changed)
- Τα
CreatePDFκαιImageToPDFχρησιμοποιούν τώρα επιβεβαιωμένους προορισμούς αποθήκευσης και αναφέρουν επιτυχία μόνο όταν η μέθοδοςSaveAsολοκληρώνεται με επιτυχία - Τα
BatchExport,PDFtoJpgκαιSplitPDFεκχωρούν τώρα μοναδικούς καταλόγους εξόδου, ώστε οι επαναλαμβανόμενες εκτελέσεις και οι είσοδοι με το ίδιο όνομα να διατηρούν τα προηγούμενα αποτελέσματα - Το
SplitViewολοκληρώνει τώρα την αναζήτηση μία φορά χωρίς να αφήνει πίσω κρυφή κατάσταση σελίδας μετά από ακύρωση ή μη αντιστοίχιση, και διακόπτει τις ημιτελείς εργασίες εκτύπωσης αντί να υποβάλλει μερική έξοδο
Διορθώσεις (Fixed)
- Το
MergePDFαπορρίπτει τώρα μη έγκυρα διακριτικά εύρους σελίδων και διαδρομές εξόδου που αντικαθιστούν την πηγή, μετράει τις σελίδες που πραγματικά εισήχθησαν και αρνείται να αποθηκεύσει ένα κενό αποτέλεσμα - Οι επιδείξεις
Attachmentγια Delphi και C++Builder υποβάλλουν τώρα αποθηκεύσεις στην ίδια διαδρομή μέσω αντικατάστασης αρχείου ασφαλούς για επαναφορά, ώστε μια αποτυχημένη μετονομασία να μην μπορεί να αφαιρέσει το αρχικό PDF
Version 2.38.0
Αλλαγές (Changed)
- Η μέθοδος
SetAnnotationDataπροστατεύει τώρα τις εγγραφές/Contentsκαι/Authorπίσω από τους φρουρούςHasContents/HasAuthorστοTPdfAnnotation, ταιριάζοντας με το υπάρχον μοτίβοHasName/HasSubject/HasIcon; Προηγουμένως αυτά τα δύο πεδία γράφονταν ανεπιφύλακτα, επομένως η ανάθεση μιας εγγραφήςDefault(TPdfAnnotation)για την ενημέρωση μόνο του χρώματος ή των σημαιών αντικαθιστούσε σιωπηλά το υπάρχον περιεχόμενο και τον συγγραφέα του σχολιασμού με κενές συμβολοσειρές; ΤοGetPageAnnotationορίζει τώρα τους φρουρούς έτσι ώστε ένας κύκλος ανάγνωσης-τροποποίησης-εγγραφής να διατηρεί τις αρχικές τιμές
Διορθώσεις (Fixed)
- Το
GenerateFormAppearancesδιαβάζει τώρα την τιμή του πλαισίου επιλογής ή του κουμπιού επιλογής μέσω τουFPDFAnnot_GetFormFieldValue(το οποίο μεταβαίνει στο γονικό λεξικό πεδίου σύμφωνα με το ISO 32000-1 §12.7.5) αντί για τοFPDFAnnot_GetStringValue(Annot, 'V', ...)(το οποίο διαβάζει το λεξικό widget); Το widget συνήθως δεν φέρει/V, επομένως το/ASδεν συγχρονιζόταν ποτέ με την επιλεγμένη κατάσταση και ένα επιπεδοποιημένο πλαίσιο επιλογής ή κουμπί επιλογής αποδιδόταν ως μη επιλεγμένο
Version 2.37.0
Αλλαγές (Changed)
- Το
ParseTsaUrlπεριορίζει τώρα τη θύρα στο1..65535μετά την ανάλυση; Μια υπερμεγέθης τιμή θύρας διαφορετικά θα αναδιπλωνόταν μέσω αποκοπήςDWORDκαι θα μπορούσε να καταλήξει σε μια έγκυρη θύρα - Το XFDF
ParseFieldδέχεται τώρα μια παράμετρο βάθους (προεπιλογή 0, με ανώτατο όριο 64) και επιστρέφει ένα κενό πεδίο στο όριο, έτσι ώστε μια κακόβουλα φωλιασμένη αλυσίδα 100 000 επιπέδων<field>να μην μπορεί πλέον να υπερχειλίσει τη στοίβα
Διορθώσεις (Fixed)
- Η αίτηση TSA HTTP προστατεύεται τώρα από ένα κενό σώμα αίτησης πριν περάσει το
@ReqDer[0]στοWinHttpSendRequest; Μια αποαναφορά δυναμικού πίνακα μηδενικού μήκους θα είχε πρόσβαση σε έναν μη γειωμένο δείκτη; ΤοBuildTimeStampReqεπιστρέφει πάντα μια μη κενή SEQUENCE, αλλά η θέση κλήσης προστατεύει τώρα τη σύμβαση
Σημειώσεις (Notes)
- Το σχόλιο κεφαλίδας του
FPdfTsaWinσχετικά με τον έλεγχο ανάκλησης HTTPS διορθώθηκε: Το WinHttp επικυρώνει την αλυσίδα πιστοποιητικών διακομιστή από προεπιλογή, αλλά δεν εκτελεί έλεγχο ανάκλησης CRL/OCSP εκτός εάν ενεργοποιηθεί ρητά μέσω τουWinHttpSetOption; Η προηγούμενη διατύπωση ισχυριζόταν ότι ο έλεγχος ανάκλησης “comes for free”, κάτι που ήταν παραπλανητικό
Version 2.36.0
Αλλαγές (Changed)
- Οι αιτήσεις TSA HTTP στέλνουν τώρα μια ρητή κεφαλίδα
Content-Lengthεπιπλέον των κεφαλίδωνContent-TypeκαιAccept; Το WinHttp τη συνθέτει από το συνολικό μήκος, αλλά ορισμένοι διακομιστές μεσολάβησης RFC 3161 απαιτούν μια ρητή κεφαλίδα και απορρίπτουν την αίτηση με411 Length Requiredχωρίς αυτήν - Η εξαγωγή XFDF απορρίπτει τώρα τους χαρακτήρες ελέγχου C0 (εκτός από τους TAB/LF/CR που έχουν ήδη διαφύγει) αντί να εκπέμπει μια μη έγκυρη ακολουθία backslash-hex; Η προηγούμενη διαφυγή
\-01Fδεν είναι έγκυρη XML (η ανάστροφη κάθετος δεν έχει ειδική σημασία στην XML), επομένως οποιοσδήποτε συμμορφούμενος αναγνώστης θα είχε απορρίψει το έγγραφο ως κακοσχηματισμένο - Η μέθοδος
InjectAssociatedFilesγράφει τώρα το/Subtypeστο λεξικό ροής EmbeddedFile όταν ο καλών παρέχειTAssociateFile.MIMEType; Το πεδίο είχε δηλωθεί και τεκμηριωθεί, αλλά ο εγχυτήρας προηγουμένως κωδικοποιούσε σκληρά το/Type /EmbeddedFileκαι το αγνοούσε (το ISO 32000-2 §7.11.4 επιτρέπει το/Subtypeστη ροή)
Διορθώσεις (Fixed)
- Η εισαγωγή XFDF παρέλειπε το πρώτο byte περιεχομένου μετά από ένα UTF-8 BOM και το πρώτο byte όταν δεν υπήρχε BOM: οι μέθοδοι
BytesToAnsi(Bytes, 4, ...)(BOM) καιBytesToAnsi(Bytes, 1, ...)(χωρίς BOM) χρησιμοποιούσαν μετατοπίσεις έναρξης με σφάλμα κατά ένα επειδή ηBytesToAnsiλαμβάνει έναν δείκτη πίνακα με βάση το 0; Οι κλήσεις χρησιμοποιούν τώρα3και0 - Το
ExtractSignatureValueείχε δύο σφάλματα εσοχής dangling-ifόπου η εντολήR.Position:= CNεκτελούνταν ανεπιφύλακτα για τους προαιρετικούς κλάδουςcertificates [0]καιsignedAttrs [0]; Οι κλάδοι είναι τώρα τυλιγμένοι σεbegin/endέτσι ώστε η θέση να προωθείται μόνο όταν διαβάστηκε πραγματικά το προαιρετικό TLV (ίδια κατηγορία σφάλματος διορθώθηκε στοAddSignatureTimestampToCmsστην έκδοση v2.22.0)
Version 2.35.0
Αλλαγές (Changed)
- Οι μέθοδοι
TFPDFAvail_IsDocAvail,TFPDFAvail_IsPageAvailκαιTFPDFAvail_IsFormAvailλαμβάνουν τώρα την παράμετροhints: PFX_DOWNLOADHINTSαντί γιαvar hints: FX_DOWNLOADHINTS, έτσι ώστε η τεκμηριωμένη λειτουργία μόνο για ερώτημαnullptr(έλεγχος τρέχουσας διαθεσιμότητας χωρίς αίτημα για περισσότερα δεδομένα) να είναι προσβάσιμη από το Delphi; Η κεφαλίδα PDFium επιτρέπει ρητά σταhintsνα είναι null; η προηγούμενη σύνδεσηvarτο καθιστούσε αδύνατο - Η μέθοδος
TFPDF_SetSystemFontInfoλαμβάνει τώρα την παράμετροpFontInfo: PFPDF_SYSFONTINFOαντί γιαvar pFontInfo: FPDF_SYSFONTINFO, έτσι ώστε οι καλούντες να μπορούν να περάσουνnilγια να πουν στο PDFium να σταματήσει να χρησιμοποιεί μια προηγουμένως καταχωρισμένη διεπαφή γραμματοσειράς συστήματος (η τεκμηριωμένη διαδρομή απενεργοποίησης) - Η μέθοδος
TPdfThumbnailView.Paintυπολογίζει τώρα τοVisibleRowsμε τον ίδιο τύπο όπως τοUpdateScrollBarRange(ClientHeight div RowHeight), έτσι ώστε ο αριθμός των σχεδιασμένων σειρών να ταιριάζει με το μέγεθος σελίδας της γραμμής κύλισης; Ο προηγούμενος τύπος μόνο για σχεδιασμό ((ClientHeight - FMarginY) div RowHeight + 1) θα μπορούσε να διαφέρει κατά μία σειρά σε οριακά ύψη, σπαταλώντας uma απόδοση σε μια σειρά εκτός σελίδας ή χάνοντας την τελευταία ορατή σειρά
Version 2.34.0
Προστέθηκε (Added)
TPdf.SaveAsEncrypted/SaveAsEncryptedToStream— API υψηλού επιπέδου που αποθηκεύει το έγγραφο και στη συνέχεια το κρυπτογραφεί με PDF 2.0 AES-256-CBC (V=5/R=5/R=6); Λαμβάνει έναTPdfEncryptOptionsμε κωδικό πρόσβασης χρήστη/ιδιοκτήτη, δικαιώματα και αναθεώρηση; μεταβιβάζει στοEncryptDocumentBytes- Κρυπτογράφηση κυριολεκτικής συμβολοσειράς StrF: Το
EncryptDocumentBytesκρυπτογραφεί τώρα τις κυριολεκτικές συμβολοσειρές(...)σε αντικείμενα μη ροής (λεξικό Info, κ.λπ.) σε συμβολοσειρές δεκαεξαδικού συστήματος AES-256-CBC, ταιριάζοντας με τη μορφή κρυπτογράφησης ροής (IV 16 byte + κρυπτογραφημένο κείμενο PKCS7); Οι δεκαεξαδικές συμβολοσειρές<...>παραμένουν ανέπαφες
Version 2.33.0
Προστέθηκε (Added)
- Εγχυτήρας κρυπτογράφησης AES-256-CBC πλήρους εγγράφου στη νέα μονάδα
FPdfEncrypt.pas; ΤοEncryptDocumentBytesλαμβάνει ένα PDF απλού κειμένου και έναν κωδικό πρόσβασης, κρυπτογραφεί κάθε έμμεσο αντικείμενο ροής (IV 16 byte + AES-256-CBC PKCS7 υπό το κλειδί αρχείου), διορθώνει το/Length, προσαρτά το αντικείμενο λεξικού/Encryptκαι ανακατασκευάζει έναν πλήρη κλασικό πίνακα διασταυρούμενων αναφορών + trailer με/Encryptκαι/ID; Ολοκληρώνει τη στοίβα κρυπτογράφησης PDF 2.0 (AES block + GCM + SHA-512/384 + εξαγωγή κλειδιού R6 + λεξικό + σάρωση εγγράφου) - Βοηθητικό πρόγραμμα
EncryptStreamPayload— η μορφή ροής PDF 2.0 AES-256 (IV προσαρτημένο στο κρυπτογραφημένο κείμενο AES-CBC-PKCS7), επαναχρησιμοποιήσιμο από καλούντες που διαχειρίζονται τη δική τους διάταξη αντικειμένων
Version 2.32.0
Προστέθηκε (Added)
- Κατακερματισμός SHA-512 / SHA-384 (FIPS 180-4) στη νέα μονάδα
FPdfSha512.pas; Καθαρή Pascal, μεταφέρθηκε από το HotPDF; Απαιτείται από την επανάληψη κατακερματισμού κωδικού πρόσβασης PDF 2.0 R6, η οποία διακλαδίζεται σε μια τιμή mod-3 128 bit για να επιλέξει SHA-256/384/512 σε κάθε γύρο; Επαληθεύτηκε με γνωστές απαντήσεις FIPS-180-4 B.1 - Εξαγωγή κλειδιού κρυπτογράφησης PDF 2.0 και δημιουργός λεξικού Encrypt στη νέα μονάδα
FPdfEncrypt.pas; Υλοποιεί τον αλγόριθμο 2.B της παραγράφου §7.6.4.3 του ISO 32000-2 (χορός κατακερματισμού R6: AES-128-CBC + επαναληπτική επιλογή SHA-256/384/512), εξάγει το κλειδί κρυπτογράφησης αρχείου 32 byte συν τις καταχωρήσεις/O,/U,/OE,/UE,/Permsκαι κατασκευάζει το λεξικό Encrypt V=5/R=5/R=6 με/CFM /AESV3; Μεταφέρθηκε από το PDFlibPas, προσαρμοσμένο σε στυλ TBytes
Version 2.31.0
Προστέθηκε (Added)
- Βασικές λειτουργίες κρυπτογράφησης μπλοκ AES (FIPS 197) στη νέα μονάδα
FPdfAes.pas; Καθαρή Pascal, κρυπτογραφήσεις μπλοκ AES-128 και AES-256 συν βοηθήματα λειτουργίας CBC και ένα backend CSPRNG, μεταφέρθηκε από το HotPDF; Οι δοκιμές γνωστών απαντήσεων FIPS-197 Appendix C.2 / C.3 επαληθεύουν την ορθότητα; Αυτό είναι το κρυπτογραφικό θεμέλιο για τη στοίβα κρυπτογράφησης PDF 2.0 - Πιστοποιημένη κρυπτογράφηση AES-GCM (NIST SP 800-38D) στη νέα μονάδα
FPdfAesGcm.pas; Υλοποιεί GHASH (πολλαπλασιασμός GF(2^128)), GCTR και την κατασκευή GCM AEAD πάνω στις βασικές λειτουργίες μπλοκ AES; Οι περιπτώσεις δοκιμής NIST GCM 1 και 3 (AES-128) ταιριάζουν ακριβώς με το έγκυρο κρυπτογραφημένο κείμενο και την ετικέτα; Η περίπτωση δοκιμής 13 (AES-256) εκτελεί πλήρη κύκλο; Το GCM είναι η λειτουργία ISO/TS 32003 για το PDF 2.0 - Επικύρωση ακεραιότητας ParentTree και ClassMap για το PDF/A Level A (ISO 19005-1 §6.8.3); Το
pvaiParentTreeMissingεπισημαίνει ένα StructTreeRoot χωρίς το δέντρο αριθμών /ParentTree; ΤοpvaiClassMapUnresolvedεπισημαίνει μια αναφορά κλάσης /C χωρίς ένα /ClassMap
Version 2.30.0
Προστέθηκε (Added)
- Έγχυση συνδεδεμένων αρχείων (
InjectAssociateFiles/TPdf.SaveAsWithAssociateFiles, ISO 32000-2 §7.11.4); Η νέα μονάδαFPdfAssocFilesπροσαρτά πίνακες/AFαπό αναφορές filespec στον κατάλογο ή σε οποιοδήποτε λεξικό σελίδας, καλύπτοντας και τις οκτώ τιμές/AFRelationshipτου ISO 32000-2 Table 45; Επαναχρησιμοποιεί το μοτίβο αυξητικής ενημέρωσης που αποδείχθηκε από τοInjectPadesDssMarkers - Υποστήριξη PDF/X-6 (ISO 15930-9:2020); Το
TPdfXConformanceπροσθέτει τοpxc6; ο εγχυτήρας και ο επικυρωτής το περνούν μέσα από την ταυτοποίησηpdfxid:GTS_PDFXVersion; Το PDF/X-6 είναι ο βασισμένος στο PDF 2.0 διάδοχος του PDF/X-4 για πλήρη ανταλλαγή - Το PDF/A απαγορεύει την ενέργεια
/Thread(κενό λίστας επιτρεπομένων ISO 19005-1 §6.6.1); Η λίστα απαγορευμένων ενεργειών καλύπτει τώρα το Thread μαζί με τα Launch, ResetForm, ImportData, SetOCGState, SetState, GoTo3DView, Rendition και Hide
Διορθώσεις (Fixed)
- Η διαδρομή επικύρωσης PDF/A-4e τηρεί τώρα τους ίδιους ελέγχους δομής ετικετών, MarkInfo και αλλαγής λέξης με το Level A; Η υποβάθμιση της πλευράς αποθήκευσης της έκδοσης v2.29.0 κάλυπτε το
PdfAIsLevelE, αλλά τρεις πύλεςValidatePdfAComplianceέλεγχαν μόνο τοPdfAIsLevelA, επομένως ένα έγγραφο PDF/A-4e που δεν διέθετε δομή ετικετών περνούσε σιωπηλά - Απόκλιση δοκιμής OCG
/BaseState: το πέρασμα PostProcess της έκδοσης v2.28.0 διεύρυνε σωστά την αποδοχή σε/ONή/OFF(ISO 32000-1 Table 8.70), αλλά οι δοκιμές Delphi και C++ εξακολουθούσαν να αναμένουν την απόρριψη του/OFF; Οι δοκιμές χρησιμοποιούν τώρα μια πραγματικά μη έγκυρη τιμή (/Undefined) και μια νέα θετική δοκιμή κλειδώνει την αποδοχή του/OFF - Υπερβολική αντιστοίχιση γεωχωρικού
/Subtype /GEO: τοContainsDictionarySubtype('GEO')ταίριαζε με οποιοδήποτε λεξικό έφερε το διακριτικό, συμπεριλαμβανομένων μη σχετικών, όπως ένα αδέσποτο/ViewerPreferences << /Subtype /GEO >>; Το νέοContainsMeasureDictionarySubtypeαπαιτεί επιπλέον/Type /Measureή ένα αποκλειστικό για Measure αδελφό κλειδί, έτσι ώστε τα λεξικά που δεν αφορούν Measure να μην προκαλούν πλέον την απαίτηση ExtensionLevel 3 της ADBE
Version 2.29.0
Προστέθηκε (Added)
- Υποστήριξη PDF/A-4 (ISO 19005-4:2020) στον επικυρωτή, τον εγχυτήρα XMP και το επίπεδο μοντέλου αντικειμένων Pdfium; Το
TPdfAConformanceπροσθέτει ταpac4base,pac4fκαιpac4e; το βασικό επίπεδο είναι το PDF 2.0 (ISO 32000-2) και αντικαθιστά τα παλαιά επίπεδα A/B/U με τα base + F (φόρμα) + E (προσβασιμότητα); ΤοValidatePdfAδιαβάζει ένα πακέτο XMPpdfaid:part=4(το base παραλείπει το στοιχείο συμμόρφωσης), τοSaveAsPdfAτο εκπέμπει και τοSignPadesWithPdfAδέχεται τοpac4baseως κοντέινερ μακροπρόθεσμης αρχειοθέτησης - Σύνδεση
FPDFBookmark_GetColor— η τελευταία μη συνδεδεμένη δημόσια εξαγωγή του PDFium (469/469); ΤοTBookmarkαποκτά τα πεδίαHasColorκαιColorπου συμπληρώνονται από τον πίνακα σελιδοδεικτών/C(ISO 32000-1 §12.3.3); Η σύνδεση χρησιμοποιεί ανεκτική φόρτωση, ώστε τα παλαιότερα DLL που προηγούνται της εξαγωγής να συνεχίσουν να λειτουργούν - Έλεγχος έκδοσης κεφαλίδας PDF/E-1 (ISO 24517-1 §5)
pveiBadPdfVersion— το PDF/E-1 βασίζεται στο PDF 1.6 και μια κεφαλίδα που δεν είναι 1.6 επισημαίνεται τώρα - PDF/R-1 (ISO 23504-1)
pvriEncryptVersionMismatch— η κρυπτογράφηση επιτρέπεται μόνο σε μια κεφαλίδα%PDF-2.0; ένα σώμα 1.x που φέρει/Encryptεπισημαίνεται τώρα (προηγουμένως ήταν δήλωση χωρίς αποτέλεσμα) - PDF/R-1
pvriBadMediaBox— τοMediaBoxκάθε σελίδας πρέπει να είναι[0 0 w h]; ΤοPdfRHasNonZeroMediaBoxOriginείναι ένας ανεξάρτητος από τις τοπικές ρυθμίσεις σαρωτής ASCII που παρακάμπτει τα MediaBoxes έμμεσης αναφοράς - PDF/A Level A
pvaiRoleMapUnresolved(ISO 19005-1 §6.8.3.4) — ένα παρόν αλλά ημιτελές RoleMap που αφήνει τους προσαρμοσμένους τύπους δομής/Sχωρίς αντιστοίχιση επισημαίνεται τώρα, κλείνοντας το κενό που άφηνε ο υπάρχων έλεγχος μόνο για παρουσίαpvaiRoleMapMissing
Διορθώσεις (Fixed)
- Το
PdfVersionToName(20)επέστρεφε"1.0"αντί για"2.0", καταστρέφοντας την καταχώρηση/Versionτου καταλόγου και τα μηνύματα του επικυρωτή για κάθε αποθήκευση PDF 2.0; Ο μορφοποιητής διαχωρίζει τώρα ρητά major.minor για κωδικούς έκδοσης>= 20 - Ο κωδικοποιητής αρνητικών-INTEGER του
FPdfAsn1.pasαπέτυχε να μεταγλωττιστεί στο Delphi 12 (E2015στοInteger(-(V<0))), μπλοκάροντας ολόκληρο το έργο δοκιμών; Διορθώθηκε χρησιμοποιώντας τοInt64(-Ord(V<0))για τη μάσκα επέκτασης προσήμου - Η λίστα απαγορευμένων σχολιασμών PDF/A περιλαμβάνει τώρα το
/RichMediaσε όλα τα μέρη (προηγουμένως είχε παραλειφθεί; το ISO 32000-1 §12.5.6.35 το απαγορεύει στο PDF/A)
Version 2.28.0
Προστέθηκε (Added)
- Το
TPdfVersionπεριλαμβάνει τώρα τοpv20για το PDF 2.0 (ISO 32000-2); ΤοDecodePdfVersion(20)επιστρέφειpv20αντί γιαpvUnknownκαι τοEncodePdfVersion(pv20)εκπέμπει 20, έτσι ώστε η έκδοση ενός εγγράφου PDF 2.0 να μην χάνεται πλέον κατά την ανάγνωση και να μπορεί να γραφτεί ρητά
Αλλαγές (Changed)
- Το
DecodeDateαναλύει τώρα συμβολοσειρές ημερομηνίας PDF με προαιρετικά τελικά πεδία σύμφωνα με το PDF Reference 3.8.3, αντί να απαιτεί την πλήρη μορφή 23 χαρακτήρωνD:YYYYMMDDHHmmSSOHH'mm'; Συμβατές συντομευμένες ημερομηνίες όπως οιD:20260712,D:20260712153000καιD:20260712153000Zείναι πλέον αποδεκτές; προηγουμένως απορρίπτονταν από μια αυστηρή πύληLength=23; Η απόκλιση ώρας ζώνης ώρας επικυρώνεται τώρα έναντι του πραγματικού εύρους UTC-12..UTC+14 αντί για> 23 - Το
FPdfMeasure.MeasureTextκωδικοποιεί τώρα το όνομα της γραμματοσειράς ως FPCAnsiString/ DelphiUTF8Encode, ταιριάζοντας με τις άλλες θέσεις κλήσης FPDF_BYTESTRING της βιβλιοθήκης, αντί για μια απλή μετατροπήAnsiStringπου αλλοίωνε τα μη-ASCII ονόματα οικογενειών μέσω της τρέχουσας κωδικοσελίδας
Διορθώσεις (Fixed)
- Η διαδρομή αρνητικής τιμής του
TDerWriter.Integerκατέρρεε ή παρήγαγε κακοσχηματισμένο DER: ο βρόχοςwhile V <> -1 do V := V shr 8άφηνε τοInnerκενό γιαValue = -1(σφάλμα εύρους στο επόμενοInner[Length(Inner)-1]) και παρήγαγε υπερβολικά byte για άλλα αρνητικά; Ο κωδικοποιητής εξάγει τώρα byte συμπληρώματος ως προς δύο με μετατοπίσεις επέκτασης προσήμου και σταματά σωστά όταν το υπόλοιπο είναι καθαρή επέκταση προσήμου; Τα πεδία INTEGER του CMS/PAdES είναι θετικά, επομένως αυτό επηρεάζει μόνο τους καλούντες που περνούν αρνητικές τιμές, αλλά η διαδρομή είναι τώρα σωστή - Οι μέθοδοι
TPdf.GetCharacterOriginκαιTPdfView.GetCharacterOriginαγνοούσαν την τιμή επιστροφής τουFPDFText_GetCharOriginκαι επέστρεφαν ένα μη αρχικοποιημένο σημείο σε περίπτωση αποτυχίας; Το αποτέλεσμα είναι τώρα αρχικοποιημένο με μηδέν και μια αποτυχημένη ανάγνωση επιστρέφει την αρχή (ταιριάζοντας με τη σύμβαση τουGetCharacterRectangle)
Version 2.27.0
Αλλαγές (Changed)
- Οι επιδείξεις
PDFViewerκαιMultiPageViewerσε Delphi, C++Builder και Lazarus τυλίγουν πλέον την αναζήτηση εγγράφου μία φορά, δέχονταιEnterκαιF3για το επόμενο αποτέλεσμα, επαναφέρουν το πλαίσιο αναζήτησης όταν αλλάζουν οι επιλογές αντιστοίχισης και κρατούν τοEscγια την ακύρωση ενεργής αναζήτησης ή εργασίας εκτύπωσης - Η εκτύπωση του viewer ακολουθεί πλέον την τρέχουσα περιστροφή και επιλέγει αναλόγως κατακόρυφο ή οριζόντιο προσανατολισμό, ώστε η περιστροφή της γραμμής εργαλείων να αντανακλάται στις εκτυπωμένες σελίδες
- Και οι τρεις επιδείξεις
ViewerInteractionLabυποστηρίζουν πλέον τα shortcutsCtrl+A,Ctrl+C,Enter,F3καιEscχωρίς να παρεμβαίνουν στην native επιλογή και αντιγραφή των edit controls
Διορθώσεις (Fixed)
- Η ακύρωση εκτύπωσης στους viewers C++Builder και Lazarus ματαιώνει πλέον την εργασία εκτυπωτή αντί να υποβάλει τις σελίδες που αποδόθηκαν πριν την ακύρωση, και η έκδοση Lazarus εξέρχεται ρητά από κάθε nested βρόχο copy, page και collation
- Το κουμπί Cancel του
MultiPageViewerσε Delphi είναι πλέον συνδεδεμένο με τον handler του, και τα πεδία αναζήτησης τωνMultiPageViewerσε C++Builder/Lazarus διατηρούν την native επεξεργασία με πλήκτρα βέλους, Home και End
Version 2.26.0
Αλλαγές (Changed)
- Τα
TPdf.GetObjectBitmap,TPdf.GetBitmap,TPdf.GetThumbnailκαι τα αντίστοιχαTPdfViewπαίρνουν πλέον το render lock γύρω από την κλήσηFPDFImageObj_GetBitmap/FPDFPage_GetThumbnailAsBitmap, όπως κάνουν ταRenderPage/RenderTile. Είναι κλήσεις απόδοσης της πλευράς του PDFium που τρέχαν προηγουμένως χωρίς το lock και μπορούσαν να συγκρουστούν με ταυτόχρονοUnloadPage/ReloadPageστο ίδιο έγγραφο - Το
TPdf.RenderPageThumbnailσέβεται πλέον την εγγραφή/Rotateτης σελίδας: το fitting επανυπολογίζεται από τις διαστάσεις μετά την περιστροφή για σελίδες με/Rotate 90ή270, ώστε η αναλογία διαστάσεων της μικρογραφίας να ταιριάζει με όσα δείχνει ο viewer, αντί να χρησιμοποιούνται οι εγγενείς (μη περιστραμένες) διαστάσεις που επιστρέφει τοFPDF_GetPageSizeByIndex
Διορθώσεις (Fixed)
- Το
TPdfView.GetCharacterRectangleαγνοούσε την τιμή επιστροφής τουFPDFText_GetCharBoxκαι πέρναγε ένα μη αρχικοποιημένοTPdfRectangleστοPageToDeviceόταν το PDFium ανέφερε αποτυχία. Το rectangle αρχικοποιείται πλέον στο μηδέν και ένα αποτυχημένοGetCharBoxεπιστρέφειRect(0,0,0,0) - Στο
GetLinkAnnotationsτο μήκος του buffer για το URI path και τη διαδρομή αρχείου ήταν off by one: η δεύτερη κλήσηFPDFAction_GetURIPath/GetFilePathπερνούσε τοsize(που περιλαμβάνει το τελικό NUL) ως μήκος buffer σε ένα buffer που δεσμευόταν ωςsize-1. Η κλήση περνά πλέονsize-1, ώστε να μην γράφεται ποτέ εκτός της δέσμευσης σε builds του PDFium που δεν κάνουν self-clamping
Version 2.25.0
Αλλαγές (Changed)
- Τα
TPdf.AddText,SetText,AddPathκαιInsertFormObjectFromXObjectακυρώνουν πλέον την cached σελίδα κειμένου και τους σχολιασμούς συνδέσμων πριν την αναγέννηση του περιεχομένου της σελίδας, όπως κάνουν ταSetTextPositionsκαιRemoveObject. Προηγουμένως μια κλήσηGetText/GetWebLinks/FindFirstμετά την επεξεργασία της σελίδας επέστρεφε παρωχημένα δεδομένα κειμένου και συνδέσμων που είχαν καταγραφεί πριν την επεξεργασία, και το retained handleFPDF_TEXTPAGEχρησιμοποιούταν μετά την αναγέννηση του περιεχομένου με απροσδιόριστη συμπεριφορά - Το
TPdfView.RenderPage(HDC, ...)παίρνει πλέον το render lock και καλύπτει τις εξαιρέσεις FPU/SSE γύρω από την κλήσηFPDF_RenderPage, όπως κάθε άλλο σημείο εισόδου απόδοσης. Η προηγούμενη υπερφόρτωση με απευθείας εγγραφή στο DC μπορούσε να συγκρουστεί με ταυτόχρονοUnloadPage/ReloadPageστο ίδιο έγγραφο και άφηνε τις εξαιρέσεις FPU ακάλυπτες σε compilers παλαιότερους του D12 - Η επίδειξη
PrintPDFτου Delphi καλεί πλέονPrinter.Abortμε την ακύρωση, αντί να αφήνει το blockfinallyνα φτάσει στοPrinter.EndDoc, που υπέβαλλε τις σελίδες που αποδόθηκαν πριν την ακύρωση. Η επίδειξη Lazarus το χειριζόταν ήδη σωστά
Διορθώσεις (Fixed)
- Τα
TPdf.GetCharacter,TPdf.GetCharcodeκαι τα αντίστοιχαTPdfViewπερικούσαν τα code points του astral plane (emoji, CJK Extension B) που επιστρέφει τοFPDFText_GetUnicodeστα 16 κατώτερα bits μέσωWideChar(), παράγοντας ένα lone surrogate που αλλοίωνε την επακόλουθη επεξεργασία κειμένου. Οι χαρακτήρες πάνω από U+FFFF επιστρέφουν πλέον U+FFFD (χαρακτήρας αντικατάστασης); χρησιμοποιήστε τοGetTextγια να ανακτήσετε την πλήρη κωδικοποίηση UTF-16 των astral χαρακτήρων - Το
GetWebLinksκαλούσεSetLength(Rectangles, FPDFLink_CountRects(...))χωρίς προστασία από επιστροφή-1, που εγείρειEOutOfMemoryσε μια κακοδιατυπωμένη σελίδα. Ο αρνητικός αριθμός περιορίζεται πλέον στο μηδέν - Το
TPdf.Destroyσβήνει πλέον τη συμβολοσειράPasswordαπό τη μνήμη (μέσωUniqueString+FillChar) πριν αποδεσμευτεί το buffer με reference counting, ώστε ο κωδικός πρόσβασης να μη μένει αναγνώσιμος στο heap μετά την καταστροφή του component
Version 2.24.0
Προστέθηκε (Added)
- Τα
TPdf.DeletePage,GetAttachment,GetAttachmentName,GetAttachmentType,SetAttachmentκαιDeleteAttachmentεπικυρώνουν πλέον τον δείκτη σελίδας/συνημμένου και εγείρουνEPdfErrorγια τιμή εκτός ορίων, όπως η υπάρχουσα συμπεριφορά των annotation accessors. Προηγουμένως ένας δείκτης εκτός ορίων περνούσε απευθείας στο PDFium και παρήγε σιωπηλό no-op ή απροσδιόριστη συμπεριφορά
Διορθώσεις (Fixed)
- Διαρροές handle page-object σε αποτυχία στα
TPdf.AddText,AddBitmapκαιAddJpegImage: όταν ταFPDFText_SetText,FPDFImageObj_SetBitmap,FPDFImageObj_SetMatrixήFPDFImageObj_LoadJpegFileInlineεγείρουν εξαίρεση αφού το object έχει δημιουργηθεί αλλά πριν τοFPDFPage_InsertObjectτο παραδώσει στη σελίδα, το native handleFPDF_PAGEOBJECTδιέρεε. Κάθε διαδρομή καταστρέφει πλέον το object στην εξαίρεση πριν το re-raise - Το
TPdf.UnloadPageαπέρριπτε ένα σε εξέλιξη handleFPath(ορισμένο από τοCreatePathαλλά όχι ακόμα καταναλωμένο από τοAddPath) θέτοντάς το σεnilχωρίς κλήση τουFPDFPageObj_Destroy. Το handle καταστρέφεται πλέον, ώστε ένα path που δημιουργήθηκε και εγκαταλείφθηκε (ή διακόπηκε από αλλαγή σελίδας) να μην διαρρέει πια - Το
TPdf.InsertFormObjectFromXObjectπαράλειπε την κλήσηUpdatePage(FPDFPage_GenerateContent) που εκτελεί κάθε αδελφή εισαγωγή (AddText/AddPath/AddBitmap/AddJpegImage/SetText/RemoveObject), οπότε ένα Form XObject που εισαγόταν έτσι εξαφανιζόταν στο επόμενο reload ή save. ΤοUpdatePageκαλείται πλέον μετά την εισαγωγή
Version 2.23.0
Διορθώσεις (Fixed)
- Η επικύρωση
/BaseStateτου optional content δέχεται πλέον το/OFFεπιπλέον του/ON(ο πίνακας 8.70 του ISO 32000-1 επιτρέπει και τα δύο). Ο προηγούμενος έλεγχος απέρριπτε έγκυρες ρυθμίσεις/OCProperties /D /BaseState /OFFμε σφάλμα “malformed optional content”, παρότι το αρχείο ήταν conformant - Η επικύρωση
/Intentτου optional content δέχεται πλέον το/Designκαι arrays ονομάτων όπως[/View /Design], και όχι μόνο το κυριολεκτικό/View. Ο πίνακας 8.70 του ISO 32000-1 ορίζει το/Intentως όνομα ή array ονομάτων από τα/Viewκαι/Design; ο προηγούμενος έλεγχος μοναδικής τιμής απέρριπτε υπερβολικά την τυπική έξοδο συγγραφής - Η ανίχνευση λεξικού Geospatial Measure για την πύλη ExtensionLevel 3 του PDF 1.7
/Extensions /ADBEδεν απαιτεί πλέον το/Type /Measure, που ο πίνακας 254 του ISO 32000-1 σημειώνει ως προαιρετικό. Παραγωγοί GeoPDF που παραλείπουν το/Type(PDFBox, QGIS, FME) παρέκαμπαν προηγουμένως την πύλη και παρήγαν σιωπηλά μη conformant έξοδο PDF 1.7; ο detector αντιστοιχίζει πλέον μόνο το/Subtype /GEO
Version 2.22.0
Αλλαγές (Changed)
- Οι υπολογισμοί fit-zoom του
TPdfView(GetPageZoom,GetPageWidthZoom,GetPageHeightZoom) χρησιμοποιούν πλέονClientWidth/ClientHeightαντί για ταWidth/Heightτου παραθύρου, ώστε ταpfmFitPage/pfmFitWidth/pfmFitHeightνα προσαρμόζουν τη σελίδα στο ορατό viewport και όχι στο εξωτερικό frame με scrollbars και περιγράμματα, εξαλείφοντας το περιττό scrollbar που εμφανιζόταν όταν η προσαρμοσμένη σελίδα ήταν ελαφρώς μεγαλύτερη από την περιοχή client - Το
AddSignatureTimestampToCmsεγείρει πλέον ρητήExceptionπου προσδιορίζει το δυσερμήνευτο πεδίο CMS SignerInfo (version / sid / digestAlgorithm / signedAttrs / signatureAlgorithm), αντί να εξέρχεται σιωπηλά μεExitκαι να αφήνει ένα μερικό parse να συνεχίσει σαν να ήταν πλήρως υπογεγραμμένο CMS; διορθώνεται επίσης ελλιπές blockbegin/endγύρω από τον προαιρετικό κλάδοsignedAttrs [0]που άφηνε τοR.Positionχωρίς προώθηση
Διορθώσεις (Fixed)
- Διαρροή handle ιδιωτικού κλειδιού CNG στο
ResolveWinSigner: όταν τοCryptAcquireCertificatePrivateKeyπετύχαινε αλλά η επόμενη εξαγωγή issuer/serial ή τοTWinCmsSigner.Createεγείραν εξαίρεση, τοNCryptKeyHandleδεν απελευθερωνόταν ποτέ, αφού η ιδιοκτησία του μεταφέρεται στον signer μόνο με επιτυχή constructor. Η ρύθμιση μετά την απόκτηση τυλίγεται πλέον ώστε το handle να απελευθερώνεται μέσωNCryptFreeObjectσε κάθε αποτυχία - Το
EcDsaP1363ToDerαπορρίπτει πλέον εξ ολοκλήρου μηδενικό μισόrήsαντί να εκπέμψειINTEGER 0; οι υπογραφές ECDSA μεr = 0ήs = 0είναι άκυρες (τα RFC 4754 §6 / FIPS 186-4 §6 απαιτούν1 ≤ r, s ≤ n-1) και διαφορετικά θα γίνονταν δεκτές ως γνήσιες από έναν επιεική verifier
Version 2.21.12
Διορθώθηκε (Fixed)
- Οι αποθηκεύσεις με ρητό PDF 1.5 έως PDF 1.7 απορρίπτουν πλέον κακοδιατυπωμένες δομές
/OCPropertiesτου καταλόγου, συμπεριλαμβανομένων ελλιπών απαιτούμενων εγγραφών/OCGsή/D, άκυρων τιμών προεπιλεγμένης ρύθμισης και μη-array εγγραφών κατάστασης
Version 2.21.11
Διορθώθηκε (Fixed)
- Οι αποθηκεύσεις με ρητή έκδοση PDF απορρίπτουν πλέον άμεσες ή έμμεσες εγγραφές
/Annotsτης σελίδας των οποίων τα λεξικά σχολιασμών παραλείπουν την απαιτούμενη εγγραφή/Subtypeή/Rect
Version 2.21.10
Διορθώθηκε (Fixed)
- Οι αποθηκεύσεις με ρητό PDF 1.7 απαιτούν πλέον τα γεωχωρικά λεξικά
/Type /Measure /Subtype /GEOκαι τους σχολιασμούς Projection να δηλώνουν/Extensions /ADBEμε/BaseVersion /1.7και/ExtensionLevel 3ή νεότερο
Version 2.21.9
Διορθώθηκε (Fixed)
- Οι αποθηκεύσεις με ρητό PDF 1.7 απαιτούν πλέον τους σχολιασμούς RichMedia και τις ενέργειες
RichMediaExecuteνα δηλώνουν/Extensions /ADBEμε/BaseVersion /1.7και/ExtensionLevel 3ή νεότερο
Version 2.21.8
Διορθώθηκε (Fixed)
- Οι αποθηκεύσεις με ρητό PDF 1.7 απαιτούν πλέον τις ροές PRC 3D να δηλώνουν
/Extensions /ADBEμε/BaseVersion /1.7και/ExtensionLevel 1ή νεότερο, αντί να αντιμετωπίζουν το PRC ως βασικό χαρακτηριστικό του PDF 1.7
Version 2.21.7
Διορθώθηκε (Fixed)
- Οι αποθηκεύσεις με ρητό PDF 1.4 και παλαιότερο απορρίπτουν πλέον τις εγγραφές
/SMaskInDataτων image XObject, συμπεριλαμβανομένης της ρητής τιμής0, επειδή τα ενσωματωμένα κανάλια soft-mask JPEG 2000 απαιτούν PDF 1.5 ή νεότερο
Version 2.21.6
Διορθώθηκε (Fixed)
- Οι αποθηκεύσεις με ρητό PDF 1.4 και παλαιότερο απορρίπτουν πλέον τα image XObjects 16 bit, που απαιτούν PDF 1.5 ή νεότερο, ενώ οι στόχοι PDF 1.5 έως PDF 1.7 διατηρούν τα δεδομένα εικόνας
/BitsPerComponent 16τους
Version 2.21.5
Διορθώθηκε (Fixed)
- Οι αποθηκεύσεις με ρητό PDF 1.4 και παλαιότερο απορρίπτουν πλέον τις τιμές
/PageLayout /TwoPageLeftκαι/TwoPageRightτου καταλόγου εγγράφου, που απαιτούν PDF 1.5 ή νεότερο, ενώ οι στόχοι PDF 1.5 έως PDF 1.7 διατηρούν τη ζητούμενη διάταξη δύο σελίδων
Version 2.21.4
Διορθώθηκε (Fixed)
- Οι αποθηκεύσεις με ρητό PDF 1.3 απορρίπτουν πλέον τις εγγραφές
/Langτου καταλόγου εγγράφου, που απαιτούν PDF 1.4 ή νεότερο, ενώ οι στόχοι PDF 1.4 έως PDF 1.7 διατηρούν το αναγνωριστικό γλώσσας
Version 2.21.3
Διορθώθηκε (Fixed)
- Η ρητή αποθήκευση PDF 1.3 απορρίπτει τώρα δένδρα ονομάτων
/EmbeddedFilesστο έγγραφο, τα οποία απαιτούν PDF 1.4 ή νεότερο, χωρίς να απορρίπτει ροές ενσωματωμένων αρχείων που αναφέρονται μέσω παλαιότερων προδιαγραφών αρχείων
Version 2.21.2
Διορθώθηκε (Fixed)
- Τελευταία έκδοση: 2.21.4; Ημερομηνία κυκλοφορίας:
Version 2.21.1
Διορθώθηκε (Fixed)
- Η επικύρωση υβριδικών αναφορών εφαρμόζει τώρα συμπληρωματικές εγγραφές
/XRefStmπριν από τα κλασικά xref placeholders της ίδιας αναθεώρησης, ώστε συμπιεσμένες σημειώσεις και άλλα αντικείμενα που προστατεύονται από εκδοχή δεν παραλείπονται όταν ο πίνακας συμβατότητας τους χαρακτηρίζει ως ελεύθερα
Version 2.21.0
Αλλάχθηκε (Changed)
- Όλα τα παραδείγματα επισκόπησης Delphi, C++Builder και Lazarus μπορούν να ανοίξουν PDF που περνάει ως το πρώτο ορίσματα γραμμής εντολών, και τα παραδείγματα
MultiPageViewerγια C++Builder και Lazarus παρέχουν ρητές συντομεύσεις επιλογής όλων και αντιγραφής
Διορθώθηκε (Fixed)
- Τελευταία έκδοση: 2.21.12; Ημερομηνία κυκλοφορίας:
Version 2.20.0
Αλλάχθηκε (Changed)
- Όλα τα παραδείγματα επισκόπησης Delphi, C++Builder και Lazarus παρέχουν τώρα συνεπής συντομεύσεις για άνοιγμα, αναζήτηση, αποθήκευση, εκτύπωση, μεγέθυνση και πλοήγηση σελίδας, ενώ κάθε παραλλαγή
ViewerInteractionLabυποστηρίζει επίσης μετάβαση σελίδας, επαληθευμένη χειροκίνητη μεγέθυνση 10–600%, σταθερά αρχεία αλληλεπίδρασης και ελέγχους επιστροφής συντεταγμένων κλικ
Version 2.19.1
Διορθώθηκε (Fixed)
- Η ρητή επικύρωση εκδοχής PDF ακολουθεί τώρα την ενεργή αλυσίδα αναθεωρήσεων classic, hybrid ή xref-stream εγγράφου, συμπεριλαμβανομένων συμπιεσμένων καταχωρήσεων αντικειμένων, ώστε τα αντικατεστημένα, ελεύθερα και μη αναφερόμενα αντικείμενα δεν προκαλούν πλέον εσφαλμένα αποτελέσματα εκδοχής εκδόσεων
Version 2.19.0
Αλλάχθηκε (Changed)
- Τα παραδείγματα συνημμένων, εξαγωγής εικόνων, εξαγωγής κειμένου, μετατροπής σελίδας και διαχωρισμού για C++Builder και Lazarus χρησιμοποιούν τώρα αφιερωμένους φακέλους εξόδου ή ασφαλώς ολοκληρωμένα αρχεία, σταθερά ονόματα με μηδενικά διαχωρισμός, ανταποκριτικές ενημερώσεις προόδου και συνοπτικά ολοκλήρωσης με αριθμούς σφαλμάτων ανά στοιχείο
Διορθώθηκε (Fixed)
- Το παράδειγμα
CJKTextLabγια C++Builder μετράει τώρα κείμενο μέσω των εξαγόμενων συναρτήσεων επεξεργασίας PDFium, και τοMergePDFαποφεύγει αμβίγυα VCL message overload, επιτρέποντας καθαρά RAD Studio 37 builds
Version 2.18.3
Διορθώθηκε (Fixed)
- Το Document Time-stamp PAdES B-LTA καταχωρείται τώρα ως ανακαλύψιμο πεδίο υπογραφής — αόρατο Widget προσβάσιμο μέσω του
/Annotsτης πρώτης σελίδας και του AcroForm/Fields(ETSI EN 319 142-1 §5.4.3) — αντί για μη προσβάσιμο orphan αντικείμενο που οι επικυρωτές εναρίθμησης πεδίων υπογραφής δεν μπορούσαν να βρουν• οι υπάρχουσες σημειώσεις και πεδία διατηρούνται
Version 2.18.2
Διορθώθηκε (Fixed)
- Η υπογραφή PAdES και η κλασική εγγραφή cross-reference εμφανίζουν τώρα σαφές σφάλμα όταν byte offset υπερβαίνει το σταθερό πλάτος 10-ψήφιου πεδίου (~9,3 GB) αντί να αφήνει αθόρυβα το placeholder
/ByteRangeαγράφωσ (ISO 32000-1 §7.5.4)• η έξοδος xref-stream χρησιμοποιεί 8-byte binary πεδία και δεν επηρεάζεται
Version 2.18.1
Διορθώθηκε (Fixed)
- Η υπογραφή PAdES επιλύει τώρα έμμεσες αναφορές
/Annots,/AcroFormκαι/Fieldsτης πρώτης σελίδας με ολόκληρη κεφαλίδα αντικειμένου (ISO 32000-1 §7.5.3) και τον πραγματικό αριθμό γενιάς της αναφοράς• η αναζήτηση απλού υποσυνόλου προηγούμενα μπορούσε να αντιστοιχίσει αριθμό αντικειμένου μέσα σε μακρύτερο (επιλύοντας5 0 Rσε15 0 obj) και μια hard-coded γενιά παραλείπε objects μεgen>0, αλλοιώνοντας τους πίνακες των πεδίων υπογραφής ή απορρίπτοντας έγκυρα έγγραφα - Όταν ο κατάλογος, η πρώτη σελίδα,
/Annots,/AcroFormή/Fieldsβρίσκεται μέσα σε object stream, η υπογραφή δοκιμάζει τώρα σε ανεπτυγμένο αντίγραφο πριν αποτύχει αντί να απορρίπτει το έγγραφο απευθείας
Version 2.18.0
Προστέθηκε (Added)
- Το
ReadPdfVersionInfoαναφέρει την έκδοση κεφαλίδας, την αποτελεσματική έκδοση πυρήνα, την επικάλυψη καταλόγου και το επίπεδο επέκτασης προγραμματιστή Adobe από ροή PDF
Αλλάχθηκε (Changed)
- Η ρητή αποθήκευση PDF 1.3–1.7 επικυρώνει τώρα δομές καταλόγου, πόρων σελίδας, XFA, επεξεργασίας και επεκτάσεων προγραμματιστή στο πλαίσιο του κατεχόμενου αντικειμένου• η κρυπτογραφημένη ρητή έκδοση και η αυξητική νορμαλοποίηση PDF 1.3 απορρίπτονται για διατήρηση της ακεραιότητας του εγγράφου
- Η αποθήκευση σε διαδρομή αρχείου γράφει τώρα σε ένα αδερφάτο προσωρινό αρχείο και αντικαθιστά τον προορισμό μόνο αφού ολες οι συμπιέσεις, οι κανονικοποιήσεις και οι έλεγχοι έκδοσης πετύχουν
Διορθώθηκε (Fixed)
- Η έξοδος PDF 1.3 φέρει τώρα τον απαιτούμενο πλήρη πόρο
/ProcSetκαι αφαιρεί τα κλειδιά διαφάνειας PDF 1.4 όταν επαναλαμβάνουν μόνο τις αρχικές τιμές graphics-state του PDF 1.3 - Τα αρχεία με hybrid-reference, xref-stream και object-stream δεν επιγράφονται πλέον από τον classic xref compressor, αποτρέποντας την απώλεια compressed-object εγγραφών
- Ονόματα που μοιάζουν με κλειδιά διαφάνειας ή καταλόγου μέσα σε strings, comments ή μη σχετικούς χάρτες πόρων δεν προκαλούν πλέον ψευδή αποτυχία εκδοχής στόχου έκδοσης
Version 2.17.0
Προστέθηκε (Added)
- Οι υπογραφές PAdES καταχωρούνται τώρα ως αόρατες σημειώσεις Widget στον πίνακα
/Annotsτης πρώτης σελίδας και στον πίνακα/Fieldsτου AcroForm, διατηρώντας υφιστάμενες σημειώσεις και πεδία φόρμας
Αλλάχθηκε (Changed)
- Οι αυξητικές ενημερώσεις PDF/A, PDF/X, PDF/E, PDF/R, PDF/UA, PDF/VT και PAdES διατηρούν τώρα την αναπαράσταση cross-reference του αρχείου πηγής: τα έγγραφα xref-stream λαμβάνουν ενημέρωση xref-stream σύμφωνα με ISO 32000-1 §7.5.8.1, ενώ τα κλασικά συνεχίζουν να λαμβάνουν πίνακα xref
- Τα offsets cross-reference,
startxref,/Prev, οι τιμές ByteRange PAdES και η επεξεργασία εύρους SHA-256 χρησιμοποιούν τώρα 64-bit θέσεις με chunked hashing, επιτρέποντας αρχεία μεγαλύτερα από 2 GB σε 64-bit builds - Τα γεννημένα εγγράφιμα XMP packets αραρούν τώρα 2048 bytes padding πριν την οδηγία κλεισίματος packet
Version 2.16.10
Διορθώθηκε (Fixed)
- Η ανάπτυξη object-stream δεν αναβιώνει πλέον παρατημένα αντίγραφα αντικειμένων που μια αυξητική ενημέρωση μετακίνησε εκτός object-stream σε απλή ορισμό (ISO 32000-1 §7.5.7)• οι έλεγχοι συμμόρφωσης και η εγχύτευση markers επίλυαν προηγουμένως τον απαρχαίο κατάλογο ή λεξικό μεταδεδομένων σε τέτοια αρχεία
Version 2.16.9
Διορθώθηκε (Fixed)
- Στο Free Pascal, τα string τεξτ δεν είναι έγκυρο UTF-8 επεκτείνονται byte-by-byte ως Latin-1 και γράφονται ως UTF-16BE hex strings• τα ακατέργαστα υψηλά bytes διέρρεαν πριν σε literal string, που δεν είναι έγκυρη PDF 1.7 text-string κωδικοποίηση
- Η αποκωδικοποίηση ροής αναγνωρίζει τώρα ακατέργαστα deflate data χωρίς RFC 1950 zlib wrapper (συνηθισμένο ελάττωμα εσφαλμένων writers) και τα αποσυμπιέζει σε raw μορφή, ώστε οι έλεγχοι συμμόρφωσης δεν είναι πλέον αισθητά τυφλοί σε τέτοιες ροές
Version 2.16.8
Διορθώθηκε (Fixed)
- Οι αυξητικές ενημερώσεις που γράφονται μέσω του μονοπατιού post-processing ανανεώνουν τώρα το δεύτερο (μεταβαλλόμενο) στοιχείο trailer
/IDσύμφωνα με ISO 32000-1 §14.4• τα εργαλεία caching και συγχρονισμού έβλεπαν αγένητο αναγνωριστικό μετά από κάθε ενημέρωση
Version 2.16.7
Διορθώθηκε (Fixed)
- Το blanking σώματος ροής απαιτεί τώρα τη λέξη-κλειδί
streamνα ακολουθείται από end-of-line (ISO 32000-1 §7.3.8.1)• η λέξη μέσα σε literal string όπως(downstream)προηγουμένως ανείγε όλη την ακόλουθη δομή έως το επόμενοendstream - Οι σκάν απαγορευμένων χαρακτηριστικών PDF/X και PDF/E κάνουν επίσης blank literal strings και σχόλια (§7.2.2), ώστε τιμές όπως
/Title (see /JavaScript docs)ή commented token δεν προκαλούν πλέον ψευδή εύρεσηJavaScript,AcroFormήLZWDecode
Version 2.16.6
Διορθώθηκε (Fixed)
- Οι εγγραφές DPM PDF/VT επικυρώνονται τώρα κατά την εγγραφή όπως τεκμηριώνεται: ονόματα κλειδιών που παραβιάζουν τον κανόνα NMTOKEN ISO 16612-2 §6.6 ή τον κανόνα προθέματος καταχωρητή Annex E, και διπλότυπα ονόματα απορρίπτονται αντί να γράφονται στο λεξικό DPart
Version 2.16.5
Διορθώθηκε (Fixed)
- Η αφαίρεση εγγραφής λεξικού της οποίας η τιμή είναι hex string (δηλ.
/Check <...>) αφαιρεί τώρα ολόκληρη την εγγραφή• οι injectors άφηναν προηγουμένως ορφανή hex τιμή, δημιουργώντας συντακτικά κατεστραμμένο λεξικό - Η αφαίρεση εγγραφής της οποίας η έμμεση αναφορά χρησιμοποιεί newlines μεταξύ των tokens (ISO 32000-1 §7.3.10) δεν αφήνει πλέον πίσω τον αριθμό γενιάς και τη λέξη-κλειδί
R
Version 2.16.4
Διορθώθηκε (Fixed)
- Η σάρωση μέγιστου object-number δεν απαιτεί πλέον οι κεφαλίδες αντικειμένων να αρχίζουν γραμμή (ISO 32000-1 §7.5.3), ώστε οι injectors δεν μπορούν πλέον να δεσμεύσουν object number που συγκρούεται με inline κεφαλίδα
N G obj• τα object numbers ορίζονται από το ανώτατο όριο Annex C - Οι ροές των οποίων το
/Lengthείναι έμμεση αναφορά επιλύουν τώρα το αναφερόμενο integer object και χρησιμοποιούν την τιμή του όταν αντιστοιχεί στο κλειστικόendstream• προηγουμένως τέτοιες ροές οριοθετούνταν με αναζήτηση μοτίβου, που περικόπτε bodies περιέχοντας νόμιμα τη byte sequenceendstream— σύνηθες σε ενσωματωμένα συνημμένα PDF
Version 2.16.3
Διορθώθηκε (Fixed)
- Οι διαβάσεις συμπίεσης ροών περνούν ανεπηρέαστα έγγραφα cross-reference-stream (PDF 1.5+ χωρίς κλασική λέξη-κλειδί
trailer)• το path ανασκευής προηγουμένως αναλυούσε λάθοςstartxrefως θέση πίνακα και συνέθεσε εικαζόμενο trailer - Ο συμπιεστής παραλείπει ροές XMP metadata ώστε ένα εγγραφο PDF/A διατηρεί την υποχρεωτική αναφιλτράριστη ροή μεταδεδομένων (ISO 19005-1 §6.7.2), και αφήνει ανέπαφες τις εξωτερικές ροές αρχείων (
/Fμε/FFilter) - Ο ανακατασκευασμένος πίνακας cross-reference σαρώνει αντίγραφο του εγγράφου με αφαιρεμένες ροές, ώστε το δυαδικό περιεχόμενο ροής δεν μπορεί να πλαστογραφήσει κεφαλίδες αντικειμένων• το
/Sizeτου ανακατασκευασμένου trailer αντικατοπτρίζει πλέον τον πραγματικό πίνακα και τα object numbers περιορίζονται στο ανώτατο όριο Annex C - Η εύρεση του αρχικού πίνακα cross-reference αποδέχεται τερματισμούς γραμμής CR-only (ISO 32000-1 §7.5.1) και δεν μπορεί να αντιστοιχίσει τα γράμματα
xrefμέσα στοstartxref• η σάρωση λέξεων-κλειδιών ροών απέκτησε τον ίδιο guard ουράςendstreamπου χρησιμοποιείται αλλού και προχωρά πλέον πέρα από τα παραλειφμένα bodies ροών
Version 2.16.2
Διορθώθηκε (Fixed)
- Η ανάλυση ακεραίων σε PDF readers επιπέδου bytes αποδέχεται τώρα το ρητό σύμβολο
+(ISO 32000-1 §7.3.3) και απορρίπτει σειρές ψηφίων που θα προκαλούσαν υπερχείλιση, ώστε εχθρικά ή κατεστραμμένα έγγραφα δεν μπορούν να περιτυλίξουν lengths και offsets
Version 2.16.1
Διορθώθηκε (Fixed)
- Ο injector PDF/UA γράφει την τιμή καταλόγου
/Langως κανονικό PDF text string• προηγουμένως την έπερνε μέσω XML escaper, ώστε γλωσσικά tags με&ή παρενθέσεις δημιουργούσαν κατεστραμμένη εγγραφή και non-ASCII εισαγωγή γραφόταν ως raw UTF-8 - Η εγγραφή Info
/ISO_PDFEVersionPDF/E χρησιμοποιεί τον κοινό κωδικοποιητή text string, διατηρώντας νόμιμες non-ASCII τιμές στο PDF 1.7 - Η αποφυγή XML για XMP packets αφαιρεί χαρακτήρες ελέγχου που είναι μη έγκυροι στο XML 1.0, ώστε metadata από κατεστραμμένο έγγραφο πηγής δεν μπορούν να καταστήσουν τη ροή μεταδεδομένων μη επεξεργάσιμη
- Η μετατροπή ημερομηνίας PDF-σε-XMP επικυρώνει ότι τα πεδία ημερομηνίας είναι αριθμητικά και συμπληρώνει απουσιάζον πεδίο λεπτων
Version 2.16.0
Προστέθηκε (Added)
- Η αποκωδικοποίηση ροών ανακατασκευάζει τώρα predictors
/DecodeParms(PNG predictors 10–15 και TIFF predictor 2, ISO 32000-1 §7.4.4.4) μετά από FlateDecode, τιμώντας/Colors,/BitsPerComponentκαι/Columns• τα object streams με predictor δείχναν προηγουμένως differenced bytes, άρα τα αντικείμενα που μεταφέρουν ήταν αόρατα στους ελέγχους συμμόρφωσης
Διορθώθηκε (Fixed)
- Η ανίχνευση FlateDecode αναλύει τώρα την τιμή
/Filterως όνομα ή πίνακα αντί για αντιστοίχιση substring, ώστε cascaded filter chains και εμφανίσεις της λέξης σε μη σχετικές τιμές δεν προκαλούν πλέον εσφαλμένη αποσυμπίεση
Version 2.15.1
Διορθώθηκε (Fixed)
- Ο σαρωτής λεξικού παραλείπει τώρα literal strings, hex strings και σχόλια κατά την ισορροπία
<</>>(ISO 32000-1 §7.2.2), ώστε λεξικά με τιμές όπως(A >> B)ή hex string παρακείμενο στο κλειστικό delimiter δεν κοπόνονται πλέον - Η εξαγωγή literal strings αποκωδικοποιεί τώρα ολόκληρη σειρά escape §7.3.4.2 Table 3 —
\n \r \t \b \f, octal\ddd, συνέχειες γραμμής και κανονικοποίηση EOL — αντί να αντιγράφει το escape γράμμα κατά λέξη, αποκαθιστώντας σωστές συγκρίσεις/Producer,/GTS_PDFXVersionκαι/ISO_PDFEVersionγια writers που χρησιμοποιούν octal escapes - Τα literal strings που γράφουν οι marker injectors διαφεύγουν τώρα CR, LF και άλλους control characters
Version 2.15.0
Διορθώθηκε (Fixed)
- Οι αυξητικές ενημερώσεις από injectors PDF/A, PDF/X, PDF/E, PDF/R, PDF/UA, PDF/VT και από paths PAdES και DSS διατηρούν τώρα τον μόνιμο αναγνωριστικό αρχείου του εγγράφου πηγής: το πρώτο στοιχείο trailer
/IDμεταφέρεται αυτούσια (ISO 32000-1 §14.4) και ανανεώνεται μόνο το δεύτερο (μεταβαλλόμενο) στοιχείο - Οι υπογραφές PAdES, η εγχύτευση DSS και τα Document Time-stamps B-LTA μεταφέρουν τώρα την αναφορά
/Infoτου source trailer (ISO 32000-1 §7.5.6), ώστε οι ιδιότητες του εγγράφου να μην εξαφανίζονται πλέον από τα panels των readers μετά την υπογραφή• το Document Time-stamp trailer αποκτά επίσης τον array/ID - Η εγγραφή fallback
/Infotrailer για cross-reference-stream εγγραφα εντοπίζει τώρα σωστά το XRef stream dictionary και διατηρεί τον αριθμό γενιάς της αναφοράς• προηγουμένως δεν ταίριαζε ποτέ σε conforming αρχεία PDF 1.5+, αφήνοντας σιωπηλά έξω το/Info
Version 2.14.4
Διορθώθηκε (Fixed)
- Η ημερομηνία
/Mτου λεξικού υπογραφής που γράφεται απόTPdf.SignPadesκαιSignPadesBytesφέρει τώρα την υποχρεωτική πρόθεμηD:και τον δείκτη UTC offsetZ(ISO 32000-1 §7.9.4)
Version 2.14.3
Διορθώθηκε (Fixed)
- Οι αναζητήσεις κλειδιών λεξικού στον κοινό PDF reader αντιστοιχίζουν τώρα ολόκληρα tokens ονομάτων (ISO 32000-1 §7.3.5)• προηγουμένως μια ροή της οποίας το λεξικό ανέφερε
/Length1πριν το/Length(τυπικό για ροές FontFile) περικόπτετο σε λάθος αριθμό byte, αμβλύνοντας σιωπηλά τους ελέγχους συμμόρφωσης PDF/A, PDF/UA και άλλους που διαβάζουν ροές font, CMap ή metadata - Οι αναζητήσεις trailer
/Encrypt,/Root,/Sizeκαι/Infoδεν αντιστοιχίζουν πλέον μακρύτερα κλειδιά με κοινό πρόθεμα (όπως το/EncryptMetadata) - Η ανάπτυξη object-stream δεν εμπιστεύεται πλέον σε κατεστραμμένες ή εχθρικές τιμές
/N: οι μη ακέραιες τιμές δίνουν πλέον 0 αντί για μη αρχικοποιημένο αριθμό, και ένα άνω όριο που προκύπτει από το/Firstαποτρέπει υπερβολικές δεσμεύσεις μνήμης κατά τη σάρωση κακοδιατυπωμένων εγγράφων
Version 2.14.2
Διορθώθηκε (Fixed)
- Οι injectors markerσ PDF/X, PDF/VT, PDF/UA, PDF/E και PDF/R αντιγράφουν τώρα κρυπτογραφημένα έγγραφα πηγής ανεπηρέαστα αντί να προσθέτουν plaintext update sections• η προηγούμενη συμπεριφορά παρήγε αρχεία των οποίων το νεότερο trailer έχανε την εγγραφή
/Encrypt(ISO 32000-1 §7.5.6), ώστε conforming readers να διαβάζαν το κρυπτογραφημένο body ως plaintext - Τα
TPdf.SignPades,SignPadesBytesκαιInjectPadesDssMarkersεκπέμπουν τώραEPadesCryptoόταν το έγγραφο πηγής είναι κρυπτογραφημένο
Version 2.14.1
Διορθώθηκε (Fixed)
- Τα
TPdf.SignPadesκαιSignPadesBytesσυμπληρώνουν τώρα πίσω και τα τέσσερα πεδία/ByteRangeτου λεξικού υπογραφής - Τα λεξικά Document Time-stamp PAdES B-LTA λαμβάνουν την ίδια διόρθωση back-fill
/ByteRange - Το
ValidatePadesComplianceαποδέχεται τώρα την τυπική διάταξη υπογραφής όπου το κενό διάστημα byte range περιέχει την hex τιμή/Contents
Version 2.14.0
Προστέθηκε (Added)
- Το
TPdf.ExportXFDFσειριοποιεί κάθε τιμή πεδίου φόρμας και σημείωση σε όλες τις σελίδες σε XFDF έγγραφο (ISO 19444-1), εκπέμποντας<fields>για ιεραρχικές τιμές φόρμας και<annots>για όλους τους υποστηριζόμενους τύπους σχολιασμών (text, highlight, underline, strikeout, squiggly, line, circle, square, caret, polygon, polyline, stamp, ink, freetext, fileattachment, sound, link, redact) - Το
TPdf.ImportXFDFεισάγει XFDF έγγραφο πίσω στο φορτωμένο PDF, αναδημιουργώντας σημειώσεις στις αντίστοιχες σελίδες - Η εγγραφή
TPdfAnnotationαπέκτησε τα πεδίαName(NM),Subject,ModificationDate(M),CreationDate,Icon,Opacity(CA), τελικά σημεία γραμμής, κορυφές polygon/polyline και πεδία χειρονομίας ink-list, ώστε τα round-trips XFDF να διατηρούν τα πλήρη metadata των σχολιασμών - Νέο παράδειγμα
XfdfLabστα sets Delphi, C++Builder και Lazarus επιδεικνύει το round-trip export/import
Version 2.13.6
Διορθώθηκε (Fixed)
- Το
ValidatePdfAθεωρεί τώρα ροές catalog/Metadataχωρίς/Type /Metadataή/Subtype /XMLως απούσα XMP metadata μέσωpvaiMissingXmpMetadata - Οι εκθέσεις preflight PDF/A κατηγοριοποιούν
pvaiMissingXmpMetadataως Metadata και συνιστούν ροή catalog/Metadataμε/Type /Metadata,/Subtype /XML, αναφιλτράριστο XMP και markerspdfaid
Version 2.13.5
Διορθώθηκε (Fixed)
- Το
ValidatePdfAαναφέρει τώρα Widget σημειώσεις χωρίς λεξικό εμφάνισης και σημειώσεις PDF/A-2/PDF/A-3 χωρίς/APμέσωpvaiAnnotationApDictViolation - Οι εκθέσεις preflight PDF/A κατηγοριοποιούν
pvaiAnnotationApDictViolationως περιεχόμενο που οι injectors δεν μπορούν να επιδιορθώσουν
Version 2.13.4
Διορθώθηκε (Fixed)
- Το
ValidatePdfAαναφέρει τώρα inline εικόνες PDF/A-2 και PDF/A-3 με/Iή/Interpolateίση μεtrueμέσωpvaiImageDictionaryViolation - Οι εκθέσεις preflight PDF/A κατηγοριοποιούν
pvaiImageDictionaryViolation
Version 2.13.3
Διορθώθηκε (Fixed)
- Το
ValidatePdfAαναφέρει τώρα inline εικόνες PDF/A-1 με/LZWDecodeή/LZWμέσωpvaiInlineImageLzwForbidden - Ο σαρωτής φίλτρων inline εικόνων προχωρεί τώρα περνώντας αρχικά ονόματα πόρων όπως
/GS1
Version 2.13.2
Προστέθηκε (Added)
- Το
TPdf.SetFocusedFormFieldTextγράφει κείμενο στο buffer επεξεργασίας του τρέχοντος εστιασμένου πεδίου φόρμας μέσωFORM_ReplaceSelection, συμμετρικό με τοFocusedFormFieldText. Για πεδία text/combo AcroForm η τιμή δεσμεύεται στο/Vμε την απώλεια focus και διατηρείται• για πεδία text XFA η εγγραφή μένει μόνο στο in-memory buffer - Η πλατφόρμα JavaScript host συνδέεται τώρα όποτε ο engine V8 είναι διαθέσιμος, ανεξάρτητα από το αν το έγγραφο είναι XFA — ώστε να μπορεί να εκτελεστεί και ενσωματωμένο AcroForm JavaScript (scripts επιπέδου εγγράφου, υπολογισμοί πεδίων,
app.alert). Προηγουμένως τοm_pJsPlatformσυνδεόταν μόνο για έγγραφα XFA, αφήνοντας το AcroForm JS σιωπηλά ανενεργό
Αλλάχθηκε (Changed)
- Η σύνδεση της πλατφόρμας JavaScript είναι πλέον ανεξάρτητη από την απόφαση XFA στο
InitializeFormFill— ο πίνακαςm_pJsPlatformχτίζεται όποτε τοV8FeaturesAvailableείναι true και εφαρμόζεται μετά τη σύνδεση των version/callback του XFA, αντί να είναι φωλιασμένος μέσα σε αυτήν
Version 2.13.1
Προστέθηκε (Added)
- Νέα host events εμφανίζουν πληροφορίες που απώρροφαν callbacks v2.13.0:
OnXfaUriAction,OnXfaPageCountChanged,OnXfaFocusChange,OnXfaEmail,OnXfaHttpRequest,OnXfaOpenFile,OnJavaScriptBeep,OnJavaScriptPrint,OnJavaScriptMail,OnJavaScriptSubmitForm - Η ιδιότητα
TPdf.XfaFormPacketsμόνο ανάγνωσης επιστρέφει στιγμιότυπο μιας χρήσης όλων των XFA packets (TXfaPacketList), υλοποιώντας τους τύπουςTXfaPacket/TXfaPacketListπου είχαν δηλωθεί προηγουμένως αλλά δεν χρησιμοποιούνταν - Οι XFA-specific κωδικοί σφάλματος PDFium
FPDF_ERR_XFALOAD/FPDF_ERR_XFALAYOUTδεσμεύονται τώρα και εμφανίζονται μέσωLastPdfError
Αλλάχθηκε (Changed)
- Το
FFI_DoURIActionWithKeyboardModifierσυμβουλεύεται τώρα τοOnXfaUriActionπριν εκτελέσει URI από πεδίο XFA μέσω shell, δίνοντας στον host δικαίωμα βέτο (ασφάλεια: ένα κακόβουλο πεδίο XFA μπορούσε προηγουμένως να εκκινεί αυθαίρετα URL ανευ όρων). Οι μη ανατεθειμένοι handlers διατηρούν την προηγούμενη προεπιλογήShellExecuteW - Το
DecodeFormFieldTypeδρομολογεί τώρα τους τύπους πεδίων XFA μέσωIsXfaFormFieldαντί για ρητό case 8 κλάδων, διατηρώντας το enum ευθυγραμμισμένο με τις τιμέςFPDF_FORMFIELD_XFA_*μέσω αντιστάθμισης ordinal
Διορθώθηκε (Fixed)
- Το
ValidatePdfAαναφέρει τώρα αιτήσεις PDF/A-1 που χρησιμοποιούν cross-reference streams PDF 1.5 ή object streams με νέοpvaiPdfA1Pdf15Structure
Version 2.13.0
Προστέθηκε (Added)
- Πλήρης υποστήριξη XFA (XML Forms Architecture) runtime: το
TPdf.InitializeFormFillσυνδέει τώρα όλα τα 14 callbacks έκδοσης 2 τουFPDF_FORMFILLINFO(FFI_DisplayCaret,FFI_GotoURL,FFI_PageEvent,FFI_PopupMenu,FFI_OpenFile,FFI_EmailTo,FFI_UploadTo,FFI_GetPlatform,FFI_GetLanguage,FFI_DownloadFromURL,FFI_PostRequestURL,FFI_PutRequestURL,FFI_OnFocusChange,FFI_DoURIActionWithKeyboardModifier) και επισυνάπτει έναIPDF_JsPlatform, ώστε έναpdfium.dllμε XFA να μπορεί να αποδίδει και να δέχεται scripts σε δυναμικές φόρμες XFA - Νέα μονάδα
Lib\FPdfXfa.pasδηλώνει τις σταθερές XFA (FXFA_PAGEVIEWEVENT_*,FXFA_MENU_*,FXFA_SAVEAS_*,FPDF_FORMFIELD_XFA_*) και τους τύπουςTXfaPacket/TXfaSaveFormatπου προηγουμένως αναφέρονταν μόνο σε σχόλια - Static XFA packet reader στο
TPdf: ταGetXfaPacketCount/GetXfaPacketName/GetXfaPacketContent/GetXfaPacketByNameκαι ταGetXfaTemplate/GetXfaDatasets/GetXfaConfigεξάγουν τα packetstemplate,datasetsκαιconfigτου XFA ως raw XML χωρίς XFA-enabled runtime — χρήσιμο για ελέγχους συμμόρφωσης και μετάπτωση δεδομένων - Capability probes: το καθολικό
XfaFeaturesAvailableκαι, ανά έγγραφο, ταTPdf.XfaRuntimeAvailable(αν τοFPDF_LoadXFAπέτυχε όντως) καιTPdf.XfaStaticReadable(αν επιλύονται οι εξαγωγές του packet reader) - Το
TPdfFormFieldTypeεπεκτάθηκε μεfiXfa,fiXfaCheckBox,fiXfaComboBox,fiXfaImageField,fiXfaListBox,fiXfaPushButton,fiXfaSignature,fiXfaTextField, με τοDecodeFormFieldTypeνα αντιστοιχίζει τις νέες τιμέςFPDF_FORMFIELD_XFA_* - JavaScript host events στο
TPdf: ταOnJavaScriptAlert,OnJavaScriptResponse,OnXfaGotoUrlκαιOnXfaRuntimeMissingαφήνουν τον host να προσαρμόσει διαλόγους JS και πλοήγηση XFA ή να αντιδράσει όταν ένα έγγραφο XFA δεν μπορεί να τρέξει το engine - Νέο παράδειγμα
XfaLabγια Delphi που επιδεικνύει ανίχνευση XFA, εξαγωγή packets, capability probing και τη διαδρομή fallback όταν λείπει το runtime
Αλλάχθηκε (Changed)
- Το
TPdf.LoadDocumentπροσκανάρει τώρα την είσοδο για markers XFA (/XFAστο λεξικό AcroForm ή/NeedsRenderingστον κατάλογο) και, όταν βρεθούν, επιλέγει αυτόματα τοpdfium.v8.dllθέτονταςEnableV8Engine := Trueπριν φορτωθεί πρώτη φορά η singleton βιβλιοθήκη• μόλις φορτωθεί ένα απλόpdfium.dll, η διεργασία δεν μπορεί να το αλλάξει, οπότε τοOnXfaRuntimeMissingσηματοδοτεί αυτή την περίπτωση - Το
TPdf.GetPageCountαντικατοπτρίζει τώρα τον αριθμό σελίδων που αναφέρει ο XFA engine μέσωFFI_PageEventμετά από δυναμική εκ νέου σελιδοποίηση, και όχι μόνο το στατικό page tree του PDF - Όταν ανοίγει έγγραφο XFA χωρίς διαθέσιμο runtime, το
InitializeFormFillκαρφώνει πλέονversion=1καιxfa_disabled=1αντί να ζητά έκδοση 2 με μη ανατεθειμένα callbacks, που προηγουμένως μπορούσε να οδηγήσει σε προσπέλαση κακού δείκτη callback
Version 2.12.2
Διορθώθηκε (Fixed)
- Το
ValidatePdfAComplianceαναφέρει τώρα custom XMP namespaces χωρίςpdfaExtension:schemas, ενώ εξακολουθεί να δέχεται standard metadatapdfaidχωρίς δηλώσεις επέκτασης - Η επικύρωση PDF/A-3 embedded file απαιτεί τώρα και τις δύο εγγραφές κορυφής
/Fκαι/UFστα filespec dictionaries και αγνοεί τα nested κλειδιά/EFροής όταν ελέγχει αυτά τα ονόματα
Version 2.12.1
Διορθώθηκε (Fixed)
- Το
ValidatePdfAComplianceαποκωδικοποιεί τώρα escaped name tokens πριν από την αντιστοίχιση των JavaScript, LZWDecode, Type1 και συναφών απαγορευμένων ονομάτων, ώστε αποκρυπτογραφημένα αλλά σημασιολογικά όμοια ονόματα να αναφέρονται σωστά - Οι έλεγχοι inline image PDF/A απορρίπτουν τώρα τιμές
/Filterκαι/Fπου χρησιμοποιούν/LZWDecode, συντομευμένο/LZWή/Crypt, συμπεριλαμβανομένων μορφών array και escaped-name - Η επικύρωση PDF/A αναφέρει τώρα streams μεταδεδομένων με απαγορευμένα φίλτρα ροής, profiles ICC OutputIntent των οποίων ο αριθμός στοιχείων
/Nλείπει ή είναι ασυνεπής, και filespec ενσωματωμένων αρχείων PDF/A-3 με λείπον ή άκυρο/AFRelationship
Version 2.12.0
Προστέθηκε (Added)
- Τα HTTP requests TSA ρυθμίζουν τώρα ρητά timeouts 30 s για κάθε φάση μέσω
WinHttpSetTimeouts - Παραγωγή nonce ανά αίτηση για χρονικές σημάνσεις PAdES B-T / B-LTA όταν ο καλών παραλείπει το
TPadesSignOptions.Nonce: ένα SHA-256 fold από μονότονο μετρητή + ρολόι συστήματος +GetTickCount64+ id διεργασίας αντικαθιστά το προηγούμενο σταθερό fallback$100000000, ώστε δύο αιτήσεις μέσα στην ίδια χιλιοστό του δευτερολέπτου να μην επαναχρησιμοποιούν πια το ίδιο anti-replay nonce - Το
PdfInflateορίζει τώρα την αποσυμπιεσμένη έξοδο στα 256 MiB (“zlib bomb”)
Αλλάχθηκε (Changed)
- Η ανάμειξη overlays του
TPdfView(highlight αναζήτησης, επιλογή κειμένου, ανάγνωση λέξης, επιλογή spread) δεν χρησιμοποιεί πλέον per-pixelGetPixel/SetPixelV• το rectangle αναμειγνύεται πλέον μέσω ενός off-screenTBitmap32-bpp καιScanLineσε ένα πέρασμα, εξαλείφοντας χιλιάδες διαβιβάσεις GDI kernel ανά σχέδιο και κάνοντας μεγάλες επιλογές ανταποκρίσεις - Το
FPdfAsn1.TDerReader.ReadIntegerαπορρίπτει πλέον πεδία INTEGER μεγαλύτερα από 8 bytes (και αρνητικά 8-byte των οποίων το bit προσήμου θα απαιτούσεshl >= 64), επιστρέφοντας 0 αντί να υπολογίσει λάθος τιμή μέσω undefined-shift συμπεριφοράς σε είσοδο CMS/PAdES ASN.1 - Το
ParseTimeStampRespδεν επιστρέφει πλέον nonce αίτησης ωςTPadesTimestamp.Nonce
Διορθώθηκε (Fixed)
- Το
PointsToPixelsεπέστρεφε αμετάβλητη την είσοδο για κάθε DPI: ο διαιρέτης ήταν τοPointsPerInch(η σταθερά 72) αντί για το literal 72, καταρρέοντας τον τύπο σεResult := Points. Κάθε εξωτερικός καλών που κάνει sizing points→device-pixel μέσω αυτού του helper παίρνει πλέον το σωστόPoints × PixelsPerInch / 72 - Το
PdfMaxObjNumυπολόγιζε λιγότερα σε έγγραφα που χρησιμοποιούν object streams (PDF 1.5+ ObjStm): τα objects συμπιεσμένα μέσα σε ένα/ObjStmδεν φέρουν markerN 0 obj, οπότε η σάρωση raw bytes τα έχανε, και injectors που δεσμεύουνMaxObj+1για νέα objects μπορούσαν να συγκρουστούν με κρυφά μέλη ObjStm και να αλλοιώσουν σιωπηλά το αρχείο. Η σάρωση αναπτύσσει πλέον πρώτα τα object streams ώστε κάθε object number να είναι ορατό - Το
InjectPdfAMarkersδεν πλαστογραφεί πλέον αξίωση συμμόρφωσης PDF/A σε κρυπτογραφημένο έγγραφο: το PDF/A (ISO 19005-1 §7.1) απαγορεύει κρυπτογράφηση, και ο injector προηγουμένως περνούσε την πηγή με τα markers παρότι η αμέσως επόμενη επικύρωση θα την απέρριπτε. Όταν τοHasEncryptείναι ορισμένο, η πηγή πλέον περνά ανέπαφη. Η κανονική διαδρομήTPdf.SaveAsPdfAαφαιρεί ήδη την κρυπτογράφηση (saRemoveSecurity) πριν την έγχυση, οπότε αυτό αφορά μόνο άμεσους καλούντες - Το
PdfReadStreamBytesαρνείται τώρα/Lengthμεγαλύτερο από όλο το αρχείο πριν δεσμεύσει το buffer του αποτελέσματος, κλείνοντας μια διαδρομή πρόωσης δέσμευσης μνήμης σε κακόβουλο ή κατεστραμμένο indirect length
Version 2.11.0
Προστέθηκε (Added)
- Το record
FPDF_FILEHANDLERτου PDFium δηλώνει πλέον τα έξι callbacks του (Release,GetSize,ReadBlock,WriteBlock,Flush,Truncate) ως πραγματικά πεδία αντί για σχόλια, σύμφωνα με τη διάταξη της κεφαλίδας C. Τα callbacks μεταφοράς αρχείων XFA FFI (FFI_OpenFile/FFI_EmailTo/FFI_UploadTo/FFI_DownloadFromURL) που επιστρέφουν ή καταναλώνουνPFPDF_FILEHANDLERεξακολουθούν να μένουν μη υλοποιημένα στο Pascal layer του form-fill, αλλά ο τύπος είναι πλέον δομικά σωστός για οποιαδήποτε μελλοντική διαδρομή XFA submit/upload - Το φόρτωμα και το αποφόρτωμα της βιβλιοθήκης PDFium (
LoadLibrary/UnloadLibrary) σειριοποιούνται πλέον από process-global critical section, ώστε δύο worker threadsTPdfFuture<T>(ή ένας worker που συναγωνίζεται το main thread) να μην μπορούν να δουν και οι δύοPDFiumLibrary=0και να κάνουν διπλό bind, ή να απελευθερώσουν το DLL ενώ ένα άλλο thread βρίσκεται στη μέση ενός bind - Μια ενότητα
initialization/finalizationκαλεί πλέον τοUnloadLibraryκατά την αποφόρτωση της μονάδας, εξασφαλίζοντας ότι τοFPDF_DestroyLibraryεκτελείται (join worker threads, απόρριψη V8 isolate, teardown font/cache) αντί να βασίζεται στο OS για την ανάκτηση του DLL
Αλλάχθηκε (Changed)
- Το
TPdf.SetActiveαπορροφά πλέον κάθε exception κατά τη φόρτωση (προηγουμένως μόνοEPdfError), ώστε ένα σφάλμα stream ή access violation κατά το στήσιμο φόρμας/σελίδας να αφήνειActive=Falseαντί για ένα μερικά φορτωμένο component με αόριστη κατάσταση - Συνεπής κωδικοποίηση χαρακτήρων για τα ορίσματα metadata keys του PDFium: το
TPdf.GetMetaTextχρησιμοποιεί πλέον τον ίδιο διαχωρισμό FPCAnsiString/ DelphiUTF8Encodeμε τοGetViewerPreferenceκαι τις διαδρομές φόρτωσης, αντί για ένα γυμνό castAnsiString(Tag) - Απαλείφθηκαν τα διπλότυπα
BytesToAnsi,AnsiToBytes,WriteBytesκαιWriteStr: τοFPdfCompressτα εισάγει πλέον από τοFPdfPdfCommon(τα aliasesWriteBytesToStream/WriteAnsiToStreamαποσύρθηκαν) και η περιττή υπερφόρτωσηBytesToAnsiτριών ορισμάτων στοFPdfPdfaαφαιρέθηκε. ΤοFPdfAsn1κρατά το τοπικό του αντίγραφο εκ σχεδιασμού, για να μείνει το layer κρυπτογραφίας ελεύθερο από τη μονάδα του layer συμμόρφωσης
Διορθώθηκε (Fixed)
- Διαρροή πόρων στο
TPdf.LoadDocument(αρχείο, μνήμη,TBytes,TMemoryStream, custom stream) και στοTPdf.CreateDocument: αν τοInitializeFormFillή τοReloadPageεγείραν εξαίρεση αφού τοFPDF_LoadDocument/FPDF_CreateNewDocumentείχε πετύχει, το native handleFPDF_DOCUMENTδιέρεε επειδή τοFActiveήταν ακόμα False σε εκείνο το σημείο. Κάθε διαδρομή τυλίγει πλέον το post-load setup σεtry/exceptκαι κλείνει το έγγραφο σε αποτυχία, αφήνοντας το component καθαρά ανενεργό - Φιλικότερη διαγνωστική φόρτωσης του DLL του PDFium: το
CheckLoadLibraryανιχνεύει τοERROR_BAD_EXE_FORMAT(193) και αναφέρει αναντιστοιχία αρχιτεκτονικής 32/64-bit δείχνοντας το αντίστοιχο buildDLLs/Win32ήDLLs/Win64, αντί να μεταφέρει μόνο το γενικό σφάλμα του OS. ΤοCheckGetProcAddressδηλώνει πλέον ότι το αναπτυγμένοpdfium.dllείναι παλαιότερο από το binding όταν λείπει απαιτούμενη εξαγωγή, αντί για το γυμνό κείμενο "procedure not found" του OS
Version 2.10.1
Διορθώθηκε (Fixed)
- Τυποποίηση του sid του SignerInfo στο PAdES: το αναγνωριστικό υπογράφοντος χρησιμοποιεί πλέον τη μορφή
issuerAndSerialNumberτου RFC 5652 §5.3 (issuer Name + serialNumber, και τα δύο εξαγόμενα αυτούσια από το DER του πιστοποιητικού του υπογράφοντος), αντικαθιστώντας την προηγούμενη μη τυποποιημένη μορφήsubjectKeyIdentifier+ full-cert SHA-256 placeholder που το Adobe Acrobat και άλλοι συμμορφωμένοι επικυρωτές απέρριπταν. Ένας νέος περιηγητής TbsCertificate DER (ExtractIssuerAndSerial) διαβάζει την issuer SEQUENCE και το serial INTEGER ως ακατέργαστα TLV bytes — τα serial συχνά ξεπερνούν το εύρος τουInt64, επομένως το ακατέργαστο TLV είναι υποχρεωτικό. Η μορφήsubjectKeyIdentifierπαραμένει ως εναλλακτική μόνο όταν η ανάλυση του DER του πιστοποιητικού αποτυγχάνει
Αλλάχθηκε (Changed)
- Το
TCmsSignerId.SerialNumber: Int64αντικαταστάθηκε μεSerialDer: TBytes(το ακατέργαστο serialNumber TLV). Ο κατασκευαστής CMS ενσωματώνει το κομμένο TLV αυτούσιο στοIssuerAndSerialNumber, αποφεύγοντας την υπερχείλισηInt64σε serial 20-byte CA (ανώτατο όριο RFC 5280 §4.1.2.2)
Version 2.10.0
Προστέθηκε (Added)
- Μακροπρόθεσμη επικύρωση PAdES B-LT: όταν
TPadesSignOptions.Level >= plB_LT, τοSignPadesBytesπροσθέτει μια προοδευτική ενημέρωση που μεταφέρει ένα λεξικό/DSSμε το πιστοποιητικό του υπογράφοντος και την πλήρη αλυσίδα ενδιάμεσων (η αυτο-υπογεγραμμένη ρίζα εξαιρείται βάσει RFC 5652 §10.2.3), συν τον δείκτη/Extensions /ESICLevel 1 (EN 319 142-1 §5.4.2) - Χρονική σήμανση αρχειοθέτησης PAdES B-LTA: όταν
Level >= plB_LTAκαι έχει οριστεί τοTsaUrl, προστίθεται ένα λεξικό υπογραφής Document Time-stamp (/SubFilter /ETSI.RFC3161) του οποίου το/ByteRangeκαλύπτει ολόκληρο το αρχείο; ο δείκτης ESIC προάγεται σε Level 2. Αυτό ολοκληρώνει τα τέσσερα επίπεδα βάσης PAdES (B-B, B-T, B-LT, B-LTA) - Συλλογή αλυσίδας πιστοποιητικών: το
ResolveWinSignerκαλεί πλέον τοCertGetCertificateChainκαι συμπληρώνει τοTPadesResolvedSigner.ChainCertDerμε τα ενδιάμεσα πιστοποιητικά CA, ώστε το B-LT/DSS /Certsνα μεταφέρει κάθε πιστοποιητικό που απαιτείται για την επικύρωση της υπογραφής χωρίς εξωτερικές αναζητήσεις. ΤοCertFreeCertificateContextείναι πλέον συνδεδεμένο, κλείνοντας τη διαρροή ενός context ανά υπογραφή που σημειώθηκε στην v2.8.0 - Ροή εργασίας ενσωμάτωσης PDF/A: το
TPdf.SignPadesWithPdfAμετατρέπει πρώτα το έγγραφο σε PDF/A (υψηλότερο επίπεδο που εκπέμπει σήμερα η βιβλιοθήκη) και έπειτα εφαρμόζει την υπογραφή PAdES που ζητήθηκε — το μοτίβο long-term-archival container που προτείνει το EN 319 142-1 Annex A.7
Version 2.9.0
Προστέθηκε (Added)
- Εμπιστευτικό χρονόσημο PAdES B-T: το
TPadesSignOptionsαποκτά τα πεδίαLevel,TsaUrlκαιNonce. ΌτανLevel >= plB_Tκαι έχει οριστεί τοTsaUrl, τοSignPadesBytesεξάγει την τιμή υπογραφής από το χτισμένο CMS, ζητά ένα χρονόσημο RFC 3161 πάνω της και ενσωματώνει το επιστρεφόμενο TimeStampToken ως μη υπογεγραμμένο χαρακτηριστικό SignerInfosignature-time-stamp— το βήμα B-T trusted-time (EN 319 142-1 §6.3 req o) FPdfTsa: πελατικό πρόγραμμα RFC 3161 πολλαπλών πλατφορμών —BuildTimeStampReq(έκδοση 1, SHA-256 messageImprint πάνω στην τιμή υπογραφής, nonce, certReq=true),ParseTimeStampResp(δέχεται PKIStatus 0/1, απορρίπτει 2+, εξάγει το TimeStampToken ContentInfo αυτούσιο), καιRequestTimestamp(μονοβληματικό build+POST+parse). ΤοPadesTsaAvailableελέγχει τη λειτουργία σε πλατφόρμες χωρίς HTTP backendFPdfTsaWin: backend WinHttp των Windows, δυναμικά συνδεδεμένο από winhttp.dll (μηδενική νέα εξάρτηση χρόνου μεταγλώττισης· το HTTPS διαπραγματεύεται από το Windows certificate store). Αντικατοπτρίζει το μοτίβο δυναμικής σύνδεσης τουFPdfCryptoWinFPdfCms: τοExtractSignatureValueδιατρέχει ένα χτισμένο CMS για να ανακτήσει τα ακατέργαστα octets υπογραφής (την είσοδο κατακερματισμού TSA), και τοAddSignatureTimestampToCmsανοικοδομεί το ContentInfo με νέοunsignedAttrs [1](0xA1) που μεταφέρει το χαρακτηριστικό χρονόσημου. Ο επικυρωτής σταδίου-1 αναγνωρίζει το αποτέλεσμα ως υπογραφή B-T
Version 2.8.0
Προστέθηκε (Added)
- Στοίβα υπογραφής PAdES B-B: τέσσερις νέοι, καθαρά-Pascal/πολλαπλών-πλατφορμών δομικοί λίθοι (
FPdfSha256,FPdfAsn1,FPdfCms,FPdfCrypto) συν ένα backend Windows CNG (FPdfCryptoWin) επιτρέπουν στοTPdf.SignPades/SignPadesToStreamνα παράγουν μια υπογραφή PAdES B-B από άκρο σε άκρο. Το πιστοποιητικό του υπογράφοντος επιλύεται μέσω αποτυπώματος SHA-1 από το αποθετήριο Current User “MY”; τα RSA-PSS (προτεινόμενο), RSA PKCS#1 v1.5 και ECDSA υποστηρίζονται όλα μέσωNCryptSignHash FPdfSha256: αυτόνομο SHA-256 FIPS 180-4 (Init/Update/Final + βοηθοί μονής κλήσης). Το FPC 3.2.2 δεν παρέχει μονάδα SHA-2, επομένως η βιβλιοθήκη διαθέτει δική της ώστε κάθε διαδρομή κώδικα CMS να παραμένει σε έναν τύποTSHA256Digestχωρίς κλαδιά RTLFPdfAsn1: κωδικοποιητής DER (TDerWriter) και αναγνώστης (TDerReader) που καλύπτουν SEQUENCE/SET/OID/INTEGER/OCTET STRING/UTCTime/GeneralizedTime/context-specific tags, με την κωδικοποίηση definite-length και τη διαχείριση IMPLICIT-tag που απαιτεί το CMSFPdfCms: κατασκευαστής CAdES SignedData (BuildSignedData) που εκπέμπει τα υπογεγραμμένα χαρακτηριστικά content-type, message-digest και signing-certificate-v2 που επιβάλλει η βάση PAdES, με προαιρετικά signing-time και commitment-type-indication. Η σύνοψη signedAttrs υπολογίζεται πάνω στη μορφή με ετικέτα SET (0x31) και επανεκπέμπεται με την ετικέτα IMPLICIT [0] (0xA0) βάσει RFC 5652 §5.4FPdfCrypto+FPdfCryptoWin: αφαίρεση κρυπτογραφικού backend μεPadesCryptoAvailable/ResolvePadesSigner, και η υλοποίηση Windows που συνδέει δυναμικά crypt32.dll / ncrypt.dll (καμία νέα εξάρτηση DLL χρόνου μεταγλώττισης). Οι υπογραφές ECDSA επανακωδικοποιούνται από τη μορφή IEEE P1363 r¦s των Windows στη μορφή DERECDSA-Sig-Valueπου απαιτεί το CMSSignPadesBytes: έγχυση υπογραφής σε επίπεδο byte — δεσμεύει μια υποδοχή hex/Contentsσταθερού πλάτους, υπολογίζει το/ByteRangeκάλυψης, συντάσσει τη σύνοψη του εγγράφου, χτίζει και ενσωματώνει το CMS και προσθέτει την προοδευτική ενημέρωση. Ο επικυρωτής (v2.7.0) αναγνωρίζει την έξοδο ως υπογραφή PAdES B-B
Version 2.7.0
Προστέθηκε (Added)
- Δομικός επικυρωτής PAdES (ETSI EN 319 142-1 V1.2.1): η νέα μονάδα
FPdfPadesκαι η μέθοδοςTPdf.ValidatePadesεπιθεωρούν λεξικά τιμής υπογραφής προσπελάσιμα από το/ByteRange, διατρέχουν το CMSSignedDataμέσα στο/Contentsαρκετά για να επιβεβαιώσουν το CAdES detached shape, και ανιχνεύουν τα τέσσερα επίπεδα βάσης (B-B, B-T, B-LT, B-LTA) συν λεξικά Document Time-stamp (/SubFilter /ETSI.RFC3161) - Σύνολο ζητημάτων PAdES σε επίπεδο ρήτρας: 26 enum
ppei*καλύπτουν την αποδεκτότητα του/SubFilter(adbe.pkcs7.sha1καιadbe.x509.rsa_sha1επισημαίνονται ως απαγορευμένα), την κάλυψη αρχείου του/ByteRange, την απαγόρευση/Cert, το σχήμα του CMSSignedData(ενικός υπογράφων, detached eContent, εύρος έκδοσης), τα απαιτούμενα υπογεγραμμένα χαρακτηριστικά (content-type,message-digest,signing-certificate/v2), τους απαγορευμένους κατακερματισμούς (MD5, SHA-1), την αμοιβαία αποκλειστικότητα/Reasonέναντιcommitment-type-indication(req d), την απαίτηση B-T trusted-time, τον δείκτη B-LT/DSS+/Certs+ ESIC Level 1, και τον δείκτη B-LTA Document Time-stamp + ESIC Level 2 - Ενθετής DSS: τα
TPdf.SaveAsPadesDss/SaveAsPadesDssToStreamπροσθέτουν μια προοδευτική ενημέρωση σε ένα αντίγραφο του εγγράφου που μεταφέρει ένα λεξικό/DSS(με πίνακες ροής/Certs,/OCSPs,/CRLs) και τον δείκτη/Extensions /ESIC(Level 1 ή 2), διατηρώντας τα αρχικά bytes — το βήμα ενσωμάτωσης υλικού επικύρωσης B-LT/B-LTA (ρήτρα 5.4.2) - Πολλαπλών πλατφορμών, χωρίς εξαρτήσεις στάδιο: ο επικυρωτής και ο ενθετής είναι καθαρό Pascal και λειτουργούν σε κάθε υποστηριζόμενο IDE (Delphi, Lazarus, FPC, C++Builder); δεν απαιτείται κρυπτογραφικό backend για αυτή την έκδοση και δεν εισάγεται νέα εξάρτηση DLL
Version 2.6.0
Αλλάχθηκε (Changed)
- Αφαίρεση διπλοτύπων μεταξύ προτύπων: επτά ακόμη διπλότυπες βοηθητικές συναρτήσεις (PdfEnclosingObjNum, PdfDictRefNum, PdfExpandObjectStreams, PdfTextStr, ExtractLiteralString, ExtractXmpAttr) αφαιρέθηκαν από τις επιμέρους μονάδες προτύπων και ενοποιήθηκαν στο
FPdfPdfCommon, μειώνοντας κατά περίπου 300 γραμμές το βάρος συντήρησης copy-paste - Ποιότητα PreflightReport: ζητήματα content-class των PDF/X και PDF/E που προηγουμένως έπεφταν στη γενική κατηγορία “missing marker” φέρουν πλέον ακριβείς κατηγορίες Content/Metadata/Security και συστάσεις ειδικές για ρήτρα (~15 enum και στα δύο πρότυπα)
- Κάλυψη δοκιμών PDF/E και PDF/R: έξι ακόμη enum με μηδενική κάλυψη έλαβαν θετικές δοκιμές (
pveiLzwForbidden,pveiJavaScriptForbidden,pveiFormFieldsForbidden,pveiEmbeddedFilesForbidden,pvriBadHeader,pvriProhibitedInfoEntry) - Διόρθωση μεταγλώττισης Lazarus: το
Tests.PdfVT(μονάδα DUnitX μόνο για Delphi που προστέθηκε στην v2.5.x) αποκλείεται πλέον από το έργο Lazarus για να αποκατασταθεί η μεταγλώττιση
Version 2.5.3
Προστέθηκε (Added)
- Πληρότητα OutputIntent (PDF/X-4 §6.2.4): το
pvviOutputIntentSchemeεπισημαίνει ένα OutputIntent του οποίου το/Sδεν είναι/GTS_PDFX; τοpvviOutputIntentMissingIdentifierεπισημαίνει ένα/OutputConditionIdentifierπου λείπει - Εξαίρεση Reference XObject για PDF/VT-2 (§6.2.2): το
pvviReferenceXObjectForbiddenδεν ενεργοποιείται πλέον για αρχείοPDF/VT-2, το οποίο μπορεί νομίμως να χρησιμοποιήσει Reference XObjects σε βάση X-5g/5pg - Επικύρωση χαρακτήρα ορίου MIME (RFC 2046 §5.1.1): το
vtmviBoundaryInvalidCharεπισημαίνει ένα boundary του οποίου οι χαρακτήρες είναι εκτός του συνόλου bchars ή του οποίου το μήκος ξεπερνά τις 70
Διορθώθηκε (Fixed)
- Το
InjectPdfVTMarkersγράφει πλέον το Info/CreationDateκαι/ModDateαπό τις επιλογές αποθήκευσης, ώστε το παραγόμενο αρχείο να περνά τοValidatePdfVTComplianceχωρίς ψευδέςpvviInfoModDateMismatch(ο ενθετής προηγουμένως ξαναέγραφε τις ημερομηνίες XMP αλλά άφηνε τις ημερομηνίες του λεξικού Info μπαγιάτικες)
Version 2.5.2
Προστέθηκε (Added)
- Συνοχή Info
/ModDate(§6.3 NOTE 2, βάση PDF/X-4): τοpvviInfoModDateMismatchεπισημαίνει ένα/ModDateλεξικού Info το οποίο, μετά την ομαλοποίηση ημερομηνίας-PDF σε ημερομηνία-XMP, δεν ισούται με τοxmp:ModifyDate - Συμμόρφωση inline chunk PDF/VT-2s (Annex A.2): ο επικυρωτής MIME εκτελεί πλέον
ValidatePdfVTComplianceσε κάθε inline μέροςapplication/pdfκαι επισημαίνει σώμα μη-PDF/VT μέσωvtmviInlinePdfNotPdfVT
Version 2.5.1
Προστέθηκε (Added)
- Επικύρωση κομματιοποίησης DParts (ISO 16612-2 §6.5 Table 4): το
pvviDPartsBadChunkingεπισημαίνει έναν πίνακα/DPartsτου οποίου οι μη τελικοί υπο-πίνακες δεν έχουν ακριβώς 8192 καταχωρήσεις ή του οποίου ο τελευταίος υπο-πίνακας βρίσκεται εκτός 1..8192 - Συνοχή RecordLevel μεταξύ ροών (Annex A.2): ο επικυρωτής MIME PDF/VT-2s εξάγει πλέον το
/RecordLevelκάθε inline PDF και επισημαίνει διαφωνία μέσωvtmviRecordLevelMismatch, συμπληρώνοντας τον υπάρχοντα έλεγχο NodeNameList - Υποδείξεις επαναλαμβανόμενων γραφικών αντικειμένων (§6.7): το
pvviGtsScopeInvalidValueεπισημαίνει ένα/GTS_Scopeεκτός {SingleUse, Record, File, Stream, Global, Unknown}; τοpvviGtsScopeRecordWithoutRecordLevelεπισημαίνει/Recordχωρίς/RecordLevel; τοpvviGtsXidNotUuidεπισημαίνει ένα/GTS_XIDπου δεν είναι RFC 4122 uuid: URI; τοpvviGtsEnvMissingεπισημαίνει/GTS_Envπου λείπει όταν το/GTS_Scopeείναι Stream ή Global (§6.7.4) - Ανίχνευση εμπρόσθιας αναφοράς MIME (Annex A.2): το
vtmviForwardReferenceεπισημαίνει ένα inline PDF που παραθέτει όνομα αρχείου (μέσω/EF /F) που δεν έχει εισαχθεί από προηγούμενο μέρος συνημμένου στη ροή
Διορθώθηκε (Fixed)
- Τα
ExtractNodeNameListFromPdfκαιExtractRecordLevelFromPdfστοFPdfPdfvtMimeδιόρθωσαν ένα επαναλαμβανόμενο σφάλμα off-by-one όπου η 1-based μετατόπιση που επέστρεφε τοAnsiFindKeyαντιμετωπιζόταν ως απόλυτη μετατόπιση byte στο εκτεταμένο PDF
Version 2.5.0
Προστέθηκε (Added)
- Μεταδεδομένα Document Part του PDF/VT (DPM, ISO 16612-2 §6.6): το
TPdfVTSaveOptionsαπέκτησεDpmEntriesκαιDpmTargetώστε ένας writer να μπορεί να επισυνάψει ένα λεξικό/DPMστον συντιθέμενο κόμβο DPart, με επικύρωση ονόματος-κλειδιού έναντι του κανόνα second-class-prefix του Annex E και των κανόνων NMTOKEN / μοναδικότητας / σχήματοςGTS_Managedτης §6.6 στην πλευρά του επικυρωτή - Ανταλλαγή ροής PDF/VT-2s (Annex A): η νέα μονάδα
FPdfPdfvtMimeπαρέχει ταBuildPdfVT2sStreamκαιValidatePdfVT2sStreamγια τον φάκελο MIMEmultipart/mixedπου μεταφέρει inline κομμάτια PDF/VT συν συνημμένα προφίλ ICC, με τον κανόνα ταξινόμησης κεφαλίδαςX-PDFVT-Stream-version: 1και τον έλεγχο συνοχήςNodeNameListμεταξύ ροών - Το
TPdf.ValidatePdfVTεκτελεί πλέον μια έγκυρη μέτρηση ενεργειών JavaScript μέσωFPDFDoc_GetJavaScriptActionCount, συμπληρώνοντας τη σάρωση ονόματος/JavaScriptσε επίπεδο byte
Διορθώθηκε (Fixed)
- Ορθότητα PDF/VT
Trappedστη βάση PDF/X-4: η τιμή enumptvUnknownαφαιρείται (το PDF/X-4 απαγορεύει το/Unknown), τοptvUnspecifiedομαλοποιείται σε/Falseκατά την εγγραφή (ένα/Trappedπου λείπει επίσης απαγορεύεται), και ένα νέο ζήτημαpvviTrappedInvalidεπισημαίνει μια απούσα ήUnknownτιμή - Το
ValidatePdfVTComplianceεπεκτείνει πλέον τις ροές αντικειμένων (PdfExpandObjectStreams) πριν τη σάρωση, ώστε ένα λεξικό catalog, OutputIntent ή Metadata αποθηκευμένο μέσα σε συμπιεσμένο ObjStm (PDF 1.5+, τυπικό των παραγωγών PDF/X-4) να είναι προσπελάσιμο από τις αναζητήσεις σε επίπεδο byte
Αλλάχθηκε (Changed)
- Το PDF/VT-1 κληρονομεί πλέον τις πλήρεις απαγορεύσεις περιεχομένου PDF/X-4:
pvviAcroFormForbidden(/AcroFormή/XFA),pvviAdditionalActionsForbidden(catalog/AA),pvviMissingTrimBoxκαιpvviReferenceXObjectForbidden(Reference XObject, μόνο X-5g/5pg) - Αφαίρεση διπλοτύπων μεταξύ προτύπων: τα
BuildDictObj,IccComponentCount, το ενσωματωμένο προφίλ ICC sRGB (GetSrgbIccProfile),PdfTextStr,PdfEnclosingObjNum,PdfDictRefNumκαιPdfExpandObjectStreamsπροήχθησαν από τριπλά τοπικά αντίγραφα σταFPdfPdfa/FPdfPdfx/FPdfPdfvtσε μία ενιαία κανονική θέση στοFPdfPdfCommon; το ICC literal 3144-byte υπάρχει πλέον ακριβώς μία φορά στη βάση κώδικα
Version 2.4.0
Διορθώθηκε (Fixed)
- Το
InjectPdfUaMarkersδεν απορρίπτει πλέον την αναφορά/Infoτου trailer σε μια βάση cross-reference-stream: το τοπικόSourceTrailerInfoRef(το οποίο στερούνταν του xref-stream fallback) αντικαταστάθηκε από το κοινόχρηστοPdfSourceTrailerInfoRef(το οποίο προήχθη από το αντίγραφο PDF/A που διέθετε το fallback από την έκδοση v2.0.0) - Το κοινόχρηστο
PdfReadStreamBytesυποστηρίζει πλέον έμμεσες αναφορές/Length N G R(μεταφέρθηκε από το τοπικό αντίγραφο PDF/A), έτσι ώστε οι επικυρωτές PDF/VT, PDF/R και PDF/E να μην διαβάζουν πλέον εσφαλμένα ή να παραλείπουν ροές μεταδεδομένων XMP που παράγονται από εργαλεία που χρησιμοποιούν indirect Length (Acrobat, Ghostscript)
Αλλάχθηκε (Changed)
- Κατάργηση διπλότυπων μεταξύ προτύπων: τα τοπικά αντίγραφα του
PdfReadTrailerσταFPdfPdfaκαιFPdfPdfx, τα τοπικά αντίγραφα τουSourceTrailerInfoRefσταFPdfPdfaκαιFPdfPdfua, καθώς και το τοπικόPdfReadStreamBytesστοFPdfPdfaδιαγράφηκαν — οι κοινόχρηστες εκδόσεις τουFPdfPdfCommonεφαρμόζονται πλέον παντού; αυτό αφαιρεί περίπου 330 γραμμές διπλότυπου κώδικα και εξαλείφει την ανάγκη συντήρησης για το συγχρονισμό των αντιγράφων - Κάλυψη ελλιπών δοκιμών για το PDF/X: επτά enum του content-class που προηγουμένως είχαν μηδενική κάλυψη έλαβαν θετικές δοκιμές (
pvxiLzwForbidden,pvxiJavaScriptForbidden,pvxiFormFieldsForbidden,pvxiAdditionalActions,pvxiEmbeddedFilesForbidden,pvxiMissingTrimBox,pvxiTrappedNotSet)
Version 2.3.0
Αλλάχθηκε (Changed)
- Η κάλυψη των ελλιπών δοκιμών για το PDF/A συνεχίζεται: τρία ακόμη enum με μηδενική κάλυψη έλαβαν θετικές δοκιμές; το
pvaiForbiddenRenderingIntent(§6.2.9) επισημαίνει ένα μη τυπικό όνομα rendering-intent σε ένα content stream; τοpvaiJpeg2000Violation(§6.2.2) επισημαίνει μια εικόνα JPXDecode με/NumComponentsεκτός του {1,3,4} στο Part 2; τοpvaiInlineImageLzwForbidden(§6.1.10) επισημαίνει μια ενσωματωμένη εικόνα που χρησιμοποιεί το φίλτρο LZW στο Part 2
Version 2.2.0
Αλλαγή
- Δοκιμές παλινδρόμησης ροής διασταυρούμενων αναφορών: η υπάρχουσα
Validate_XrefStreamTrailer_DetectsConformanceεπαληθεύει τώρα επίσης ότι η αναφορά/Metadataτου καταλόγου επιλύεται και το XMPpdfaid:partδιαβάζεται σε μια βάση xref-stream (όχι μόνο/Root+/ID) — μια νέα δοκιμήInjectPdfA_XrefStreamBase_RoundTripsπροστατεύει τη διαδρομή xref-stream του εγχυτήρα που προστέθηκε στην έκδοση v2.0.0, ενώ δύο δοκιμές διασταυρούμενων προτύπων (PdfE_XrefStreamBase_NotRejectedAsUnparsable,PdfR_XrefStreamBase_NotRejectedAsUnparsable) επαληθεύουν ότι οι επικυρωτές PDF/E και PDF/R δεν απορρίπτουν πλέον τα PDF με xref-stream ως μη αναλύσιμα - Κλείσιμο του χρέους δοκιμών PDF/A: η
Validate_MinimalPdf_FlagsRequiredMarkersεπιβεβαιώνει ότι ένα εντελώς ελάχιστο PDF ενεργοποιεί ταpvaiMissingPdfAIdentifier,pvaiMissingOutputIntent,pvaiMissingIccProfile,pvaiMissingXmpMetadataκαιpvaiMissingXmpDates— κλείνοντας το χάσμα συμμετρίας με τους επικυρωτές PDF/E και PDF/X που διέθεταν ήδη αντίστοιχες δοκιμές, ενώ δύο ακόμη enums μηδενικής κάλυψης απέκτησαν θετικές δοκιμές:pvaiUnembeddedFontκαιpvaiSubsetMissingCidSet
Version 2.1.0
Διορθώθηκε
- Το PDF/E παραλείφθηκε ακούσια από τη διόρθωση ροής διασταυρούμενων αναφορών της έκδοσης v2.0.0: τόσο η
InjectPdfEMarkersόσο και ηValidatePdfEComplianceεξακολουθούσαν να καλούν τηνPdfReadTrailerχωρίςAcceptXrefStream, με αποτέλεσμα ο εγχυτήρας PDF/E να αποτυγχάνει σιωπηλά σε έξοδο PDF 1.5+ (η προεπιλογήSaveAsCopyτου pdfium) — και οι δύο τοποθεσίες κλήσης μεταβιβάζουν τώραTrue - Η κοινόχρηστη εφεδρική λειτουργία ροής διασταυρούμενων αναφορών της
PdfReadTrailerφέρει τώρα την προστασία/Type /XRefπου διέθεταν ήδη τα τοπικά αντίγραφα των PDF/A και PDF/X, έτσι ώστε μια κατεστραμμένη μετατόπισηstartxrefπου δείχνει σε ένα άσχετο λεξικό να αποτυγχάνει καθαρά αντί να αναλύεται εσφαλμένα ως trailer - Ο επιλυτής έμμεσης αναφοράς
/LangστοValidatePdfUaCompliance(v2.0.0) ήταν απρόσιτος: ηPdfFindObjDictβρίσκει μόνο λεξικά<<, αλλά ένα αντικείμενο συμβολοσειράς/Langείναι(...)ή<...>χωρίς λεξικό — αντικαταστάθηκε με μια απευθείας σάρωση σώματος αντικειμένου που εντοπίζει το διακριτικό συμβολοσειράς
Αλλαγή
- Επτά περιττά διπλότυπα βοηθητικών συναρτήσεων (PdfStructureBytes, PdfHasName, PdfCountName, BuildStreamObj) που ήταν πανομοιότυπα αντίγραφα byte των κοινόχρηστων εκδόσεων του
FPdfPdfCommonαφαιρέθηκαν από ταFPdfPdfaκαιFPdfPdfua— οι κοινόχρηστες εκδόσεις εφαρμόζονται πλέον παντού μέσωuses
Version 2.0.0
Διορθώθηκε
- Σιωπηλή αποτυχία μεταξύ προτύπων: η κοινόχρηστη βοηθητική συνάρτηση
PdfReadTrailer(που χρησιμοποιείται από τους εγχυτήρες και επικυρωτές δεικτών των PDF/UA, PDF/X, PDF/VT και PDF/R) δέχεται τώρα μια παράμετροAcceptXrefStreamκαι επιστρέφει στο λεξικό αντικειμένων της ροής διασταυρούμενων αναφορών όταν δεν υπάρχει η λέξη-κλειδίtrailer(PDF 1.5+) — προηγουμένως, η έξοδοςSaveAsCopyτου pdfium (η οποία χρησιμοποιεί ροή διασταυρούμενων αναφορών) προκαλούσε τη σιωπηλή αποτυχία κάθε εγχυτήρα δεικτών (τα byte προέλευσης αντιγράφονταν αμετάβλητα και η κλήση εξακολουθούσε να επιστρέφει επιτυχία), ο επικυρωτής PDF/R-1.0 (του οποίου η βάση PDF 2.0 είναι πάντα μια ροή διασταυρούμενων αναφορών) ήταν ουσιαστικά ανενεργός, ενώ η ώριμη υλοποίηση του επικυρωτή PDF/A μεταφέρθηκε στον κοινόχρηστο βοηθό ώστε να επωφελούνται όλα τα πρότυπα - Η σάρωση λεξικού trailer στις
InjectPdfUaMarkersκαιInjectPdfAMarkersχρησιμοποιεί τώρα τοPdfDictEndπου λαμβάνει υπόψη το βάθος αντί για μια απλή αναζήτηση>>, έτσι ώστε ένα trailer που περιέχει ένα φωλιασμένο λεξικό (π.χ./Encrypt << ... >>) να μην διακόπτεται πλέον πρόωρα πριν από μια τελική καταχώριση/Info
Αλλαγή
- Η
TPdf.ValidatePdfUaκαταστέλλει τώρα το γενικόpvuaiFontNotEmbeddedσε επίπεδο byte όταν έχει ήδη ενεργοποιηθεί το ακριβέςpvuaiPdfiumFontNotEmbeddedτου μοντέλου αντικειμένων Pdfium, έτσι ώστε η αναφορά προετοιμασίας πτήσης (preflight) να μην περιέχει πλέον δύο σχεδόν πανομοιότυπες γραμμές "ενσωματώστε τις γραμματοσειρές σας" για το ίδιο ελάττωμα - Το
pvuaiLangInvalidFormat(§7.2) επιλύει τώρα μια έμμεση αναφορά/Lang(N 0 R) στο αντικείμενο συμβολοσειράς της και επικυρώνει το περιεχόμενο, έτσι ώστε μια ετικέτα γλώσσας με έμμεση αναφορά να μην αποτελεί πλέον τυφλό σημείο
Version 1.99.0
Διορθώθηκε
- Το
pvuaiLangInvalidFormat(§7.2) δεν επιτρέπει πλέον την ελεύθερη διέλευση σε συμβολοσειρές/Langμε δεκαεξαδική κωδικοποίηση: τα ζεύγη UTF-16BE (με BOMFE FF) και οι απλές δεκαεξαδικές συμβολοσειρές ASCII αποκωδικοποιούνται πλέον και υποβάλλονται στον ίδιο γραμματικό έλεγχο BCP 47 όπως οι κυριολεκτικές συμβολοσειρές(...), με αποτέλεσμα να εντοπίζεται μια μη έγκυρη δεκαεξαδική συμβολοσειρά/Langενώ μια συμμορφούμενη (π.χ. μια UTF-16BEen-US) δεν κινδυνεύει πλέον να επισημανθεί
Αλλαγή
- Το
pvuaiFontMissingToUnicode(§7.21.7) εξαιρεί πλέον το/MacExpertEncodingμαζί με τα/WinAnsiEncodingκαι/MacRomanEncoding, ευθυγραμμιζόμενο με τις τέσσερις συνθήκες εξαίρεσης που αναφέρει η ρήτρα
Version 1.98.0
Προστέθηκε
- Το
pvuaiNeedAppearancesTrue(§7.18.4) επισημαίνει ένα AcroForm του οποίου η σημαία/NeedAppearancesείναι αληθής, έτσι ώστε οι εμφανίσεις γραφικών στοιχείων να μην κλειδώνονται αξιόπιστα και η υποστηρικτική τεχνολογία να μην μπορεί να τα συσχετίσει με το δέντρο δομής. Μεταφέρθηκε από τον επικυρωτή PDF/A και περιορίζεται από την παρουσία του/AcroFormγια τη μείωση της επιφάνειας σάρωσης
Αλλαγή
- veraPDF corpus regression: συνδέθηκαν το ζεύγος pass+fail του §7.20 Reference-XObject και τα ζεύγη pass+fail CIDSet/CharSet του υποσυνόλου §7.21.4.2 στο
Live_Corpus_ValidatePdfUaMatchesConformance. Τα δείγματα pass του §7.21.7 ToUnicode-forbidden-value και του §7.18.6.2 media-clip συνδέθηκαν επίσης ως προστασίες ψευδώς θετικών (τα δείγματα fail τους χρησιμοποιούν διατάξεις λεξικού που δεν ανιχνεύει η σάρωση σε επίπεδο byte, επομένως μόνο η πλευρά pass έχει συνδεθεί) - Η λίστα ισχυρισμών διαδρομής pass του corpus απέκτησε 15 νέες προστασίες μηδενικών ψευδώς θετικών, έτσι ώστε κάθε ενεργός έλεγχος δομής και επιπέδου byte
pvuai*να δοκιμάζεται πλέον έναντι συμμορφούμενων δειγμάτων (προηγουμένως προστατεύονταν μόνο περίπου 30 από τα 60 ενεργά ζητήματα). Η προστασίαpvuaiLangInvalidFormatπαραλείφθηκε σκόπιμα επειδή ο ελεγκτής επιπέδου byte επισημαίνει συντηρητικά συμβολοσειρές/Langμε δεκαεξαδική κωδικοποίηση που δεν μπορεί να αποκωδικοποιήσει
Version 1.97.0
Διορθώθηκε
- Θωράκιση του
ValidatePdfUaStructureElements: η διαδρομή αλυσίδας γονέαEnclosingTableφέρει πλέον έναν μετρητή βημάτων (που περιορίζεται από το πλήθος των στοιχείων), έτσι ώστε ένας κακόμορφος κύκλοςParentIndexσε έναν συνθετικό πίνακα στοιχείων δομής να μην μπορεί πλέον να προκαλέσει κρέμασμα του καλούντος. Η κατανομή πίνακα marked-content-ID τουValidatePdfUaPageContentTaggingπεριορίζεται πλέον στο ένα εκατομμύριο καταχωρίσεις, αποτρέποντας μια κατανομή πολλών GB σε περίπτωση κακόμορφου ή κακόβουλουMarkedContentID
Αλλαγή
- Το σχόλιο τεκμηρίωσης του enum
pvuaiOrderedListMissingListNumberingπεριγράφει πλέον με ακρίβεια τι κάνει ο έλεγχος: επισημαίνει ένα στοιχείοLτου οποίου η τιμήListNumberingβρίσκεται εκτός του συνόλου του Πίνακα 347 του ISO 32000-1 (ένα απόν χαρακτηριστικό δεν επισημαίνεται). Το προηγούμενο σχόλιο υπονοούσε ότι ανίχνευε επίσης ταξινομημένες λίστες που στερούνταν το χαρακτηριστικό, κάτι που δεν κάνει η υλοποίηση - Τα δύο δείγματα αποτυχίας corpus
7.21.3.3-t02για αναντιστοιχία WMode είναι πλέον συνδεδεμένα στοLive_Corpus_ValidatePdfUaMatchesConformance— από την έκδοση v1.95.0 η ροή CMap αποσυμπιέζεται με FlateDecode, οπότε η σύγκριση λεξικού έναντι περιεχομένου εκτελείται πλέον σε αναγνώσιμη πλευρά. Το παρωχημένο σχόλιο “not wired” αφαιρέθηκε
Version 1.96.0
Προστέθηκε
- Συνέπεια μεταξύ προτύπων: το
TPdf.ValidatePdfUaαποκτά δύο ελέγχους που μεταφέρθηκαν από τον επικυρωτή PDF/A. ΤοpvuaiAnnotationFlagsViolation(§7.18.1) επισημαίνει μια μη εξαιρούμενη σημείωση που φέρει τη σημαία Hidden / Invisible / NoView, η οποία διακόπτει τη ροή ανάγνωσης της υποστηρικτικής τεχνολογίας. ΤοpvuaiActionTargetMissing(§7.18.5) επισημαίνει μια ενέργεια GoToR / URI / SubmitForm που στερείται το απαιτούμενο κλειδί προορισμού (/F+/D, /URI, /F), καθιστώντας τον σύνδεσμο μη χρησιμοποιήσιμο από την AT
Διορθώθηκε
- Συγχώνευση δέντρου δομής μεταξύ σελίδων: ο βρόχος συσσώρευσης
AllElemsστοTPdf.ValidatePdfUaεπαναπροσδιορίζει πλέον τη βάση τουParentIndexκάθε στοιχείου από τον τοπικό πίνακα σελίδας στον συγχωνευμένο πίνακα. Χωρίς αυτό, τα θυγατρικά στοιχεία της σελίδας 2 διατηρούσαν έναν τοπικό δείκτη σελίδας που έδειχνε στο τμήμα της σελίδας 1, καταστρέφοντας σιωπηλά κάθε έλεγχο που εξαρτάται από το ParentIndex (δομή πίνακα/λίστας, πλήθος παιδιών Η §7.4.4, EnclosingTable) - Ανάλυση RoleMap: το
PdfReadRoleMapPairsδεν τερματίζει πλέον ολόκληρη τη σάρωση κλειδιού/τιμής όταν μια τιμή είναι έμμεση αναφορά (N 0 R) ή πίνακας ([...]) — και οι δύο έγκυρες μορφές RoleMap σύμφωνα με το ISO 32000-1 14.8.5.1. Τώρα παρακάμπτει μόνο αυτήν την καταχώριση (Continue) αντί να διακόπτει (Break), εξαλείφοντας τα ψευδώς θετικά στοιχείαpvuaiRoleMapUnresolvedσε τύπους που αντιστοιχίζονται μετά από μια καταχώριση έμμεσης αναφοράς/πίνακα
Αλλαγή
FPdfPreflightReport: 18 ενεργές τιμέςTPdfUaValidationIssueπου προηγουμένως κατέληγαν στη γενική κατηγορία και σύσταση “missing marker” φέρουν πλέον ακριβείς κατηγορίες (Structure / Content / Metadata / Security) και συστάσεις ειδικές για κάθε ρήτρα. Διορθώθηκε επίσης το τυπογραφικό λάθοςpuaNone / pua1→pucNone / puc1στοPDFSpecComplianceMatrix.md
Version 1.95.0
Αλλαγή
- Έλεγχος ανάκλησης και ορθότητας του
TPdf.ValidatePdfUa: ο έλεγχος §7.21.3.3pvuaiCMapWModeMismatchκαι ο έλεγχος §7.21.7pvuaiToUnicodeForbiddenValueαποσυμπιέζουν πλέον τις ροές CMap / ToUnicode που είναι συμπιεσμένες μεFlateDecodeπριν από τη σάρωση (προηγουμένως κρίνονταν μόνο οι μη συμπιεσμένες ροές, ένα γνωστό ψευδώς αρνητικό). Οι κοινόχρηστοι βοηθοίPdfInflate/PdfReadAndDecodeStreamπροήχθησαν από ταFPdfPdfa/FPdfPdfxστοFPdfPdfCommonέτσι ώστε κάθε μονάδα συμμόρφωσης να μοιράζεται ένα αντίγραφο
Προστέθηκε
- Το
pvuaiSubsetCharSetEmpty(§7.21.4.2) επισημαίνει ένα υποσύνολο Type 1FontDescriptorπου φέρει ένα κλειδί/CharSetτου οποίου η τιμή συμβολοσειράς είναι κενή — το υπάρχονpvuaiSubsetMissingCharSetεντόπιζε μόνο ένα κλειδί που έλειπε. Ένα κενό/CIDSetδεν επισημαίνεται, καθώς μια γραμματοσειρά χωρίς CIDs μπορεί νόμιμα να φέρει έναν κενό ψηφιακό χάρτη
Version 1.94.0
Προστέθηκε
- Ο έλεγχος
TPdf.ValidatePdfUaδεύτερου περάσματος έκλεισε έξι κενά του ISO 14289-1 που προέκυψαν από μια ανασκόπηση ανά ρήτρα και μια εκ νέου σάρωση των εγγενών APIs του Pdfium που είναι ήδη ενσωματωμένα αλλά δεν χρησιμοποιούνται από τη διαδρομή PDF/UA. ΤοpvuaiHeadingFormatInvalid(§7.4.3) επισημαίνει ετικέτες επικεφαλίδων που ορίζονται από τον χρήστη και ξεκινούν με H αλλά φέρουν διαχωριστικά, κενά ή λατινικούς αριθμούς αντί για καθαρά αραβικά ψηφία. ΤοpvuaiMissingDocumentOutline(§7.17, should) επισημαίνει ένα πολυσέλιδο έγγραφο που δεν φέρει περίγραμμα σελιδοδεικτών (τα μονοσέλιδα έγγραφα εξαιρούνται). ΤοpvuaiStructElementLangInvalid(§7.2) επισημαίνει μια τιμή στοιχείου δομής/Langπου δεν είναι έγκυρη ετικέτα BCP 47. ΤοpvuaiWidgetMissingPrintField(§7.14 / §7.18.4) επισημαίνει ένα στοιχείο δομής Widget που στερείται τον κάτοχο χαρακτηριστικού PrintField. ΤοpvuaiLinkNotInStructureTree(§7.18.5) επισημαίνει ένα έγγραφο του οποίου οι σημειώσεις/Subtype /Linkδεν εκτίθενται ως στοιχεία δομής Link. ΤαpvuaiPdfiumAnnotationMissingContentsκαιpvuaiPdfiumLinkMissingContents(§7.18.1 / §7.18.5) προσθέτουν μια ακριβή σάρωση σημειώσεων του μοντέλου αντικειμένων Pdfium που εξαιρεί κρυφές σημειώσεις, σημειώσεις εκτός crop-box, Popup και Widget — εξαλείφοντας τα ψευδώς θετικά της ευρετικής μεθόδου σε επίπεδο byte, η οποία δεν μπορεί να διαβάσει τις σημαίες/Fή το/Rect
Version 1.93.0
Προστέθηκε
- Το
TPdf.ValidatePdfUaπροσθέτει πλέον ένα πέρασμα μοντέλου αντικειμένων Pdfium πάνω από τον επιθεωρητή επιπέδου byte, αντικατοπτρίζοντας την αρχιτεκτονική γύρου 7 του PDF/A: διατρέχει τα αντικείμενα κειμένου κάθε σελίδας μέσω τουFPDFTextObj_GetFont→FPDFFont_GetIsEmbedded(pvuaiPdfiumFontNotEmbedded, §7.21.4) και σαρώνει κάθε χαρακτήρα μέσω τουFPDFText_HasUnicodeMapError(pvuaiPdfiumUnicodeMapError, §7.21.7) και τουFPDFText_GetUnicode(pvuaiPdfiumNotDefGlyph, §7.21.8) — πιο ακριβές από τις ευρετικές μεθόδους επιπέδου byte, οι οποίες ενεργοποιούνται μόνο όταν δεν υπάρχουν προγράμματα γραμματοσειρών ή δεν εμφανίζεται καθόλου/ToUnicode. Η διαδρομή βραχυκυκλώνει σε τρία επίπεδα: ο βρόχος σελίδας τερματίζεται όταν έχουν ήδη οριστεί και τα τρία ζητήματα επιπέδου Pdfium, ο βρόχος ανά αντικείμενο τερματίζεται στην πρώτη μη ενσωματωμένη γραμματοσειρά και η σάρωση χαρακτήρων παρακάμπτει το πέρασμα.notdefόταν έχει ήδη σημειωθείUnicodeMapError. Το PDF/UA ήταν ο τελευταίος επικυρωτής προτύπου PDF χωρίς επίπεδο μοντέλου αντικειμένων Pdfium
Version 1.92.0
Προστέθηκε
- Δημιουργήθηκε το
Tests.PdfR— το πρώτο αρχείο δοκιμών για τον επικυρωτή PDF/R-1 (FPdfPdfr), που καλύπτει την επικύρωση κεφαλίδας, την απαγόρευση ObjStm, την ανίχνευση δεικτών εικονογραφίας και μια προστασία καθαρού αρχείου χωρίς ψευδώς θετικά. Και οι έξι σουίτες δοκιμών προτύπων PDF διαθέτουν πλέον ειδικά αρχεία δοκιμών: PdfA(80), PdfUa(101), PdfX(7), PdfE(5), PdfVT(15), PdfR(4) = 212 δοκιμές συνολικά
Version 1.91.0
Προστέθηκε
- Τα
ValidatePdfEκαιValidatePdfVTαπέκτησαν ελέγχους επιπέδου περιεχομένου που προηγουμένως ήταν διαθέσιμοι μόνο στους επικυρωτές PDF/A, PDF/UA και PDF/X:pveiLzwForbidden,pveiJavaScriptForbidden,pveiFormFieldsForbidden(μόνο για PDF/E),pveiEmbeddedFilesForbidden(μόνο για PDF/E),pveiOpiForbidden,pvviLzwForbidden,pvviJavaScriptForbidden,pvviEmbeddedFilesForbidden,pvviOpiForbidden. ΤαTPdf.ValidatePdfEκαιTPdf.ValidatePdfVTαποκτούν επίσης ένα επίπεδο μοντέλου αντικειμένων Pdfium (pveiPdfiumFontNotEmbedded/pvviPdfiumFontNotEmbedded) που διατρέχει τα αντικείμενα κειμένου της σελίδας μέσω τουFPDFFont_GetIsEmbedded, βραχυκυκλώνοντας στην πρώτη μη ενσωματωμένη γραμματοσειρά
Version 1.90.0
Προστέθηκε
- Το
TPdf.ValidatePdfXπροσθέτει πλέον ένα πέρασμα μοντέλου αντικειμένων Pdfium πάνω από τον επιθεωρητή επιπέδου byte: διατρέχει τα αντικείμενα κειμένου κάθε σελίδας μέσω τουFPDFTextObj_GetFont→FPDFFont_GetIsEmbeddedκαι αναφέρει μια μη ενσωματωμένη γραμματοσειρά ωςpvxiPdfiumFontNotEmbedded— πιο ακριβές από την ευρετική μέθοδο επιπέδου byte που ενεργοποιείται μόνο όταν δεν υπάρχουν προγράμματα γραμματοσειρών. Η διαδρομή βραχυκυκλώνει στην πρώτη μη ενσωματωμένη γραμματοσειρά που εντοπίζεται
Αλλαγή
- Διαδρομή δέντρου δομής του
TPdf.ValidatePdfUa: η κλήσηValidatePdfUaPageContentTaggingανά σελίδα (η οποία δημιουργεί έναν χάρτη αξιώσεων marked-content-ID και διασταυρώνει κάθε αντικείμενο κειμένου/εικόνας) παρακάμπτεται πλέον σε επόμενες σελίδες μόλις εντοπιστεί τοpvuaiUntaggedContent— τα στοιχεία δομής εξακολουθούν να συλλέγονται για τους ελέγχους μεταξύ σελίδων (μοναδικό αναγνωριστικό σημείωσης, αλληλουχία επικεφαλίδων), αλλά το δαπανηρό πέρασμα σήμανσης περιεχομένου ανά σελίδα σταματά νωρίς
Version 1.89.0
Αλλαγή
- Απόδοση επιπέδου μοντέλου αντικειμένων Pdfium του
TPdf.ValidatePdfA: η διαδρομή σελίδας/αντικειμένου βραχυκυκλώνει πλέον σε τρία επίπεδα — ο βρόχος σελίδας τερματίζεται όταν έχουν ήδη βρεθεί όλα τα ισχύοντα ζητήματα επιπέδου Pdfium, ο βρόχος ανά αντικείμενο τερματίζεται όταν έχουν οριστεί και τα δύο ζητήματα ανά αντικείμενο (ενσωμάτωση γραμματοσειράς + διαφάνεια) και η σάρωση χαρακτήρων σελίδας κειμένου παρακάμπτει το πέρασμα.notdefόταν έχει ήδη σημειωθείUnicodeMapError. Οι έλεγχοι διαθεσιμότητας APIAssigned()και οι σημαίες συμμόρφωσης αποθηκεύονται σε τοπικές λογικές μεταβλητές μία φορά πριν από τον βρόχο αντί να επανεκτιμώνται σε κάθε σελίδα/αντικείμενο/χαρακτήρα. Σε ένα μεγάλο μη συμμορφούμενο έγγραφο η διαδρομή μπορεί πλέον να σταματήσει μετά την πρώτη σελίδα αντί να σαρώνει όλες τις σελίδες· σε ένα συμμορφούμενο έγγραφο η επιβάρυνση ανά σελίδα είναι χαμηλότερη (χωρίς επαναλαμβανόμενες κλήσειςAssigned)
Version 1.88.0
Προστέθηκε
- Το
ValidatePdfXαπέκτησε οκτώ νέες τιμέςTPdfXValidationIssueεπιπέδου περιεχομένου που καλύπτουν τους περιορισμούς ανταλλαγής εκτύπωσης που επιβάλλει το PDF/X πέρα από τους δείκτες μορφής αρχείου:pvxiLzwForbidden(/LZWDecode),pvxiJavaScriptForbidden(/JavaScript),pvxiFormFieldsForbidden(/AcroForm//XFA),pvxiAdditionalActions(/AA),pvxiEmbeddedFilesForbidden(/EmbeddedFiles//FileAttachment),pvxiOpiForbidden(/OPI//Alternates),pvxiMissingTrimBox(χωρίς/TrimBoxσε καμία σελίδα) καιpvxiTrappedNotSet(το/Trappedαπών ή/Unknown). Ο επικυρωτής PDF/X έλεγχε προηγουμένως μόνο τους δείκτες XMP/OutputIntent· αυτό είναι το πρώτο του πέρασμα σε επίπεδο περιεχομένου. Προστέθηκαν κοινόχρηστοι βοηθοίPdfStructureBytes/PdfHasName/PdfCountNameστοFPdfPdfCommonέτσι ώστε όλες οι μονάδες συμμόρφωσης να μπορούν να τους χρησιμοποιούν
Version 1.87.0
Προστέθηκε
- Η επικύρωση PDF/UA καλύπτει πλέον τους κανόνες σύνθετων γραμματοσειρών (composite-font) του ISO 14289-1 §7.21.3: το
pvuaiCidSystemInfoMismatchεπισημαίνει (flags) γραμματοσειρές Type0 των οποίων το ενσωματωμένο CMap και η θυγατρική CIDFont διαφωνούν ως προς ταRegistry/Orderingή τοSupplementτης CIDFont υπερβαίνει αυτό του CMap, τοpvuaiCMapNotEmbeddedεπισημαίνει CMaps που αναφέρονται με όνομα (ωςEncodingήUseCMap) και δεν είναι προκαθορισμένα CMaps του Πίνακα 118 του ISO 32000-1, και τοpvuaiCMapWModeMismatchεπισημαίνει ενσωματωμένα CMaps των οποίων τοWModeτου λεξικού διαφέρει από το WMode στο περιεχόμενο ροής τους
Διορθώθηκε
- Ο έλεγχος
pvuaiCidFontMissingCidToGidMapτου §7.21.3.2 παρέλειπε λεξικά CIDFontType2 των οποίων το ζεύγος κλειδιού/τιμήςSubtypeχωρίζεται με αλλαγή γραμμής, και πλέον επισημαίνει επίσης τιμή ονόματοςCIDToGIDMapδιάφορη απόIdentity
Version 1.86.0
Προστέθηκε
- Η επικύρωση PDF/UA καλύπτει πλέον τους κανόνες κωδικοποίησης TrueType του ISO 14289-1 §7.21.6: το
pvuaiTrueTypeEncodingInvalidεπισημαίνει μη συμβολικές γραμματοσειρές TrueType των οποίων λείπει τοEncodingή δεν είναι ούτεMacRomanEncodingούτεWinAnsiEncoding(άμεσα ή μέσωBaseEncoding), και τοpvuaiSymbolicTrueTypeEncodingεπισημαίνει συμβολικές γραμματοσειρές TrueType που φέρουν ένα μη τυπικό όνομαEncoding
Version 1.85.1
Αλλαγή
- Ο έλεγχος σειράς καρτελών (tab-order)
pvuaiMissingTabsOrderτου ISO 14289-1 §7.18.3 εκτελείται πλέον ανά σελίδα: κάθε σελίδα που φέρει σχολιασμούς (annotations) πρέπει να δηλώνει/Tabs /Sστο δικό της λεξικό σελίδας, οπότε μια συμμορφούμενη αδελφή σελίδα δεν καλύπτει πλέον μια σελίδα χωρίς τη δήλωση αυτή
Version 1.85.0
Προστέθηκε
- Η επικύρωση PDF/UA διακρίνει πλέον τις δυναμικές από τις στατικές φόρμες XFA σύμφωνα με το ISO 14289-1 §7.15: το
pvuaiXfaDynamicεπισημαίνει φόρμες των οποίων η διαμόρφωση XFA ορίζει τοdynamicRenderσεrequired
Αλλαγή
- Η πρώην σημαία υποψήφιου any-XFA
pvuaiXfaPresentκαταργείται και δεν εγείρεται πλέον (το στατικό XFA συμμορφώνεται με το §7.15)· η τιμή enum διατηρείται για συμβατότητα API
Version 1.84.0
Προστέθηκε
- Η επικύρωση PDF/UA εντοπίζει πλέον πραγματικό περιεχόμενο χωρίς ετικέτα (untagged real content) που απαιτείται από το ISO 14289-1 §7.1: το
pvuaiUntaggedContentεπισημαίνει αποδιδόμενα αντικείμενα κειμένου και εικόνας που δεν ανακτώνται ούτε από το δέντρο δομής της σελίδας (μέσω των αναγνωριστικών σημείου επισήμανσης) ούτε έχουν επισημανθεί ως Artifact - Νέα βοηθητικά στοιχεία σελίδας
GetPageContentMarkInfosκαιValidatePdfUaPageContentTaggingμε την εγγραφήTPdfPageContentMarkInfoγια άμεση χρήση
Version 1.83.0
Προστέθηκε
- Η επικύρωση PDF/UA επιβάλλει πλέον το μοντέλο επικεφαλίδων (heading model) του ISO 14289-1 §7.4.4: το
pvuaiHeadingModelMixedεπισημαίνει έγγραφα που συνδυάζουν τη γενική ετικέταHμε αριθμημένες επικεφαλίδεςH1..Hn, και τοpvuaiHeadingMultipleInNodeεπισημαίνει κόμβους δομής που φέρουν περισσότερες από μία επικεφαλίδαHως παιδί
Version 1.82.0
Προστέθηκε
- Η επικύρωση PDF/UA επιλύει πλέον τον RoleMap που απαιτείται από το ISO 14289-1 §7.1: το
pvuaiRoleMapRemapsStandardεπισημαίνει καταχωρίσεις RoleMap που επαναορίζουν έναν τυπικό τύπο δομής, και τοpvuaiRoleMapUnresolvedεπισημαίνει χρησιμοποιούμενους μη τυπικούς τύπους δομής των οποίων η αλυσίδα RoleMap είναι απούσα, κρεμαστή ή κυκλική — έμμεσες αλυσίδες που φτάνουν σε τυπικό τύπο γίνονται αποδεκτές, και οι αχρησιμοποίητες καταχωρίσεις RoleMap δεν κρίνονται ποτέ - Νέα βοηθητικά στοιχεία
PdfUaIsStandardStructType,PdfReadRoleMapPairs(με αποκωδικοποίηση διαφυγής ονόματος PDF#hh) καιValidatePdfUaRoleMapUsageγια άμεση χρήση
Version 1.81.0
Προστέθηκε
- Η επικύρωση PDF/UA καλύπτει πλέον την επισήμανση λίστας (list tagging) ISO 32000-1 που απαιτείται από το ISO 14289-1 §7.6: το
pvuaiListStructureInvalidεπισημαίνει στοιχεία LI εκτός κοντέινερ L και μέρη Lbl/LBody εκτός στοιχείου LI, ενώ αποδέχεται φωλιασμένες λίστες και τη νόμιμη χρήση Lbl εντός στοιχείων Note και BibEntry
Version 1.80.0
Προστέθηκε
- Η επικύρωση PDF/UA καλύπτει πλέον την επισήμανση πίνακα (table tagging) ISO 32000-1 που απαιτείται από το ISO 14289-1 §7.5: το
pvuaiTableStructureInvalidεπισημαίνει κελιά TH/TD εκτός γραμμής TR και γραμμές ή ομάδες γραμμών εκτός του κοντέινερ Table, τοpvuaiTableHeaderMissingScopeεπισημαίνει κελιά κεφαλίδας (header) των οποίων η σχέση δεν μπορεί να προσδιοριστεί ούτε μέσω χαρακτηριστικού Scope ούτε μέσω σύνδεσης Headers/ID, και τοpvuaiTableHeadersUndefinedIdεπισημαίνει αναφορές Headers σε έγγραφα που δεν ορίζουν αναγνωριστικά στοιχείων δομής - Το
TPdfStructureElementεκθέτει τα χαρακτηριστικά πίνακαScope,HasHeaders,HeadersIds,ColSpanκαιRowSpan, τα οποία επιλύονται κατά τη διέλευση του δέντρου δομής
Αλλαγή
- Η διέλευση του δέντρου δομής διαβάζει πλέον όλα τα χαρακτηριστικά διάταξης (layout) και πίνακα σε μια ενιαία δίοδο (pass) πάνω στα λεξικά χαρακτηριστικών κάθε στοιχείου, αντί για μια σάρωση ανά χαρακτηριστικό
Version 1.79.1
Προστέθηκαν
- Μεταφέρθηκε (ported) το παράδειγμα (sample)
AnnotationsLabστα Lazarus και C++Builder, πλαισιώνοντας το ήδη υπάρχον παράδειγμα κονσόλας Delphi
Διορθώθηκαν
- H
TPdf.CreateAnnotationμπορούσε να εγείρει το σφάλμα “Cannot set attachment points” για σχολιασμούς σημείωσης (markup) που χρησιμοποιούν σημεία τετραγώνου (quad points - π.χ. Highlight, Underline, StrikeOut, Squiggly) επειδή ο νέος σχολιασμός δεν είχε ακόμη υποδοχή (slot) σημείου τετραγώνου για αντικατάσταση. Πλέον προσαρτά (appends) το πρώτο τετράγωνο αντί αυτού
Version 1.79.0
Προστέθηκαν
- Νέο παράδειγμα κονσόλας Delphi,
AnnotationsLab: Δημιουργεί σχολιασμούς κειμένου (Text), επισήμανσης (Highlight), τετραγώνου (Square) και κύκλου (Circle), τους εγγράφει σε ένα PDF, στη συνέχεια επαναφορτώνει το αρχείο και απαριθμεί τη λίστα σχολιασμών της σελίδας
Version 1.78.0
Προστέθηκαν
- Νέα
TPdf.MeasureTextκαιTPdf.MeasureTextWidth: Υπολογίζουν το οπτικό πλάτος (width) και το ύψος (height) μιας συμβολοσειράς για μια δεδομένη γραμματοσειρά (font) και ένα συγκεκριμένο μέγεθος (size) (σε μονάδες χρήστη PDF, όπου 1 μονάδα = 1/72 ίντσας) χωρίς να προσθέτουν περιεχόμενο (content) σε μια σελίδα. Αυτό καθιστά δυνατή τη δημιουργία λογικής διάταξης (layout) και αναδίπλωσης λέξεων (word-wrap) πάνω στοAddText, και παρέχεται από την αυτόνομη (standalone) μονάδαFPdfMeasureως βοηθητική κλάση (class helper) - Νέα
TPdf.WrapText: Εφαρμόζει την απληστη (greedy) αναδίπλωση λέξεων με βάση τοMeasureTextWidth, η οποία διαχωρίζει το κείμενο με βάση τα κενά διαστήματα και πακετάρει τις λέξεις σε γραμμές που δεν υπερβαίνουν ένα συγκεκριμένο πλάτος (σε μονάδες χρήστη PDF). Μια υπερβολικά μεγάλη μοναδική λέξη καταλαμβάνει τη δική της γραμμή (χωρίς διαχωρισμό (breaking) στο εσωτερικό της) και επιστρέφει τις αναδιπλωμένες γραμμές (wrapped lines) ως πίνακας (array)
Version 1.77.0
Προστέθηκαν
- To
ValidatePdfAαπέκτησε τρεις νέες τιμέςTPdfAValidationIssueπου καλύπτουν όρους (clauses) που προηγουμένως είχαν αξιολογηθεί ως “NO” ή “συμπεριφορά αναγνώστη (reader behaviour)” κατά τον προηγούμενο έλεγχο κενών (gap audit) (προσαρτημένες σε αύξοντα σειρά (appended ordinals), οι υπάρχουσες τιμές παραμένουν αμετάβλητες):pvaiPdfiumNotDefGlyph(PDF/A-2 6.2.11.8 — ένας χαρακτήρας που επιλύεται σε Unicode 0 χωρίς σφάλμα αντιστοίχισης (mapping error), που είναι το σύμπτωμα χρόνου εκτέλεσης (runtime symptom) μιας αναφοράς γλυφής.notdef. Εντοπίζεται μέσω του επιπέδου μοντέλου αντικειμένων (object-model layer) Pdfium),pvaiWordBreakMissing(Επίπεδο (Level) A 6.8.3.2 — μια συμβολοσειρά εμφάνισης (show string) ροής περιεχομένου (content-stream) μεγαλύτερη από 20 χαρακτήρες χωρίς κενό διάστημα (space), μια πιθανή παραβίαση συγχωνευμένων λέξεων (merged-words violation). Αποτελεί χονδροειδή ευρετική (coarse heuristic) που αποφεύγει τα ψευδώς θετικά CJK), καιpvaiLinkActionMissingTarget(6.6.3 — μια ενέργεια (action) GoToR/URI/SubmitForm που της λείπει το κλειδί στόχου εμφάνισης (display target key), με αποτέλεσμα ο αναγνώστης να μην μπορεί να την εμφανίσει)
Version 1.76.0
Προστέθηκε (Added)
- Η
ValidatePdfAαπέκτησε τρεις νέες τιμέςTPdfAValidationIssue(προστέθηκαν τακτικά, οι υπάρχουσες τιμές παραμένουν αμετάβλητες):pvaiNameNotValidUtf8(PDF/A-2/3 6.1.8 — ένα διακριτικό/BaseFontή/FontNameπου περιέχει bytes ≥ 0x80 που δεν αποτελούν έγκυρο UTF-8),pvaiInlineImageLzwForbidden(PDF/A-2/3 6.1.10 — μια ενσωματωμένη εικόνα σε μια ροή περιεχομένου σελίδας χρησιμοποιεί το φίλτρο LZW ή Crypt) καιpvaiTrueTypeDifferencesForbidden(6.3.7 Cor.2 — μια μη συμβολική γραμματοσειρά TrueType της οποίας το λεξικό Encoding φέρει/Differences)
Version 1.75.0
Προστέθηκε (Added)
- Η
ValidatePdfAαπέκτησε τρεις νέες τιμέςTPdfAValidationIssue(προστέθηκαν στο τέλος, οι υπάρχουσες τιμές παραμένουν αμετάβλητες):pvaiIntegerImplementationLimit(PDF/A-2/3 6.1.13 — ένα αριθμητικό διακριτικό που υπερβαίνει το όριο των 32-bit προσημασμένων ακεραίων 2,147,483,647),pvaiBlendModeNotWhitelisted(PDF/A-2/3 6.2.10 — μια τιμή/BMεκτός του προτύπου blend-mode συνόλου ISO 32000-1 §11.3.5· συμπληρώνει τοpvaiTransparentColorSpaceτου PDF/A-1 που επιτρέπει μόνο Normal/Compatible), καιpvaiHexStringOddDigits(6.1.6 — ένα<...>hex string με περιττό αριθμό δεκαεξαδικών ψηφίων)
Version 1.74.0
Προστέθηκε (Added)
- Η
ValidatePdfAαπέκτησε τρεις νέες τιμέςTPdfAValidationIssue(προστέθηκαν στο τέλος, οι υπάρχουσες τιμές παραμένουν αμετάβλητες):pvaiPermissionsViolation(6.1.12 — ένα λεξικό/Permsπου φέρει/DigestLocation,/DigestMethodή/DigestValueμαζί με/DocMDP),pvaiTransActionForbidden(PDF/A-2 6.5.1 — μια ενέργεια μετάβασης Trans, η οποία εντοπίζεται μέσω του μοτίβου action-dict/S /Transγια την αποφυγή λανθασμένης αντιστοίχισης με το/Transparency), καιpvaiPdfiumObjectTransparency(PDF/A-1 6.4 — ένα αντικείμενο σελίδας φέρει πραγματική διαφάνεια σύμφωνα με τοFPDFPageObj_HasTransparency, επεκτείνοντας το επίπεδο μοντέλου αντικειμένων του Pdfium που εισήχθη στην έκδοση v1.73.0 για τον εντοπισμό εφέ blend-mode/soft-mask τα οποία μπορεί να παραλείψει η σάρωση ονομάτων σε επίπεδο byte)
Version 1.73.0
Προστέθηκε (Added)
- Η
TPdf.ValidatePdfAπροσθέτει πλέον ένα πέρασμα μοντέλου αντικειμένων του Pdfium πάνω από τον επιθεωρητή επιπέδου byte: διατρέχει τα αντικείμενα κειμένου κάθε σελίδας μέσωFPDFPage_GetObject→FPDFTextObj_GetFont→FPDFFont_GetIsEmbeddedκαι αναφέρει μια μη ενσωματωμένη γραμματοσειρά που έχει αποδοθεί ωςpvaiPdfiumFontNotEmbedded(ISO 19005 6.3.4), και φορτώνει κάθε σελίδα κειμένου για να σαρώσει τοFPDFText_HasUnicodeMapErrorκαι να αναφέρει μια σπασμένη αντιστοίχιση Unicode ωςpvaiPdfiumUnicodeMapError(6.3.8). Αυτοί είναι έλεγχοι που δεν μπορεί να κάνει ο επιθεωρητής επιπέδου byte — βλέπει μόνο name tokens, όχι επιλυμένους δείκτες (handles) γραμματοσειράς ή κατάσταση αντιστοίχισης ανά χαρακτήρα — και συγχωνεύονται στο αποτέλεσμα του επιπέδου byte. Η αυτόνομη συνάρτηση επιπέδου byteValidatePdfAComplianceπαραμένει αμετάβλητη
Version 1.72.0
Προστέθηκε (Added)
- Η
ValidatePdfAαπέκτησε πέντε νέες τιμέςTPdfAValidationIssue(προστέθηκαν στο τέλος, οι υπάρχουσες τιμές παραμένουν αμετάβλητες):pvaiNeedsRenderingPresent(PDF/A-2 6.4.2 — ο κατάλογος δεν πρέπει να φέρει/NeedsRendering),pvaiDestOutputProfileRef(PDF/A-3 6.2.3 — ένα OutputIntent δεν πρέπει να φέρει/DestOutputProfileRef),pvaiEmbeddedFileMissingUF(PDF/A-3 6.8 — μια προδιαγραφή αρχείου με/EFπρέπει επίσης να φέρει/UF),pvaiXmpPacketBytesAttr(6.7.5 — η επικεφαλίδα πακέτου XMP δεν πρέπει να φέρει το καταργημένο (deprecated) χαρακτηριστικόbytes=ήencoding=), καιpvaiAnnotationToggleNoView(PDF/A-2 6.3.2 — το bit ToggleNoView του σχολιασμού/F, τιμή 512, απαγορεύεται)
Version 1.71.0
Τροποποιήθηκε
- Η
ValidatePdfUaτώρα εγείρει τοpvuaiOrderedListMissingListNumbering(ISO 14289-1 7.6): ο περιηγητής του δέντρου δομής επιλύει το χαρακτηριστικό διάταξηςListNumberingσε κάθε στοιχείοLμέσω του API χαρακτηριστικών του Pdfium και επισημαίνει οποιαδήποτε τιμή εκτός του συνόλου του Πίνακα 347 του ISO 32000-1 (Decimal,UpperRoman,LowerRoman,UpperAlpha,LowerAlpha,None,Circle,Disc,Square). Ένα απόν χαρακτηριστικό δεν επισημαίνεται, επειδή η λίστα μπορεί να είναι μη ταξινομημένη· αυτό κλείνει το τελευταίο υπολειπόμενο κενό του ISO 14289-1 που καταγράφηκε στο τέλος του γύρου 5
Version 1.70.0
Προστέθηκε
- Η
ValidatePdfUaαπέκτησε τέσσερις νέες τιμέςTPdfUaValidationIssue(προστέθηκαν στο τέλος, οι υπάρχουσες τιμές παραμένουν αμετάβλητες):pvuaiSubsetMissingCidSet(ISO 14289-1 7.21.4.2 — έναFontDescriptorυποσυνόλου CID πρέπει να δηλώνει/CIDSet),pvuaiToUnicodeForbiddenValue(7.21.7 — ένα ToUnicode CMap δεν πρέπει να αντιστοιχίζει κανέναν κώδικα στοU+FEFFή στοU+FFFE· οι ασυμπίεστες ροές σαρώνονται για τις μορφές εξόδου<FEFF>/<FFFE>),pvuaiLangInvalidFormat(7.2 — το/Langπρέπει να είναι μια έγκυρη ετικέτα RFC 1766 / BCP 47· μια ανεκτική γραμματική δέχεται ταen,en-US,zh-Hans,es-419και επισημαίνει σαφώς μη συμμορφούμενες τιμές), καιpvuaiOrderedListMissingListNumbering(7.6 — διατηρείται για λόγους πληρότητας του API· δεν εγείρεται ακόμα από τον επικυρωτή επειδή η αξιόπιστη διάκριση μεταξύ ταξινομημένων και μη ταξινομημένων λιστών χρειάζεται την τιμή του χαρακτηριστικούListNumbering, την οποία δεν εκθέτει ο περιηγητής του δέντρου δομής)
Version 1.69.0
Προστέθηκε
- Η
ValidatePdfUaαπέκτησε δύο νέες τιμέςTPdfUaValidationIssue(προστέθηκαν στο τέλος, οι υπάρχουσες τιμές παραμένουν αμετάβλητες):pvuaiWidgetOutsideForm(ISO 14289-1 7.18.4 — ένα στοιχείο δομής Widget πρέπει να είναι ένθετο μέσα σε ένα στοιχείοForm· ο περιηγητής του δέντρου δομής επαληθεύει τώρα τον άμεσο γονικό τύπο κάθε Widget) καιpvuaiSubsetMissingCharSet(7.21.4.2 — έναFontDescriptorυποσυνόλου Type 1 πρέπει να δηλώνει/CharSet, το οποίο αναγνωρίζεται από το πρόθεμα ονόματος υποσυνόλου+των έξι γραμμάτων στο/FontName)
Version 1.68.0
Προστέθηκε
- Η
ValidatePdfUaαπέκτησε δύο νέες τιμέςTPdfUaValidationIssue(προστέθηκαν στο τέλος, οι υπάρχουσες τιμές παραμένουν αμετάβλητες):pvuaiUriActionIsMap(ISO 14289-1 7.18.5 — ένα λεξικό ενέργειας URI δεν πρέπει να φέρει το/IsMapμε τιμήtrue, επειδή απενεργοποιεί τον προσβάσιμο στόχο του συνδέσμου) καιpvuaiHeadingSequenceViolation(7.4.2 — οι αριθμημένες επικεφαλίδες πρέπει να ξεκινούν στοH1και μια φθίνουσα ακολουθία δεν πρέπει να παραλείπει ένα ενδιάμεσο επίπεδο, π.χ. τοH1→H3αποτελεί παράβαση). Ο έλεγχος επικεφαλίδων είναι ο πρώτος κανόνας επιπέδου δέντρου δομής του PDF/UA στον επικυρωτή: ηValidatePdfUaStructureElementsτώρα διατρέχει τη λίστα στοιχείων με τύπο και επαληθεύει την ακολουθίαH1…H6(καιH7+σύμφωνα με το 7.4.3) με τη σειρά του εγγράφου
Version 1.67.0
Προστέθηκε
- Η
ValidatePdfUaαπέκτησε πέντε νέες τιμέςTPdfUaValidationIssue(προστέθηκαν στο τέλος, οι υπάρχουσες τιμές παραμένουν αμετάβλητες):pvuaiLinkMissingContents(ISO 14289-1 7.18.5 — ένας σχολιασμός Link πρέπει να φέρει εναλλακτική περιγραφή μέσω του/Contents),pvuaiAnnotationMissingContents(7.18.1 — κάθε μη εξαιρούμενος σχολιασμός χωρίς/Contentsπρέπει να έχει εναλλακτική περιγραφή· τα Popup και Widget εξαιρούνται),pvuaiEmbeddedFileMissingName(7.11 — ένα λεξικό προδιαγραφής αρχείου πρέπει να περιέχει/Fκαι/UF),pvuaiMediaClipMissingAlt(7.18.6.2 — ένα λεξικό δεδομένων αποσπάσματος πολυμέσων πρέπει να περιέχει/CTκαι/Alt), καιpvuaiCidFontMissingCidToGidMap(7.21.3.2 — μια ενσωματωμένη CIDFont Type 2 πρέπει να περιέχει/CIDToGIDMap)
Version 1.66.0
Προστέθηκε
- Η
ValidatePdfUaαπέκτησε πέντε νέες τιμέςTPdfUaValidationIssue(προστέθηκαν στο τέλος, οι υπάρχουσες τιμές παραμένουν αμετάβλητες):pvuaiRoleMapMissing(ISO 14289-1 7.1 — ένα ετικεταρισμένο έγγραφο με μη τυπικούς τύπους δομής πρέπει να φέρει ένα/RoleMap),pvuaiOptionalContentAsKey(7.10 — ένα λεξικό διαμόρφωσης προαιρετικού περιεχομένου δεν πρέπει να φέρει το κλειδί αυτόματης κατάστασης/AS),pvuaiXfaPresent(7.15 — η παρουσία ενός/XFAAcroForm επισημαίνεται επειδή το δυναμικό XFA απαγορεύεται),pvuaiTrapNetAnnotation(7.18.2 — οι σχολιασμοί/TrapNetαπαγορεύονται), καιpvuaiReferenceXObject(7.20 — τα Reference XObjects, με κλειδί τον δείκτη/Ref, απαγορεύονται)
Διορθώθηκε
- Η
ValidatePdfUaδεν δίνει πλέον ψευδώς θετικά αποτελέσματαpvuaiEncryptionPresentσε κάθε κρυπτογραφημένο αρχείο: το PDF/UA επιτρέπει την κρυπτογράφηση εφόσον το κλειδί/Pτου λεξικού κρυπτογράφησης έχει ορισμένη τη θέση bit 10 (τιμή 1024), η οποία παρέχει πρόσβαση σε υποστηρικτική τεχνολογία (7.16). Η ακριβής παράβαση αναφέρεται τώρα μέσω του νέουpvuaiEncryptionPBitMissing· τοpvuaiEncryptionPresentδιατηρείται στο enum για συμβατότητα API αλλά δεν εγείρεται πλέον από τον επικυρωτή επιπέδου byte
Version 1.65.0
Προστέθηκε
- Η
ValidatePdfAαπέκτησε πέντε νέες τιμέςTPdfAValidationIssue(προστέθηκαν στο τέλος, οι υπάρχουσες τιμές παραμένουν αμετάβλητες):pvaiCidFontMissingCidToGidMap(ISO 19005-1 6.3.3.2 Cor.2 — μια ενσωματωμένη CIDFont Type 2 πρέπει να φέρει/CIDToGIDMap),pvaiSubsetMissingCharSet(6.3.5 — έναFontDescriptorυποσυνόλου Type 1 πρέπει να φέρει/CharSet),pvaiSubsetMissingCidSet(6.3.5 — έναFontDescriptorυποσυνόλου CID πρέπει να φέρει/CIDSet),pvaiWidgetActionForbidden(6.6.1 — ένας σχολιασμός Widget δεν πρέπει να φέρει/Aή/AA), καιpvaiOptionalContentAsKey(ISO 19005-2 6.9 — ένα λεξικό διαμόρφωσης προαιρετικού περιεχομένου δεν πρέπει να φέρει το κλειδί αυτόματης κατάστασης/AS, το οποίο είναι πλέον σχετικό επειδή το PDF/A-2 επιτρέπει το προαιρετικό περιεχόμενο)
Version 1.64.0
Προστέθηκε
- Η
ValidatePdfAαπέκτησε οκτώ νέες τιμέςTPdfAValidationIssue(προστέθηκαν στο τέλος, οι υπάρχουσες τιμές παραμένουν αμετάβλητες):pvaiHeaderBinaryMarkerMissing(ISO 19005-1 6.1.2 — η επικεφαλίδα%PDF-x.yπρέπει να ακολουθείται από ένα σχόλιο%με τουλάχιστον τέσσερα byte μεγαλύτερα από 127),pvaiExternalStreamRef(6.1.7 — ένα λεξικό ροής δεν πρέπει να φέρει/F,/FFilterή/FDecodeParms),pvaiOutputIntentScheme(6.2.2 — το OutputIntent/Sπρέπει να είναι/GTS_PDFA1),pvaiInfoXmpDateMismatch(6.7.3 — οι πληροφορίεςCreationDate/ModDate(Info) πρέπει επίσης να εμφανίζονται ωςxmp:CreateDate/xmp:ModifyDate),pvaiMarkInfoMissing(6.8.2.2 — το Επίπεδο Α απαιτεί/MarkInfoμε/Marked true),pvaiAnnotationApDictViolation(6.5.3 Cor.2 — το λεξικό σχολιασμού/APπρέπει να περιέχει μόνο/N),pvaiEmbeddedFileMissingAFRelationship(ISO 19005-3 Παράρτημα E.2 — κάθε συσχετισμένη προδιαγραφή αρχείου πρέπει να φέρει/AFRelationship), καιpvaiJpeg2000Violation(ISO 19005-2 6.2.8.3 — μια εικόνα JPEG2000 πρέπει να δηλώνει 1, 3 ή 4 στοιχεία)
Διορθώθηκε
- Η
ValidatePdfAδεν δίνει πλέον ψευδώς θετικά αποτελέσματαpvaiAnnotationFlagsViolationσε έγγραφα που χρησιμοποιούν όνομα πόρου γραμματοσειράς ενός γράμματος, όπως/Font << /F 5 0 R >>· η σάρωση της σημαίας/Fπεριορίζεται τώρα σε πλαίσιο σχολιασμού (το/Subtypeενός τύπου σχολιασμού), ταιριάζοντας με την τεκμηριωμένη συμπεριφορά (6.5.3) - Η
ValidatePdfAαναφέρει τώρα την απαίτηση συσχετισμένου αρχείου του PDF/A-3 ανά αρχείο: ένα έγγραφο επισημαίνεται μόνο όταν ένα ενσωματωμένο/Type /Filespecπου παραπέμπει σε ενσωματωμένη ροή μέσω του/EFστερείται/AFRelationship, αντί του προηγούμενου ελέγχου τύπου 'όλα-ή-τίποτα' για ολόκληρο το έγγραφο (ISO 19005-3 Παράρτημα E.2) - Προστέθηκε η καταργημένη (deprecated) ενέργεια
/SetStateστο σύνολο απαγορευμένων ενεργειών μαζί με την/SetOCGState, έτσι ώστε το όνομα ενέργειας του PDF Reference να εντοπίζεται άμεσα (6.6.1)
Version 1.63.0
Προστέθηκαν (Προστέθηκε)
- Προστέθηκαν
TPdf.MeasureTextκαιTPdf.MeasureTextWidth: μετρούν το εμφανιζόμενο πλάτος και ύψος κειμένου σε δεδομένη γραμματοσειρά και μέγεθος χωρίς να προσθέτουν περιεχόμενο στη σελίδα (μονάδες PDF, 1 μονάδα = 1/72 ίντσα), επιτρέποντας υπολογισμούς διάταξης και αυτόματη αναδίπλωση γραμμών επιπλέον τουAddText· παρέχεται από την αυτόνομη μονάδαFPdfMeasureως class helper
Αλλαγές (Τροποποιήθηκε)
- Τα
Demo\Delphi\MergePDF,Demo\CBuilder\MergePDFκαιDemo\Lazarus\MergePDFβελτιώθηκαν και για τα τρία IDE: εύρος σελίδων ανά αρχείο, προαιρετική διαδρομή εξόδου, αφαίρεση διπλότυπων, αρχείο καταγραφής εκτέλεσης, κουμπί ακύρωσης, σύνοψη συγχώνευσης· σελιδοδείκτες και μεταδεδομένα μεταφέρονται από την πρώτη πηγή - Τα demos
CreatePDFκαι για τα τρία IDE περιλαμβάνουν πλέον επιλογή European Text για κείμενο με τόνους Τσέχικα/Γαλλικά/Γερμανικά/Ισπανικά/Πορτογαλικά/Πολωνικά/Τουρκικά, επαληθεύοντας την επιλογή γραμματοσειράς και τη διαχείριση Unicode (το προηγούμενο δείγμαEuropeanTextενσωματώθηκε) - Αφαιρέθηκαν τα δείγματα
ExtractTextPagesκαιEuropeanText: η εξαγωγή σελίδα προς σελίδα τουExtractTextPagesκαλύπτεται από τις επιλογές εύρους σελίδων/διαχωριστικού στοExtractText· η πολύγλωσση απόδοση τουEuropeanTextενσωματώθηκε στοCreatePDF
Version 1.62.2
Διορθώθηκε (Διορθώθηκε)
- Επαναδημιουργήθηκαν οι κεφαλίδες C++Builder (
.hpp) για κάθε έκδοση και πλατφόρμα RAD Studio (Win32/Win64/Win64x); είχαν αποκλίνει από τις πηγές Pascal, αφήνοντας παλιές υπογραφές συναρτήσεων και μονάδες που έλειπαν να φτάνουν στους χρήστες C++Builder μέσω της διανομής πηγαίου κώδικα
Version 1.62.1
Διορθώθηκε (Διορθώθηκε)
- Αποκαταστάθηκε η μεταγλώττιση πηγαίου κώδικα σε RAD Studio 12 Athens και παλαιότερα: μια ανάθεση
TArray<Byte>στη διαδρομή επικύρωσης PDF/UA χρησιμοποιούσε έμμεση μετατροπή πίνακα διαθέσιμη μόνο στο Delphi 13, η οποία δεν μεταγλωττιζόταν σε παλαιότερα IDE
Version 1.62.0
Προστέθηκε (Προστέθηκε)
- Το
TPdf.RenderPageThumbnailαποδίδει οποιαδήποτε σελίδα βάσει index σε bitmap προσαρμοσμένο στην αναλογία διαστάσεων χωρίς να αλλάζει την τρέχουσα σελίδα του εγγράφου, τη φορτωμένη σελίδα ή να ενεργοποιεί τοOnPageChange
Διορθώθηκε (Διορθώθηκε)
- Το
TPdfThumbnailViewδεν οδηγεί πλέον τοPageNumberτου εγγράφου host κατά τη ζωγραφική; παλαιότερα κάθε επαναζωγράφιση φόρτωνε ξανά σελίδες, ενεργοποιούσεOnPageChangeκαι απέρριπτε τη σελίδα κειμένου, κάτι που μπορούσε να διαταράξει ένα συνδεδεμένοTPdfViewκαι να προκαλέσει βρόχους επαναζωγράφισης. Οι μικρογραφίες αποδίδονται πλέον μέσωRenderPageThumbnailχωρίς τέτοιες παρενέργειες - Η επικύρωση συμμόρφωσης PDF/X επιθεωρεί πλέον έγγραφα με cross-reference streams (PDF 1.6, τυπικά για PDF/X-4) και αντικείμενα αποθηκευμένα σε συμπιεσμένα object streams, αντί να αναφέρει τέτοια αρχεία συνολικά ως μη συμμορφούμενα; ο δείκτης
GTS_PDFXVersionδιαβάζεται τόσο από element form όσο και από RDF attribute form στο XMP - Η επικύρωση PDF/R αναφέρει πλέον
pvriInfoXmpMismatchόταν το Info dictionary και το XMP διαφωνούν σε Producer ή Creator; το ζήτημα είχε δηλωθεί προηγουμένως αλλά δεν αναφερόταν ποτέ - Οι form-fill timers παρακολουθούνται ανά αίτημα, ώστε ένα έγγραφο που εκτελεί πολλούς timers ταυτόχρονα (για παράδειγμα ένα JavaScript interval μαζί με το αναβόσβημα του field caret) να τους διατηρεί όλους αντί να χάνει κάθε timer εκτός από τον πιο πρόσφατο
- Η ζωγραφική του
TPdfViewκαι οι δημόσιες μέθοδοιRenderPage/RenderTileκρατούν πλέον το document render lock, σειριοποιώντας την απόδοση από worker thread του ίδιουTPdf(το PDFium δεν είναι thread-safe) - Το μη ASCII κείμενο που γράφεται στα metadata PDF/X, PDF/R και PDF/VT (ονόματα συνθηκών OutputIntent, Creator, Producer) κωδικοποιείται πλέον ως UTF-16BE string σύμφωνα με ISO 32000-1 §7.9.2.2 αντί για raw UTF-8, το οποίο οι συμβατοί readers θα διάβαζαν λανθασμένα
- Οι helpers συμμόρφωσης διαβάζουν σωστά ενσωματωμένα metadata streams των οποίων το
/Lengthείναι indirect reference, φορτώνουν source bytes μεReadBuffer(ώστε ένα short read να αποτυγχάνει καθαρά) και απορρίπτουν αρνητικό offsetstartxrefαντί να διακινδυνεύουν ανάγνωση εκτός ορίων
Version 1.61.0
Άλλαξε (Τροποποιήθηκε)
- Διορθώσεις στις δηλώσεις FFI/ABI που ίσως απαιτήσουν επαναμεταγλώττιση κώδικα ο οποίος υλοποίησε τα επηρεαζόμενα callbacks: το callback form-fill
FFI_OpenFileφέρει πλέονcdecl(Win32 stack convention) και η παράμετροςvalueτωνFPDFAnnot_SetStringValueκαιFPDFAttachment_SetStringValueείναι πλέονFPDF_WIDESTRING(UTF-16LE) ώστε να ταιριάζει με τα headers του PDFium - Τα callbacks progressive-load
FX_FILEAVAIL.IsDataAvailκαιFX_DOWNLOADHINTS.AddSegmentδέχονται πλέον offsetssize_tκαι τοsize_tέχει πλάτος δείκτη στο Free Pascal / Lazarus Win64 (προηγουμένως αποκόπτονταν σε 32-bit), διορθώνοντας τα API calls διαθεσιμότητας δεδομένων και ταoutsize_tστο FPC Win64
Διορθώθηκε (Διορθώθηκε)
- Ασφάλεια μνήμης: χρήση μετά την απελευθέρωση του form-fill timer κατά την καταστροφή ενός
TPdfμε ενεργό AcroForm caret· διπλόFPDF_CloseDocumentστη διαδρομή σφάλματος τουImportNPagesToOne· εξαιρέσεις Pascal που διαφεύγουν από τα callbacksFPDF_FILEWRITE/FPDF_FILEACCESSπέρα από το όριο C κατά την αποθήκευση και την εισαγωγή JPEG· και υπερχείλιση ακεραίου στην εξαγωγή κειμένου κατά την ανάγνωση από αρχικό δείκτη έως το τέλος της σελίδας TPdfFuture<T>παραδίδει πλέον αξιόπιστα το callback αποτελέσματος· η απάντηση προηγουμένως σχεδόν πάντα χανόταν (και μπορούσε να αγγίξει νήμα που είχε ελευθερωθεί) επειδή το worker απελευθέρωνε τον εαυτό του πριν εκτελεστεί η ουρά της απάντησης- Η έξοδος PDF/A, PDF/X, PDF/E, PDF/R, PDF/VT και PDF/UA γράφει πλέον εγγραφές cross-reference που είναι ακριβώς 20 bytes, όπως απαιτεί το ISO 32000-1 §7.5.4
- Η έγχυση δεικτών προτύπων δεν καταστρέφει πλέον ένα dictionary όταν το κλειδί που αφαιρέθηκε (για παράδειγμα
/Trapped) ήταν η τελευταία καταχώριση, κάτι που προηγουμένως κατάπινε το κλείσιμο>>και παρήγαγε malformed object - Τα streams ICC profile του OutputIntent δηλώνουν πλέον το απαιτούμενο πλήθος component
/Nγια PDF/X και PDF/VT (ήδη υπήρχε για PDF/A)· τα κρυπτογραφημένα source documents αποκρυπτογραφούνται πριν γίνει έγχυση των markers PDF/X, PDF/E, PDF/R, PDF/VT και PDF/UA, ώστε η έξοδος να είναι έγκυρη αντί για σιωπηρά κατεστραμμένη - Το BOM xpacket UTF-8 στο παραγόμενο XMP εκπέμπεται ως ακριβή bytes, διορθώνοντας τη φθορά σε εγκαταστάσεις Delphi των οποίων η ANSI code page δεν είναι Latin-1· τα incremental-update trailers διατηρούν πλέον την αναφορά
/Infoτου εγγράφου - Το
SaveAsμε συμπίεση δεν περικόπτει πλέον streams των οποίων το/Lengthείναι indirect reference και οι ανακατασκευασμένοι cross-reference tables χρησιμοποιούν πλέον εγγραφές 20 bytes, πραγματικούς generation numbers και απορρίπτουν το παλιό pointer/Prev - Η validation συμμόρφωσης διαβάζει πλέον τα XMP version markers μορφής attribute για PDF/E και PDF/X, ώστε να αναγνωρίζονται τα αρχεία PDF/X-4 που έχουν serialised ως attribute, απαιτεί το ακριβές αναγνωριστικό
PDF/E-1, διαβάζει σωστά metadata streams με indirect/Lengthκαι δεν ταιριάζει πλέον λανθασμένα ένα key/IDή/StructTreeRootενός structure element όταν ελέγχει το trailer του PDF/UA· ένα malformed offsetstartxrefδεν προκαλεί πλέον range error TPdfThumbnailView: η τελευταία σελίδα είναι πλέον προσβάσιμη με το scrollbar, η τρέχουσα σελίδα του host document αποκαθίσταται αφού ζωγραφιστούν τα thumbnails και ο τυπικός χειρισμός mouse-leave αποστέλλεται ξανά- Τα grayscale page και image bitmaps δεν αποδίδονται πλέον με λανθασμένη palette· το
TPdfViewδεν μένει πλέον με dangling reference όταν πρώτα ελευθερώνεται τοTPdfτου - Αναφορές preflight: το HTML αποθηκεύεται ως UTF-8 ώστε να ταιριάζει με το δηλωμένο charset του και το JSON string escaping παράγει σωστές ακολουθίες
\uγια μη ASCII χαρακτήρες στο Free Pascal - Builds trial: το dialog υπενθύμισης trial εμφανίζεται πλέον αντί να καταστέλλεται πριν προλάβει να εμφανιστεί
TPdfStreamAdapterαπορρίπτει πλέον streams μεγαλύτερα από 4 GiB με σαφές σφάλμα αντί να περικόπτει σιωπηρά το length που περνά στο PDFium
Version 1.60.1
Άλλαξε (Τροποποιήθηκε)
- Τα demos AccessibilityReader για Delphi, Lazarus και C++Builder τρέχουν πλέον read-aloud πάνω στο
TPdfReadingSession: κάθε σελίδα συγκροτείται σε ένα spoken chunk με τοBuildSpokenTextFromWords, οι θέσεις λέξης του SAPI τροφοδοτούν τοFeedSpokenPosition, και η συνεδρία προχωρά σελίδες και κινεί τον word cursor της προβολής, αντικαθιστώντας τη χειροκίνητη ορχήστρωση που είχε πριν κάθε demo - Η παρακολούθηση karaoke σε επίπεδο λέξης στα demos λειτουργεί πλέον και όταν NVDA είναι η μηχανή ομιλίας: το
EstimatePacingρυθμίζει τον reading cursor με βάση τον χρόνο ομιλίας που έχει περάσει, ενώ παλαιότερα το NVDA διάβαζε φωναχτά χωρίς καθόλου παρακολούθηση λέξεων - Η Παύση και η Συνέχιση στα demos λειτουργούν πλέον και με NVDA: το
ResumeRestartsChunkξαναδιαβάζει την τρέχουσα σελίδα από την αρχή όταν γίνεται Resume, ενώ το SAPI διατηρεί την εγγενή παύση και συνέχισή του επιτόπου
Version 1.60.0
Προστέθηκε (Προστέθηκε)
- Ζωντανή απόδοση για χαμηλή όραση στο
TPdfView: οι νέες επιλογές απόδοσηςreInvertκαιreNightDuotoneξαναχρωματίζουν κάθε αποδομένο tile σελίδας (πλήρης αντιστροφή χρωμάτων ή παλέτα νυχτερινού duotone) πριν σχεδιαστούν τα overlays αναζήτησης, επιλογής, ανάγνωσης και word cursor, φέρνοντας τους υπάρχοντες μετασχηματισμούς χρωμάτων bitmap στον διαδραστικό viewer και για διατάξεις μίας σελίδας και διπλής σελίδας; η εναλλαγή των επιλογών προκαλεί άμεσο repaint NightDuotoneInkκαιNightDuotonePaperρυθμίζουν τη νυχτερινή παλέτα, με προεπιλογή κεχριμπαρένιο κείμενο σε μαύρη σελίδα; τοreInvertυπερισχύει όταν είναι ενεργές και οι δύο επιλογές
Version 1.59.0
Προστέθηκε (Προστέθηκε)
TPdfReadingSession: ένα component ορχήστρωσης read-aloud ανεξάρτητο από τη μηχανή ομιλίας. Διατηρεί τον chunk cursor, τον word cursor και την κατάσταση αναπαραγωγής (Play/PlayFrom/Pause/Resume/Stop), προχωρά μέσα από τα φορτωμένα chunksTPdfSpokenTextκαθώς ο host αναφέρει ότι η μηχανή είναι αδρανής μέσω τουTick, μεταφράζει τα offsets του spoken text πίσω σε χαρακτήρες σελίδας και οδηγεί αυτόματα έναν συνδεδεμένο word cursor τουTPdfView; ο host συνδέει οποιαδήποτε speech engine μέσω τουOnSpeakκαι των request events ακύρωσης / παύσης / συνέχισης, έτσι ώστε η βιβλιοθήκη να μην συνδέει καμία speech API από μόνη τηςFeedSpokenPositionκαταναλώνει θέσεις λέξης της μηχανής (όπως το SAPIStatus.InputWordPosition); τοEstimatePacingμεEstimatedWordsPerMinuteρυθμίζει μηχανές χωρίς σήμα θέσης; τοResumeRestartsChunkξαναδιαβάζει το τρέχον chunk για μηχανές χωρίς εγγενή παύσηOnChunkChange,OnWordChangeκαιOnFinishedενεργοποιούνται μόνο σε πραγματικές αλλαγές, και μια αποδεσμευμένη συνδεδεμένη προβολή αποσυνδέεται αυτόματα, ώστε ο κώδικας του host να παραμένει χωρίς flicker και ασφαλής από κρασαρίσματα
Version 1.58.0
Προστέθηκε (Προστέθηκε)
- Το
EstimateSpokenWordIndexεκτιμά ποια λέξη προφέρει μια μηχανή ομιλίας από τον χρόνο που έχει περάσει και έναν ρυθμό λέξεων ανά λεπτό, δίνοντας στις μεγαλύτερες λέξεις αναλογικά περισσότερο χρόνο, ώστε οι μηχανές που δεν αναφέρουν θέση λέξης (όπως ο NVDA controller client) να μπορούν ακόμη να οδηγούν τον word-level reading cursor; ο caller δίνει τον χρόνο που έχει περάσει, έτσι ώστε η ρουτίνα να μένει χωρίς ρολόι και κατάλληλη για unit tests
Version 1.57.0
Προστέθηκε (Προστέθηκε)
- Συναρμολόγηση spoken text με χαρτογράφηση δύο πεδίων για παρακολούθηση read-aloud: το
BuildSpokenTextFromWordsκαι τοSpokenTextAppendχτίζουν το string που δίνεται σε μια text-to-speech engine από word boxes της σελίδας ενώ καταγράφουν έναν πίνακα spans, και τοSpokenToPageCharμεταφράζει ένα spoken offset που αναφέρει η μηχανή (όπως το SAPIStatus.InputWordPosition) πίσω στον δείκτη χαρακτήρα της σελίδας, ώστε η παρακολούθηση highlight σε επίπεδο λέξης να μένει σωστή όταν το spoken text δεν είναι ολόκληρο το κείμενο της σελίδας (παραλειπόμενες περιοχές, ανάγνωση ανά μονάδα, παρακάμψεις προφοράς) TPdfSpokenTextκαιTPdfSpokenSpanτύποι μεταφέρουν το spoken string μαζί με τα αρχικά εύρη σελίδας από τα οποία χτίστηκε; τα offsets σε παρεμβαλλόμενα διαχωριστικά επιλύονται στην επόμενη αντιστοιχισμένη λέξη και τα offsets πέρα από τα mapped runs αναφέρουν ότι δεν υπάρχει αντιστοίχιση
Version 1.56.9
Προστέθηκε
Demo\Delphi\PreflightReportπροσθέτει μια προεπισκόπηση Action Plan που συμπυκνώνει τα πρότυπα που δεν πέρασαν, τις προτεραιότητες, τις επόμενες ενέργειες, τους κωδικούς ζητημάτων και τις συστάσεις σε μια λίστα αποκατάστασηςDemo\Delphi\PreflightReportCliδέχεταιplan/actionplanως format εξόδου για εκτελέσεις ενός αρχείου και batch, γράφοντας την ίδια λίστα αποκατάστασης σε text file
Τροποποιήθηκε
- Και τα δύο demos Delphi PreflightReport εμφανίζουν πλέον μετρητές κατάστασης pass / action / review μαζί με το σύνολο προτύπων και ζητημάτων
Version 1.56.8
Τροποποιήθηκε
ViewerInteractionLabπεριλαμβάνει πλέον controls για page-jump, χειροκίνητα controls zoom, καταγραφή συντεταγμένων με click μέσωDeviceToPage/PageToDevice, και σαφέστερο interaction log για ελέγχους επιλογής, αναζήτησης, περιστροφής και πλοήγησης- Οι σελίδες readme του
ViewerInteractionLabτεκμηριώνουν πλέον τη νέα ροή αλληλεπίδρασης σε όλο το τοπικοποιημένο σύνολο demo readme
Version 1.56.7
Προστέθηκε
AccessibilityWorkbenchCliαντιστοιχίζει κάθε εύρημα που ενεργοποιείται στα Success Criteria του WCAG 2.1 και στην περιοχή διάταξης του ISO 14289-1 (PDF/UA-1) και εμφανίζει μια ενότητα κάλυψης προτύπων στις αναφορέςAccessibilityWorkbenchCliυπολογίζει ένα τεκμηριωμένο σκορ προσβασιμότητας 0-100 με δημοσιευμένο rubric ποινών και μπάντες excellent / good / needs work / poor, ορατές ανά αρχείο και ως μέσος όρος batchAccessibilityWorkbenchCliδέχεταιfailscore=Nγια να αποτυγχάνει η εκτέλεση (exit code 2) όταν οποιοδήποτε αρχείο σκοράρει κάτω από NAccessibilityWorkbenchCliγράφει ένα SARIF 2.1.0 log όταν το όνομα της batch summary τελειώνει σε.sarif, με έναν κανόνα ανά είδος ευρήματος που φέρει τις ετικέτες WCAG 2.1 και PDF/UA για εισαγωγή σε CI και code-scanningAccessibilityWorkbenchCliπροσθέτει μια εντολήversionπου εκτυπώνει την συνδεδεμένη έκδοση PDFium Delphi Component
Version 1.56.6
Προστέθηκε
IntakeWorkbenchCliυπολογίζει ένα forensic hash SHA-256 για κάθε αρχείο εισόδου (υποβαθμίζοντας σεunavailableσε compilers χωρίςSystem.Hash) και το αναφέρει σε κάθε formatIntakeWorkbenchCliδέχεταιpasswords=file.txtγια να δοκιμάζει το ξεκλείδωμα εγγράφων που απαιτούν κωδικό από μια λίστα υποψηφίων, καταγράφοντας το index του ταιριαστού υποψηφίου χωρίς ποτέ να γράφει το κείμενο του κωδικούIntakeWorkbenchCliδέχεταιcopyto=dirγια να δρομολογεί κάθε ελεγμένο αρχείο σε έναν υποφάκελο ανά επίπεδο κινδύνου, μετατρέποντας τον auditor σε intake sorterIntakeWorkbenchCliγράφει ένα SARIF 2.1.0 log όταν το όνομα της batch summary τελειώνει σε.sarif, με έναν κανόνα ανά flag κινδύνου και ένα αποτέλεσμα ανά επισημασμένο αρχείο για εισαγωγή σε CI και code-scanningIntakeWorkbenchCliπροσθέτει μια εντολήversionπου εκτυπώνει την συνδεδεμένη έκδοση PDFium Delphi Component
Version 1.56.5
Προστέθηκε
IntakeWorkbenchCliπαράγει πλέον προτεινόμενες ενέργειες μετά το intake όπως accept, request-password, manual-review, quarantine και deduplicate, και εκθέτει μετρητές ενεργειών στις batch summariesAccessibilityWorkbenchCliπαράγει πλέον προτεινόμενες ενέργειες αποκατάστασης όπως pass-through, remediate-tags, run-ocr, remediate-semantics και manual-review, με αντίστοιχους μετρητές ενεργειών batch
Τροποποιήθηκε
- Και τα δύο CLI demos επιπέδου εργαλείου εμφανίζουν την προτεινόμενη ενέργεια σε console, text, HTML, JSON και CSV output, ώστε οι χειριστές batch να μπορούν να δρομολογούν αρχεία χωρίς post-processing πεδία κινδύνου ή κατάστασης
Version 1.56.4
Διορθώθηκε
- Η ανάγνωση annotations, bookmarks ή link annotations σε βρόχο δεν διαρρέει πλέον τα text strings του προηγούμενου στοιχείου: τα result records
TPdfAnnotation,TBookmarkκαιTLinkAnnotationμηδενίζονται τώρα με αρχικοποίηση aware σε managed types αντί για raw memory zeroing, έτσι ώστε έγγραφα με πολύ μεγάλους αριθμούς text-bearing annotations να μην φουσκώνουν πλέον τη μνήμη διεργασίας για όλη τη διάρκεια ζωής της εφαρμογής - Η καταστροφή ενός
TPdfπου είχε καταχωρίσει handlerOnUnsupportedFeatureτον αποσυνδέει πλέον από το process-global callback του PDFium, ώστε ένα μεταγενέστερο document load από άλληTPdfinstance χωρίς δικό της handler να μην μπορεί πλέον να κατευθυνθεί στο ελεύθερο component (use-after-free)
Version 1.56.3
Διορθώθηκε
AccessibilityWorkbenchCliδεν μετρά πλέον τις κενές σελίδες ως heuristic reading-order pages, έτσι ώστε τα tagged documents με κενές separator pages να διατηρούν τη σωστή κατάσταση προσβασιμότητας; οι σελίδες χωρίς αναγνώσιμο περιεχόμενο αναφέρονται πλέον ξεχωριστάAccessibilityWorkbenchCliη ανίχνευση table-header δεν αποδίδει πλέον σε έναν εξωτερικό πίνακα ταTHcells που ανήκουν σε φωλιασμένο πίνακα, και τα ονόματα form-field και font αντιστοιχίζονται με διάκριση πεζών-κεφαλαίων ώστε τα διακριτά πεδία να μην συγχωνεύονταιIntakeWorkbenchCliτα URL host inventories αφαιρούν πλέον userinfo, query και fragment μέρη, ώστε ένας κατασκευασμένος σύνδεσμος όπωςtrusted.example@evil.exampleνα αποδίδεται στον πραγματικό host, και οι στόχοιmailto:συνεισφέρουν το domain τους αντί να είναι αόρατοιIntakeWorkbenchCliοι αναφορές Markdown κάνουν escape τα backticks σε paths, hosts και attachment names που ελέγχονται από εισβολέα, ώστε η μορφοποίηση της αναφοράς να μην μπορεί να σπάσει από μέσα από ένα document
Τροποποιήθηκε
AccessibilityWorkbenchCliαναφέρει τα failures του font-scan και του form-field-scan ως ξεχωριστούς μετρητές, σημειώνει μη ενσωματωμένες γραμματοσειρές που έχουν επίσης ενσωματωμένες παρουσίες, και περιορίζει τις μεγάλες λίστες γραμματοσειρών με ρητό marker αποκοπήςIntakeWorkbenchCliοι batch summaries προσθέτουν μια στήλη count για attachment-annotation, και η απογραφή annotations ανά σελίδα περιορίζεται σε 20000 annotations ανά σελίδα με το όριο να αναφέρεται σε κάθε format
Version 1.56.2
Προστέθηκε
AccessibilityWorkbenchCliελέγχει πλέον embedding γραμματοσειρών, tooltips form-field, πηγή reading order, document outlines, δομή πινάκων και λιστών, ύποπτο εναλλακτικό κείμενο και πλουσιότερες λεπτομέρειες ελέγχου ανά σελίδα, ώστε οι batch αναφορές προσβασιμότητας να εντοπίζουν περισσότερους στόχους αποκατάστασηςIntakeWorkbenchCliαναφέρει πλέον όρια page scan, ενέργειες launch και remote-go-to, inventories URI host, μετρητές annotations, μη υποστηριζόμενα features του PDFium, διπλά document identifiers και διευρυμένα risk flags για αυτοματοποιημένο intake review
Τροποποιήθηκε
IntakeWorkbenchCliδέχεταιmaxpages=Nσε single-file και batch modes για να περιορίζει τα page scans ανά document, ενώ εξακολουθεί να ολοκληρώνει τα metadata, attachments, script, XFA, signature και risk reporting
Version 1.56.1
Διορθώθηκε
- Το φόρτωμα μιας παλαιότερης
pdfium.dllπου λείπει ένα νεότερο export αποτυγχάνει πλέον καθαρά: η διαδρομή αποτυχίας επαναφέρει κάθε δεσμευμένο API entry point, ώστε οι έλεγχοιAssigned()(για παράδειγμα στοFPDF_GetLastErrorή στοFPDF_GetSecurityHandlerRevision) να αναφέρουν ότι η βιβλιοθήκη δεν έχει φορτωθεί αντί να καλούν το ήδη unloaded module και να καταρρέουν με access violation UnloadLibraryκαθαρίζει πλέον όλα τα bindings του PDFium API αντί μόνο τα προαιρετικά βοηθητικά του V8, ώστε να μην επιβιώνουν παλιές function pointers μετά την απελευθέρωση της DLL
Version 1.56.0
Προστέθηκε
- Ο word-level karaoke reading cursor στο
TPdfView: τοTrackReadingWordAtχαρτογραφεί το current-word character offset μιας text-to-speech engine (όπως το SAPIStatus.InputWordPosition) πάνω στα page word boxes, επισημαίνει τη λέξη που το περιέχει ως ξεχωριστό overlay πάνω από το reading block, το φέρνει σε προβολή και επιστρέφει το word index, ώστε η προφορική λέξη να ανάβει καθώς η φωνή προχωρά SetReadingWordκαιClearReadingWordορίζουν ή καθαρίζουν απευθείας την επισημασμένη λέξη από έναTPdfWordBox; η επανεγκατάσταση της ίδιας λέξης δεν κάνει τίποτα, έτσι ώστε η παρακολούθηση ανά λέξη να μην προκαλεί ποτέ flicker στην προβολήReadingWordColorκαιReadingWordFollowελέγχουν το χρώμα του word cursor και το αν η προβολή auto-scrolls την προφορική λέξη μέσα στο οπτικό πεδίο
Version 1.55.2
Διορθώθηκε
- Το ViewerInteractionLab δίνει πλέον στις γραμμές της εργαλειοθήκης περισσότερο κάθετο χώρο, ώστε τα Open PDF, Create Sample, navigation, search και selection controls να μην αλληλεπικαλύπτονται πλέον κάτω από κλιμακωμένες γραμματοσειρές
Version 1.55.1
Διορθώθηκε
- Το ViewerInteractionLab τοποθετεί πλέον τα Prev, Next και Rotate στη δεύτερη γραμμή της εργαλειοθήκης, αποφεύγοντας την επικάλυψη εκκίνησης με τα Open PDF και Create Sample
Version 1.55.0
Προστέθηκε
- Γέφυρα από word σε selection για ανάγνωση "read it, select it": τα
TPdfView.SelectWordBoxκαιSelectWordSpanεπιλέγουν ένα μόνο word box ή ένα same-page span word boxes (απόPageWordBoxes) με βάση τα character ranges τους, ώστε η λέξη ή η γραμμή που διαβάζεται αυτή τη στιγμή να μπορεί επίσης να επιλεγεί και να αντιγραφεί WordBoxIndexAtCharIndexχαρτογραφεί έναν δείκτη χαρακτήρα πίσω στο word box που τον περιέχει, οδηγώντας το word-by-word highlight καθώς προχωρά ο TTS reading cursor
Version 1.54.0
Προστέθηκε
- Accessors για voice form-filling που διαβάζουν το focused field απευθείας από τον λογικό cursor: τα
FocusedFormFieldValue,FocusedFormFieldNameκαιFocusedFormFieldDetailsσταTPdfκαιTPdfViewαναφέρουν την τιμή του τρέχοντος πεδίου, το ανθρώπινα αναγνώσιμο όνομα (/TUtooltip, με επιστροφή στο/T) και το πλήρεςTPdfFormFieldInfo(τύπος, flags, options) — όλα όσα χρειάζεται να ανακοινώσει ένα voice UI καθώς κινείται μέσα σε μια φόρμα
Διορθώθηκε
FocusedFormFieldValueδιαβάζει το πεδίο μέσω τουFocusedFormFieldIndexαντί του pdfium interactive focus, ώστε ένα voice-driven form filler να παίρνει τη σωστή τιμή ακόμη κι όταν δεν υπάρχει on-screen caret (το υπάρχονFocusedFormFieldTextεξακολουθεί να αντικατοπτρίζει το pdfium focus και δεν αλλάζει)
Version 1.53.0
Προστέθηκε
- Υποστήριξη για word-level highlighting: τα
TPdf.PageWordBoxesκαιTPdfView.PageWordBoxesχωρίζουν μια σελίδα σε recordsTPdfWordBox, το καθένα με το κείμενο της λέξης, το εύρος χαρακτήρων της και ένα page-space bounding rectangle, ώστε ένας accessibility reader να μπορεί να επισημαίνει κάθε προφορική λέξη με τη σειρά ("karaoke" reading) περνώντας το rectangle στοSetReadingHighlight BuildWordBoxesεκθέτει το βήμα tokenizer μόνο του, μετατρέποντας το κείμενο της σελίδας σε word boxes με εύρη χαρακτήρων
Version 1.52.0
Προστέθηκε
- Οι helpers low-vision rendering
InvertPdfBitmap,GrayscalePdfBitmapκαιDuotonePdfBitmapεφαρμόζουν in-place μετασχηματισμούς χρώματος σε ένα αποδομένο bitmap 32-bit, ώστε ένας accessibility reader να μπορεί να παρουσιάζει σελίδες με αντιστροφή / dark-mode, grayscale ή σε ένα προσαρμοσμένο δύο-χρωμο σχήμα (για παράδειγμα σκοτεινό φόντο με ανοιχτό κείμενο) για χρήστες χαμηλής όρασης - Οι μετασχηματισμοί εκτελούνται ανά pixel και συμπεριφέρονται ακριβώς το ίδιο σε VCL και Lazarus/LCL, αφήνοντας ανέπαφες τις διαστάσεις του bitmap
Version 1.51.0
Προστέθηκε
- Sentence-level reading units για assistive listen-reading: τα
TPdf.ReadingUnits,TPdf.DocumentReadingUnitsκαιTPdfView.ReadingUnitsγραμμικοποιούν το ρεύμα αναγνώσιμου περιεχομένου σε ταξινομημένα recordsTPdfReadingUnitμεγέθους πρότασης — το καθένα φέρει το κείμενο που θα ειπωθεί μαζί με το σημασιολογικό του είδος, τη σελίδα, τα rectangles highlight και το language tag, ώστε μια εφαρμογή screen-reader να μπορεί να περνά από μια σελίδα ή ολόκληρο το έγγραφο ένα spoken unit τη φορά - Σημασιολογική πλοήγηση με το
NextReadingUnitOfKind, που επιτρέπει σε ένα voice UI να πηγαίνει στο επόμενο ή προηγούμενο heading, figure, list item ή table cell χωρίς να ψάχνει χειροκίνητα το ρεύμα BuildReadingUnitsμετατρέπει απευθείας οποιοδήποτεTPdfContentFragmentsσε reading units: τα headings και οι περιγραφές figure/alt μένουν ενιαίες ενώ οι παράγραφοι χωρίζονται σε όρια προτάσεων, οι τελείες σε δεκαδικούς αριθμούς διατηρούνται και ο reading cursor είναι ένας απλός δείκτης που ανήκει στον caller
Version 1.50.0
Προστέθηκε
- Το
ValidatePdfAμπορεί πλέον να επιθεωρεί έγγραφα PDF 1.5+ που αποθηκεύουν το catalog, το OutputIntent ή άλλα dictionaries μέσα σε compressed object streams (/Type /ObjStm) Τα object streams αποσυμπιέζονται και τα objects που περιέχουν επιλύονται, έτσι ώστε αυτά τα έγγραφα να επικυρώνονται με βάση την αξία τους αντί να αναφέρονται ως ελλιπή σε PDF/A markers
Version 1.49.5
Διορθώθηκε
- Το
ValidatePdfAδεν αναφέρει πλέον ως πρόβλημα την απουσία της περιγραφήςpdfaExtension:schemasΤο σχήμα αναγνωριστικού PDF/A (pdfaid) είναι ήδη γνωστό, άρα ούτε το veraPDF ούτε τα PDF/A-2/-3 απαιτούν περιγραφή extension-schema γι' αυτό και η επισήμανση της απουσίας του εμφάνιζε λανθασμένα κάθε συμβατό τρίτου μέρους PDF/A Τα έγγραφα που παράγει η ίδια η βιβλιοθήκη εξακολουθούν να περιλαμβάνουν την περιγραφή
Version 1.49.4
Διορθώθηκε
- Το
ValidatePdfAεντοπίζει πλέον το επίπεδο συμμόρφωσης όταν ο αναγνωριστικός δείκτης PDF/A γράφεται ως XML attributes (pdfaid:part="2") αντί για child elements, ώστε τα έγγραφα σε μορφή attribute να μην αναφέρονται πλέον με άγνωστο επίπεδο Αυτό διορθώνει επίσης μια αλυσίδα όπου ένα μη ανιχνευμένο επίπεδο έκανε τους part-specific ελέγχους να πέφτουν πίσω στους αυστηρούς κανόνες PDF/A-1 και να επισημαίνουν λανθασμένα embedded files και transparency που επιτρέπουν τα PDF/A-2 και PDF/A-3
Version 1.49.3
Διορθώθηκε
- Το
ValidatePdfAεπιθεωρεί πλέον έγγραφα PDF 1.5+ των οποίων τα cross-reference data είναι cross-reference stream (αρχεία που δεν έχουν το keywordtrailer) Το επίπεδο συμμόρφωσης, το trailer/IDκαι τα υπόλοιπα markers διαβάζονται από το dictionary του cross-reference stream, ώστε αυτά τα έγγραφα να επικυρώνονται με βάση την αξία τους αντί να αναφέρονται ως πλήρως μη συμβατά
Version 1.49.2
Διορθώθηκε
- Το
ValidatePdfAδεν αναφέρει πλέον ψευδές issue μη ενσωματωμένης γραμματοσειράς σε έγγραφα που ενσωματώνουν όλες τις γραμματοσειρές τους Η προηγούμενη heuristic συνέκρινε τον αριθμό των tokens/FontDescriptorμε τα embedded font programs, αλλά κάθε embedded font συνεισφέρει δύο tokens/FontDescriptor(το reference του font dictionary συν το descriptor object), άρα κάθε αρχείο με embedded γραμματοσειρές επισημαινόταν λανθασμένα Ο έλεγχος αναφέρει πλέον μόνο ένα έγγραφο που αναφέρεται σε γραμματοσειρές αλλά δεν ενσωματώνει καθόλου font program, όπως και η αντίστοιχη διόρθωση τουValidatePdfUa
Version 1.49.1
Διορθώθηκε
- Η έξοδος PDF/A επικυρώνεται πλέον ως συμβατό PDF/A-1b και PDF/A-1a με το veraPDF: το embedded sRGB OutputIntent ICC profile stream (που αναφέρεται από το
/DestOutputProfile) δηλώνει πλέον το απαιτούμενο πλήθος component/N(3 για το ενσωματωμένο RGB profile), όπως ορίζει το ISO 19005-1 6.2.3.2 Τα έγγραφα που παράγει τοSaveAsPdfAαποτύγχαναν παλαιότερα τον αυστηρό έλεγχο PDF/A-1 επειδή το stream του profile προορισμού παρέλειπε το/NΗ τιμή προκύπτει από το ICC profile header, έτσι ώστε και ένα CMYK ή Gray profile που δίνει ο caller να παίρνει σωστά τον αριθμό
Version 1.49.0
Διορθώθηκε
ValidatePdfUaδεν αναφέρει πλέον ψευδώς ότι λείπει η XMP identification σε συμβατά tagged PDFs — το PDF/UA identifier (pdfuaid:part), τοdc:title, οι XMP dates και το trailer/IDδιαβάζονται πλέον από τα αρχικά bytes του εγγράφου αντί από το ξανασώσιμο αντίγραφο, το οποίο παραλείπει το XMP stream/Metadataκαι, για αρχεία cross-reference-stream, το trailer/ID- Ο έλεγχος embedding γραμματοσειρών του
ValidatePdfUaδιορθώθηκε ώστε ένα έγγραφο που ενσωματώνει όλες τις γραμματοσειρές του να μην αναφέρεται πλέον ότι έχει μη ενσωματωμένες γραμματοσειρές Εντοπίζει πλέον μόνο ένα έγγραφο που αναφέρεται σε γραμματοσειρές αλλά δεν ενσωματώνει καθόλου font program ValidatePdfUaδέχεται πλέον ένα structure elementFormulaτου οποίου το εναλλακτικό κείμενο δίνεται μέσωActualTextαντί για entryAlt(ISO 14289-1 §7.7), σε συμφωνία με τον υπάρχοντα κανόνα γιαFigure
Version 1.48.0
Προστέθηκε
- Προγραμματική επιλογή κειμένου στο
TPdfView: ταSelectTextRange(ανά σελίδα και εύρος χαρακτήρων) καιSetSelection(με ρητά per-page ranges) επιλέγουν κείμενο από κώδικα — για παράδειγμα για να διαβαστεί και να επισημανθεί ένα απόσπασμα Και τα δύο κάνουν repaint και ενεργοποιούν τοOnSelectionChangeόταν αλλάζει η επιλογή ΤοSelectionRangesδιαβάζει την τρέχουσα επιλογή ως per-page character ranges και τοSelectionRectanglesεπιστρέφει τα rectangles της σε συντεταγμένες σελίδας για προσαρμοσμένο highlighting ή scroll-to
Version 1.47.0
Προστέθηκε
- Πλοήγηση πεδίων φόρμας για voice-driven form filling, τόσο στο
TPdfόσο και στοTPdfView:FormFieldTabOrder,FocusedFormFieldIndex,FocusFormField,FocusNextFormField,FocusPreviousFormField,ClearFormFieldFocusκαιFocusedFormFieldTextΑυτά μετακινούν έναν λογικό field cursor πάνω στα widget fields της σελίδας με τη σειρά tab order (τυλίγοντας στα άκρα), ώστε ένας βοηθητικός αναγνώστης να μπορεί να περάσει τη φόρμα, να αναγγείλει κάθε πεδίο μέσω τουFormFieldInfo[Index].AlternateName(το /TU tooltip) και να το συμπληρώσει μέσω τουFormField[Index] - Το event
TPdfView.OnFormFieldFocusChange, που ενεργοποιείται όταν ο field cursor μετακινείται (μεταφέροντας το νέο index πεδίου, ή -1 όταν καθαριστεί)
Version 1.46.0
Προστέθηκε
- Ροή περιεχομένου για assistive listen-reading: τα
TPdf.ReadableContent,TPdf.ReadablePageContent,TPdf.DocumentReadableContentκαιTPdfView.ReadableContentεπιστρέφουν μια ταξινομημένη λίστα semanticTPdfContentFragmentστοιχείων, το καθένα με το προφορικό κείμενο (πραγματικά glyphs ήActualText/Alt για figures), είδος fragment (heading με level, paragraph, figure, list item, table cell, link, plain), γλώσσα, 1-based σελίδα και block plus per-line highlight rectangles Τα tagged PDFs γραμμικοποιούνται με τη λογική σειρά ανάγνωσης από το structure tree ενώ οι untagged σελίδες ακολουθούν τη σειρά render, ώστε κάθε document να μπορεί να διαβαστεί φωναχτά - Συγχρονισμένο reading highlight στο
TPdfView: ταSetReadingHighlight,ClearReadingHighlightκαι το δημοσιευμένοReadingHighlightColorεπισημαίνουν το block που διαβάζεται αυτή τη στιγμή, πάνω από τα overlays αναζήτησης και επιλογής - Νέοι δημόσιοι τύποι
TPdfContentFragment,TPdfContentFragments,TPdfReadableContent,TPdfContentFragmentKindκαιTPdfReadingOrderSource, και ο νέος helperClassifyStructType
Version 1.45.0
Προστέθηκε
ValidatePdfUaπερπατά πλέον και το ζωντανό tagged structure tree και αναφέρει τρεις content violations με υψηλή βεβαιότητα που το byte-level scanning δεν μπορεί να εντοπίσει: ένα elementFigureχωρίς entry Alt ή ActualText (ISO 14289-1, 7.3), ένα elementFormulaχωρίς attribute Alt (7.7) και ένα elementNoteπου δεν έχει μοναδικό ID (7.9) Τρεις νέες τιμέςTPdfUaValidationIssueτα εκθέτουν αυτά:pvuaiFigureMissingAlt,pvuaiFormulaMissingAltκαιpvuaiNoteMissingIdΤο tree walk παραλείπεται για untagged documents- Ο νέος δημόσιος helper
ValidatePdfUaStructureElementsεφαρμόζει αυτούς τους κανόνες του structure tree σε μια flat λίστα στοιχείων (όπως επιστρέφει τοTPdf.StructureElements), ώστε οι έλεγχοι να μπορούν να τρέξουν ή να unit-testαριστούν χωρίς φόρτωση ολόκληρου εγγράφου
Version 1.44.5
Διορθώθηκε
- Ο έλεγχος embedding γραμματοσειρών του
ValidatePdfA(pvaiFontNotEmbedded, ISO 19005-1, 6.3.4) εντοπίζει πλέον και απλές γραμματοσειρές που δεν είναι ενσωματωμένες και δεν έχουν/FontDescriptor, κυρίως τις 14 standard Type 1 γραμματοσειρές (Helvetica, Times, Courier κ.ο.κ.) που το PDF/A απαιτεί να ενσωματώνονται χωρίς εξαίρεση Παλαιότερα μια τέτοια γραμματοσειρά περνούσε απαρατήρητη Ο έλεγχος μετρά πλέον και τα simple-font dictionaries (/Type1,/TrueType,/MMType1) απέναντι στα embedded font programs, ακολουθώντας τη διόρθωση PDF/UA στο 1.44.3
Version 1.44.4
Διορθώθηκε
ValidatePdfVTαπορρίπτει πλέον κακοσχηματισμένα ISO 16612-2 §6.5 DPart trees όπου το/DPartsείναι flat reference array αντί για το απαιτούμενο array of arrays, ή όπου ένα leaf DPart επαναλαμβάνει τη σελίδα/Startως/Endπαρότι το εύρος περιέχει μόνο μία σελίδαValidatePdfVTεπικυρώνει πλέον τα ονόματα/NodeNameListως XML NMTOKEN values μετά την επέκταση των PDF name#xxescapes, ώστε τα άκυρα ονόματα επιπέδου ιεραρχίας να αναφέρονται μέσωpvviMissingDPartRootαντί να γίνονται αποδεκτά ως χρήσιμη DPart structure
Version 1.44.3
Διορθώθηκε
- Ο έλεγχος embedding γραμματοσειρών του
ValidatePdfUa(pvuaiFontNotEmbedded, ISO 14289-1, 7.21.4) εντοπίζει πλέον και απλές γραμματοσειρές που δεν είναι ενσωματωμένες και δεν έχουν/FontDescriptor, κυρίως τις 14 standard Type 1 γραμματοσειρές (Helvetica, Times, Courier κ.ο.κ.) για τις οποίες το PDF/UA δεν δίνει καμία εξαίρεση embedding Παλαιότερα μια τέτοια γραμματοσειρά περνούσε απαρατήρητη και ένα έγγραφο που τη χρησιμοποιούσε μπορούσε να αναφερθεί ως συμβατό Ο έλεγχος μετρά πλέον και τα simple-font dictionaries (/Type1,/TrueType,/MMType1) απέναντι στα embedded font programs
Version 1.44.2
Διορθώθηκε
ValidatePdfVTαφήνει πλέον έναν markerpdfvtid:GTS_PDFVTVersionπου υπάρχει αλλά δεν αναγνωρίζεται ωςpvcUnknownαντί να τον υποβιβάζει σεpvcNoneΑυτό διατηρεί διακριτές τις άκυρες file-level συμβολοσειρές όπωςPDF/VT-2sαπό έγγραφα που δεν φέρουν κανένα PDF/VT marker Το PDF/VT-2s αναγνωρίζεται από την κεφαλίδα MIME stream στο ISO 16612-2 Annex A, όχι από τον XMP marker ενός PDF file- Ο έλεγχος
/DPartRootεπικυρώνει πλέον πιο αυστηρά τη σημασιολογία του tree του ISO 16612-2 §6.5: το/DPartRootNodeκαι το/NodeNameListπρέπει να περιγράφουν το πραγματικό DPart depth, οι συνδέσεις γονέα των DPart πρέπει να σχηματίζουν δέντρο, τα/Startκαι/DPartsείναι αμοιβαία αποκλειόμενα και κάθε page/DPartπρέπει να δείχνει στο leaf DPart που την καλύπτει με την ίδια depth-first σειρά όπως το page tree
Version 1.44.1
Διορθώθηκε
SaveAsPdfVTγράφει πλέον μια ελάχιστη ISO 16612-2 §6.5 Document Part Hierarchy όταν το source PDF δεν έχει χρησιμοποιήσιμο/DPartRootΤο παραγόμενο tree συνδέει κάθε σελίδα μέσω/DPart, διατηρεί μια ήδη έγκυρη ιεραρχία και αφήνει πλουσιότερα recipient/DPM metadata στο calling workflowValidatePdfVTεπικυρώνει πλέον τη χρησιμοποιήσιμη DPart structure, διαβάζει PDF/VT XMP values τόσο από RDF attributes όσο και από element text και επιβάλλει το ακριβές ζευγάρωμα PDF/VT προς PDF/X base: το PDF/VT-1 απαιτεί PDF/X-4, ενώ το PDF/VT-2 απαιτεί PDF/X-4p, PDF/X-5g ή PDF/X-5pg- Το
TPdfVTSaveOptions.Conformance = pvc2δεν γράφει πλέον άκυρα single-file PDF/VT-2 markers Ο writer για single-file κανονικοποιεί την έξοδο σε PDF/VT-1 επειδή το PDF/VT-2 απαιτεί file-set semantics
Version 1.44.0
Προστέθηκε
ValidatePdfUaαναφέρει πλέον και byte-checkable violations σε επίπεδο περιεχομένου PDF/UA, πέρα από τους markers του file format: ένα font program που δεν είναι embedded (ISO 14289-1, 7.21.4), μια γραμματοσειρά που δεν έχει CMap/ToUnicodeόταν δεν υπάρχει εξαιρούμενο simple-font encoding (7.21.7) και ένα έγγραφο που φέρει annotations αλλά δεν δηλώνει tab order σελίδας/Tabs /S(7.18.3)- Τρεις νέες τιμές
TPdfUaValidationIssue—pvuaiFontNotEmbedded,pvuaiFontMissingToUnicodeκαιpvuaiMissingTabsOrder— εμφανίζονται από τοValidatePdfUaκαι στο preflight report Είναι χονδρικές heuristics που προορίζονται ως προτροπές preflight και όχι ως πλήρης επαλήθευση ISO 14289-1
Version 1.43.1
Διορθώθηκε
SaveAsPdfUaεπιβάλλει πλέον τα υποχρεωτικά catalog entries του ISO 14289-1, 7.1/ViewerPreferences/DisplayDocTitle trueκαι/MarkInfo/Marked true/Suspects falseακόμη κι όταν το source document ήδη παρέχει αυτά τα dictionaries με λείπουσες ή αντικρουόμενες τιμές Παλαιότερα τα markers εισάγονταν μόνο όταν τα dictionaries έλειπαν εντελώς, οπότε ένα source που είχε, για παράδειγμα,/ViewerPreferencesχωρίςDisplayDocTitleή/MarkInfoμε/Marked falseγύριζε σε μη συμβατό αρχείο- Τα υπάρχοντα keys σε ήδη υπάρχον
/ViewerPreferencesή/MarkInfodictionary διατηρούνται και ένα dictionary που δίνεται ως indirect reference επιλύεται πριν εφαρμοστούν τα υποχρεωτικά keys
Version 1.43.0
Προστέθηκε
- Το
ValidatePdfAεφαρμόζει πλέον τους κανόνες PDF/A-2 / PDF/A-3 για embedded και associated files και για Level U text Τα embedded files εξακολουθούν να απορρίπτονται για PDF/A-1 για το PDF/A-3 ένα embedded file που δεν έχει το απαιτούμενο key/AFRelationship(ISO 19005-3 Annex E) επισημαίνεται, ενώ τα PDF/A-2 attachments επιτρέπονται (η δική τους συμμόρφωση δεν επαληθεύεται αναδρομικά) Ένα νέο issuepvaiUnicodeMappingMissingαναφέρει ένα PDF/A-2u ή PDF/A-3u document του οποίου οι γραμματοσειρές δεν φέρουν mapping/ToUnicode(ISO 19005-2 6.2.11.7) Η transparency και το optional content εξακολουθούν να επισημαίνονται μόνο για PDF/A-1
Version 1.42.0
Προστέθηκε
- Τα PDF/A-2 (ISO 19005-2) και PDF/A-3 (ISO 19005-3) υποστηρίζονται πλέον και στα τρία επίπεδα συμμόρφωσης — a, b και u — από τα
SaveAsPdfA,ValidatePdfAκαι την ιδιότηταPdfAConformanceΗ enumerationTPdfAConformanceαποκτά ταpac2a,pac2u,pac3aκαιpac3u(το PDF/A-1 δεν έχει Level u) Η αποθήκευση γράφει τα αντίστοιχαpdfaid:part(2 ή 3) καιpdfaid:conformance(A, B ή U), διατηρώντας το OutputIntent subtypeGTS_PDFA1που το ISO 19005-2 κρατά για λόγους συμβατότητας Μια αίτηση για Level A εξακολουθεί να υποβαθμίζεται στο αντίστοιχο Level B (για οποιοδήποτε part) όταν το έγγραφο δεν έχει τη tagged structure που απαιτεί εκείνο το επίπεδο
Version 1.41.0
Προστέθηκε
- Το
ValidatePdfAεντοπίζει πλέον violations σε επίπεδο περιεχομένου PDF/A που η εισαγωγή markers δεν μπορεί να διορθώσει, πάνω από τα structural markers που ήδη ανέφερε: JavaScript και άλλες απαγορευμένες ενέργειες, additional-actions (/AA), embedded files,LZWDecode, transparency (soft masks και transparency groups), optional content (/OCProperties), απαγορευμένα annotation subtypes (FileAttachment, Sound, Movie, 3D, Screen), AcroForm/NeedAppearances trueκαι/XFA, γραμματοσειρές των οποίων τα descriptors δεν έχουν embedded font program, και μια δήλωση Level A χωρίς τη tagged structure που απαιτεί το ISO 19005-1 6.8 Η transparency, το optional-content και ο έλεγχος embedded-file ισχύουν μόνο για PDF/A-1 (αυτά τα χαρακτηριστικά επιτρέπονται στα PDF/A-2 και PDF/A-3) Νέες τιμέςTPdfAValidationIssueεκθέτουν κάθε περίπτωση οι υπάρχουσες τιμές παραμένουν ίδιες
Version 1.40.3
Διορθώθηκε
- Το
SaveAsPdfAαφαιρεί πλέον κάθε encryption του source document πριν παράγει έξοδο PDF/A Το ISO 19005-1 6.1.3 απαγορεύει το trailer key/Encrypt, αλλά η διαδρομή αποθήκευσης παλαιότερα διατηρούσε το security handler του source, οπότε η αποθήκευση ενός κρυπτογραφημένου εγγράφου ως PDF/A παρήγαγε κρυπτογραφημένο, μη συμβατό αρχείο Η αποθήκευση PDF/A αποκρυπτογραφεί πλέον πρώτα το έγγραφο Τα μη κρυπτογραφημένα έγγραφα δεν επηρεάζονται
Version 1.40.2
Διορθώθηκε
- Το
SaveAsPdfAσταματά πλέον να εκπέμπει ψευδή δήλωση συμμόρφωσης PDF/A Level A Όταν ζητείται Level A (pac1a) αλλά το source document δεν έχει τα markers tagged-structure που απαιτεί το ISO 19005-1 6.8 — ένα/StructTreeRootστο catalog και ένα dictionary/MarkInfoμε/Marked true— το αποθηκευμένο αρχείο αναγνωρίζεται πλέον ως το αντίστοιχο Level B (pdfaid:conformance=B) αντί να δηλώνεται Level A Η καθαρά οπτική έξοδος PDF/A-1b δεν επηρεάζεται
Version 1.40.1
Διορθώθηκε
- Σφίχτηκε η επικύρωση συμβατότητας έκδοσης PDF ώστε η ενέργεια
SetOCGState(set-optional-content-group-state) να αναγνωρίζεται ως feature του PDF 1.5 Η αποθήκευση σε target PDF 1.2, 1.3 ή 1.4 που περιέχει ενέργειαSetOCGStateαπορρίπτεται πλέον ώστε να ταιριάζει με το ISO 32000-1 (Table 198) παλαιότερα μια τέτοια ενέργεια μπορούσε να περάσει σε έξοδο χαμηλότερης έκδοσης Η ξεχωριστή, παρωχημένη ενέργεια PDF 1.2SetStateεξακολουθεί να γίνεται αποδεκτή από το PDF 1.2 και μετά
Version 1.40.0
Προστέθηκε
- Δεσμεύτηκε το upstream API
FPDFPageObj_AddExistingMark(), που συνδέει ένα υπάρχον content mark σε ένα page object Όταν διαδοχικά page objects μοιράζονται το ίδιο mark, το αποθηκευμένο PDF τα συμπτύσσει σε ένα ενιαίο mark που τα καλύπτει όλα μη διαδοχικά objects λαμβάνουν ξεχωριστά αντίγραφα - Δεσμεύτηκε το upstream API
FPDFTextObj_SetFontSize()για αλλαγή του μεγέθους σημείων ενός υπάρχοντος text object, συμπληρώνοντας το ήδη υπάρχον bindingFPDFTextObj_GetFontSize()
Τροποποιήθηκε
- Ανανεώθηκαν οι bundled PDFium runtime DLLs (Win32 και Win64, standard και V8 builds) στο upstream snapshot της 2026-06-02
Version 1.39.53
Τροποποιήθηκε
- Τα demos Delphi
PDFViewer,SplitViewκαιMultiPageViewerανοίγουν πλέον τα έγγραφα από προεπιλογή σε λειτουργίαZoom to Page - Η αρχική απόδοση χωρά πλέον ολόκληρη τη σελίδα στην επιφάνεια του viewer πριν ο χρήστης επιλέξει χειροκίνητο επίπεδο zoom
- Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.53
Version 1.39.52
Τροποποιήθηκε
- Βελτιώθηκε το
Demo\Lazarus\CreatePDFώστε το εισαγωγικό δείγμα να παράγει πλέον ένα PDF δύο σελίδων με vector paths, περιεχόμενο πίνακα, ενσωματωμένη εικόνα, text annotation, περιστραμμένο κείμενο και σαφέστερη περιήγηση στη δημιουργία εγγράφου - Προστέθηκαν καλοδουλεμένες σελίδες
README.htmlγια κάθε φάκελο demo των Delphi, C++Builder και Lazarus, αντικαθιστώντας το υπόλοιπο text-only demo README με έναν οδηγό που διαβάζεται σε browser - Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.52
Version 1.39.51
- Βελτιώθηκαν οι batch summaries του
Demo\Delphi\PreflightReportCliμε totals κατάστασης για Pass, Action required και Review αποτελέσματα στα επιλεγμένα standards - Οι per-file γραμμές περιλαμβάνουν πλέον counts για action-required και review στα TXT / HTML / JSON / CSV summaries, κάνοντας τα CI artifacts ευκολότερα στην επιθεώρηση χωρίς άνοιγμα κάθε παραγόμενης αναφοράς
- Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.51
Version 1.39.50
- Βελτιώθηκε η λειτουργία batch σε φάκελο του
Demo\Delphi\PreflightReportCliώστε τοbatchdir=folderνα συλλέγει τα PDF paths που βρέθηκαν, να τα ταξινομεί και στη συνέχεια να δημιουργεί αναφορές με σταθερή σειρά - Οι αναδρομικές σαρώσεις καταλόγων παράγουν πλέον αναπαραγώγιμη σειρά αναφορών και summary rows, ενώ η ρητή επεξεργασία
batch=list.txtσυνεχίζει να διατηρεί τη σειρά του list file - Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.50
Version 1.39.49
- Βελτιώθηκαν οι batch summaries του
Demo\Delphi\PreflightReportCliώστε να καταγράφουν ρυθμίσεις εκτέλεσης: είδος πηγής, path πηγής, recursive κατάσταση, κατάλογο εξόδου, format αναφοράς, επιλεγμένα standards και λειτουργίαfailon= - Οι JSON summaries περιλαμβάνουν πλέον ένα object
run, οι TXT και HTML summaries δείχνουν μια ενότητα ρυθμίσεων εκτέλεσης και οι CSV γραμμές επαναλαμβάνουν τις ίδιες audit στήλες για spreadsheet και CI pipelines - Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.49
Version 1.39.48
- Βελτιώθηκε η ονομασία εξόδου batch του
Demo\Delphi\PreflightReportCliώστε τα διπλά input file names που μοιράζονται έναoutdir=να μην αντικαθιστούν πλέον ο ένας τις παραγόμενες αναφορές του άλλου - Οι batch εκτελέσεις προσθέτουν πλέον καταλήξεις
-2,-3και μεταγενέστερες όταν ένα path παραγόμενης αναφοράς έχει ήδη αποδοθεί στην ίδια εκτέλεση και τα summaries καταγράφουν το τελικό collision-safe path αναφοράς - Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.48
Version 1.39.47
- Βελτιώθηκαν οι batch summaries του
Demo\Delphi\PreflightReportCliώστε οι έξοδοι TXT και JSON να περιλαμβάνουν πλέον συγκεντρωτικά totals για total files, processed files, failed files, issues και αντιστοιχίεςfailon= - Οι CSV summaries παραμένουν ένας καθαρός row table για τους υπάρχοντες καταναλωτές, ενώ οι HTML summaries συνεχίζουν να δείχνουν τα ίδια aggregate metrics στο dashboard header
- Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.47
Version 1.39.46
- Βελτιώθηκε το
Demo\Delphi\PreflightReportCliμεsummary=batch.html/.htmώστε οι batch εκτελέσεις να μπορούν να εκπέμπουν ένα dashboard αναγνώσιμο σε browser μαζί με TXT / CSV / JSON manifests - Οι HTML summaries δείχνουν metrics για total, processed, failed, issue και αντιστοιχίες
failon=, και στη συνέχεια παραθέτουν κάθε input με links αναφοράς, κατάσταση, counts και κείμενο σφάλματος - Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.46
Version 1.39.45
- Βελτιώθηκε το
Demo\Delphi\PreflightReportCliμεbatchdir=folderκαιrecursiveώστε τα scripts να μπορούν να σαρώσουν PDF φακέλους απευθείας χωρίς πρώτα να γράφουν list file - Η λειτουργία batch σε κατάλογο επαναχρησιμοποιεί τη συμπεριφορά
outdir=,summary=,standards=καιfailon=από τη list-based batch λειτουργία, ενώ οι μη αναδρομικές σαρώσεις περιορίζονται στον επιλεγμένο φάκελο και τοrecursiveπεριλαμβάνει υποφακέλους - Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.45
Version 1.39.44
- Βελτιώθηκε το
Demo\Delphi\PreflightReportCliμεsummary=batch.csv|json|txtώστε οι batch εκτελέσεις να μπορούν να εκπέμπουν ένα machine-readable manifest δίπλα στις per-file αναφορές - Τα batch summaries περιλαμβάνουν κάθε input path, report path, κατάσταση, standard count, passed count, issue count, state αντιστοιχίας
failon=και κείμενο σφάλματος για CI jobs και external scripts - Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.44
Version 1.39.43
- Βελτιώθηκε το
Demo\Delphi\PreflightReportCliμεbatch=list.txtκαιoutdir=reportsώστε τα scripts να μπορούν να δημιουργούν preflight reports για μια λίστα PDF αρχείων σε μία εκτέλεση - Η λειτουργία batch παραλείπει κενές γραμμές και γραμμές σχολίων
#, παράγει το όνομα κάθε.preflight.<ext>report από το input PDF, συνεχίζει μετά από σφάλματα ανά αρχείο και συνοψίζει τα processed και failed αρχεία πριν επιστρέψει - Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.43
Version 1.39.42
- Βελτιώθηκε το
Demo\Delphi\PreflightReportCliμεfailon=none|issues|action|reviewώστε τα CI jobs να μπορούν να μετατρέπουν τα παραγόμενα preflight αποτελέσματα σε deterministic exit codes - Το CLI επιστρέφει πλέον exit code 2 όταν ένα επιλεγμένο rule
failon=ταιριάζει αφού παραχθεί το αρχείο αναφοράς και το προαιρετικό attached-report PDF, ενώ τα runtime errors εξακολουθούν να επιστρέφουν exit code 1 - Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.42
Version 1.39.41
- Βελτιώθηκε το
Demo\Delphi\PreflightReportCliμεattach=output.pdfώστε μια παραγόμενη preflight report να μπορεί να ενσωματωθεί ως document-level attachment σε ένα νέο αντίγραφο PDF - Το CLI κρατά το παραγόμενο TXT / HTML / Markdown / JSON / CSV report file στον δίσκο και αρνείται να το ξαναεπισυνάψει στο αρχικό input PDF path, μειώνοντας τον κίνδυνο τυχαίας αντικατάστασης
- Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.41
Version 1.39.40
- Προστέθηκε το
Demo\Delphi\PreflightReportCli, ένα Delphi console companion για scriptable παραγωγήFPdfPreflightReportχωρίς άνοιγμα viewer - Το CLI υποστηρίζει δημιουργία δείγματος χωρίς ορίσματα μαζί με input / output ορίσματα, προαιρετικό password, formats εξόδου
text/html/md/json/csvκαι φιλτράρισμαstandards=για PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R και PDF/VT - Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.40
Version 1.39.39
- Βελτιώθηκε το
FPdfPreflightReportμε ταTPdfPreflightReport.ToMarkdownκαιSaveMarkdownToFileώστε οι preflight reports να μπορούν να εξάγονται ως Markdown φιλικό προς issue trackers - Ενημερώθηκαν τα demos
PreflightReportτων Delphi, C++Builder και Lazarus με εναλλαγή preview Markdown και ενέργειες Save MD δίπλα στο υπάρχον workflow TXT / HTML / JSON / CSV - Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.39
Version 1.39.38
- Βελτιώθηκαν τα δείγματα
SecurityAuditτων Delphi, C++Builder και Lazarus με εξαγωγή JSON audit report δίπλα στο υπάρχον workflow TXT save / copy - Το JSON report περιέχει
format,generatedAt,summary,findingCountκαι δομημένες γραμμέςfindingsμε πεδία severity, area και detail - Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.38
Version 1.39.37
- Βελτιώθηκε το
FPdfPreflightReportμε ταTPdfPreflightReport.ToCsvκαιSaveCsvToFileώστε οι preflight reports να μπορούν να εξάγονται ως CSV φιλικό προς spreadsheet - Ενημερώθηκαν τα demos
PreflightReportτων Delphi, C++Builder και Lazarus με εναλλαγή preview CSV και ενέργειες Save CSV δίπλα στο υπάρχον workflow TXT / HTML / JSON - Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.37
Version 1.39.36
- Βελτιώθηκε το
FPdfPreflightReportμε τοTPdfPreflightReport.IssueCategoryCountsμαζί με επαναχρησιμοποιήσιμους τύπουςTPdfPreflightIssueCategoryCountκαιTPdfPreflightIssueCategoryCountsγια συγκέντρωση των issues σε επίπεδο marker ανά κατηγορία - Ενημερώθηκαν τα
TPdfPreflightReport.ToText,ToHtmlκαιToJsonώστε η παραγόμενη έξοδος PreflightReport να περιλαμβάνει summaries counts κατηγοριών issues δίπλα στις per-standard γραμμές και στις λεπτομερείς συστάσεις issues - Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.36
Version 1.39.35
- Μετονομάστηκε το διευρυμένο sample
PrintDialogσεPrintPreferencesσε Delphi, C++Builder και Lazarus ώστε το όνομα του demo να ταιριάζει πλέον με τις PDF author print preferences, το N-up printing, το odd / even filtering, το grayscale, το cell border και το duplex mapping workflow - Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.35
Version 1.39.34
- Βελτιώθηκε το
Demo\Delphi\PrintPDFμε φόρτωση PDF μέσω drag-and-drop και τεκμηριώθηκε το υπάρχον workflow τουDemo\CBuilder\PrintPDFδίπλα στα Delphi και Lazarus PrintPDF samples - Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.34
Version 1.39.33
- Προστέθηκε το
Demo\CBuilder\SplitView, ολοκληρώνοντας το matrix του sample SplitView σε Delphi, C++Builder και Lazarus - Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.33
Version 1.39.32
- Προστέθηκε το
Demo\Lazarus\SplitView, φέρνοντας το side-by-side PDF comparison στο Lazarus με διατάξεις δύο ή τριών panes, πλοήγηση ενεργής προβολής, συγχρονισμένες εντολές, presets zoom και περιστροφή - Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.32
Version 1.39.31
- Προστέθηκε το
Demo\Lazarus\PrintPDF, φέρνοντας το τυπικό workflow εκτύπωσης PDF στο Lazarus με πλοήγηση preview, page ranges, copies, collate mode, progress και ακύρωση - Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.31
Version 1.39.30
- Προστέθηκε το
Demo\Lazarus\FontProperties, ολοκληρώνοντας το matrix του sample FontProperties σε Delphi, C++Builder και Lazarus - Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.30
Version 1.39.29
- Προστέθηκε το
Demo\CBuilder\FontProperties, φέρνοντας την επιθεώρηση indexed character και font metadata στο C++Builder δίπλα στο Delphi sample - Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.29
Version 1.39.28
- Προστέθηκε το
Demo\Delphi\ExtractTextPages, ολοκληρώνοντας το matrix του sample εξαγωγής κειμένου ανά σελίδα σε Delphi, C++Builder και Lazarus - Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.28
Version 1.39.27
- Προστέθηκε το
Demo\Lazarus\PrintDialog, ολοκληρώνοντας το matrix του sample PrintDialog σε Delphi, C++Builder και Lazarus - Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.27
Version 1.39.26
- Προστέθηκε το
Demo\CBuilder\PrintDialog, φέρνοντας το workflow N-up printing και PDF author print preferences στο C++Builder δίπλα στο Delphi sample - Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.26
Version 1.39.25
- Προστέθηκε το
Demo\CBuilder\ViewerInteractionLab, ολοκληρώνοντας το matrix του sample ViewerInteractionLab σε Delphi, C++Builder και Lazarus - Ενημερώθηκε το workflow build της βιβλιοθήκης και τα Win64 C++Builder package outputs ώστε οι μέθοδοι viewer interaction του
TPdfViewνα συνδέονται σωστά στα Win64 demos - Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.25
Version 1.39.24
- Προστέθηκε το
Demo\Lazarus\ViewerInteractionLab, φέρνοντας το εστιασμένο workflow αλληλεπίδρασης προβολής στο Lazarus δίπλα στο Delphi sample - Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.24
Version 1.39.23
- Προστέθηκε το
Demo\Lazarus\SearchAndSelect, ολοκληρώνοντας το matrix του sample SearchAndSelect σε Delphi, C++Builder και Lazarus - Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.23
Version 1.39.22
- Προστέθηκαν τα
Demo\CBuilder\ContentExtractionLabκαιDemo\Lazarus\ContentExtractionLab, φέρνοντας το workflow εξαγωγής περιεχομένου πολλών κατηγοριών σε όλα τα υποστηριζόμενα demo IDEs - Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.22
Version 1.39.21
- Βελτιώθηκαν τα
Demo\Delphi\PreflightReport,Demo\Lazarus\PreflightReportκαιDemo\CBuilder\PreflightReportμε selector format προεπισκόπησης, ώστε οι χρήστες να μπορούν να ελέγχουν την έξοδο text ή JSON πριν αποθηκεύσουν τις αναφορές - Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.21
Version 1.39.20
- Προστέθηκε εξαγωγή JSON στο
FPdfPreflightReportμέσω τωνTPdfPreflightReport.ToJsonκαιSaveJsonToFile, παράγοντας machine-readable summaries, status / priority ανά standard, επόμενες ενέργειες και λεπτομέρειες issues - Ενημερώθηκαν τα
Demo\Delphi\PreflightReport,Demo\Lazarus\PreflightReportκαιDemo\CBuilder\PreflightReportμε ενέργειες Save JSON δίπλα στην εξαγωγή TXT / HTML - Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.20
Version 1.39.19
- Βελτιώθηκε το
FPdfPreflightReportμεTPdfPreflightStatus, κατηγορίες issues, προτεραιότητα ανά standard και καθοδήγηση επόμενης ενέργειας στις αναφορές TXT / HTML - Ενημερώθηκαν τα
Demo\Delphi\PreflightReport,Demo\Lazarus\PreflightReportκαιDemo\CBuilder\PreflightReportώστε να δείχνουν status, priority, issue count και next action στο summary grid - Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.19
Version 1.39.18
- Προστέθηκε το
Demo\Lazarus\SecurityAudit, ολοκληρώνοντας το matrix των demos σε Delphi, C++Builder και Lazarus για το workflow ελέγχου επιφάνειας κινδύνου PDF μόνο για ανάγνωση - Το δείγμα Lazarus απαριθμεί permissions, attachments, JavaScript actions, URI / Launch link annotations, web links, signatures, κατάσταση XFA, διαθεσιμότητα βοηθητικών V8 / XFA και unsupported-feature callbacks, και έπειτα αποθηκεύει ή αντιγράφει τη λίστα ευρημάτων ως αναφορά TXT
- Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.18
Version 1.39.17
- Προστέθηκε το
Demo\CBuilder\SecurityAudit, φέρνοντας το workflow ελέγχου επιφάνειας κινδύνου PDF μόνο για ανάγνωση στο C++Builder δίπλα στο υπάρχον δείγμα Delphi - Το δείγμα C++Builder απαριθμεί permissions, attachments, JavaScript actions, URI / Launch link annotations, web links, signatures, κατάσταση XFA, διαθεσιμότητα βοηθητικών V8 / XFA και unsupported-feature callbacks, και έπειτα αποθηκεύει ή αντιγράφει τη λίστα ευρημάτων ως αναφορά TXT
- Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.17
Version 1.39.16
- Προστέθηκε το
Demo\CBuilder\SearchAndSelect, φέρνοντας το αυτόνομο workflow viewer του SearchAndSelect στο C++Builder δίπλα στο υπάρχον δείγμα Delphi - Το δείγμα C++Builder δημιουργεί ή ανοίγει PDFs, παραθέτει matches σε όλες τις σελίδες με previews page / character-index, υποστηρίζει πλοήγηση Previous / Next και double-click, και επισημαίνει τα matches της τρέχουσας σελίδας με
HighlightSearchText - Εκθέτει επίσης τα
AllowUserTextSelection,SelectedText,SelectAll,CopySelectionToClipboard,ClearSelection,OnSelectionChangeκαι τις επιλογές spreadDisplayModeτο version metadata αναφέρει πλέον 1.39.16
Version 1.39.15
- Προστέθηκε το
Demo\CBuilder\WatermarkStamp, ολοκληρώνοντας το matrix των demos σε Delphi, Lazarus και C++Builder για επαναχρησιμοποιήσιμα workflows watermark και stamp Form XObject - Το δείγμα C++Builder δημιουργεί target και stamp PDFs, επαναχρησιμοποιεί τη σελίδα stamp μέσω
CreateXObjectFromPage, εφαρμόζει transformsTPdfMatrixκαι αποθηκεύει κεντραρισμένα watermarks, corner stamps και labels αριθμών σελίδας - Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.15
Version 1.39.14
- Προστέθηκε το
Demo\Lazarus\WatermarkStamp, φέρνοντας το επαναχρησιμοποιήσιμο workflow watermark και stamp Form XObject στο Lazarus - Το δείγμα Lazarus δημιουργεί target και stamp PDFs, επαναχρησιμοποιεί τη σελίδα stamp μέσω
CreateXObjectFromPage, εφαρμόζει transformsTPdfMatrixκαι αποθηκεύει κεντραρισμένα watermarks, corner stamps και labels αριθμών σελίδας - Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.14
Version 1.39.13
- Προστέθηκε το
Demo\CBuilder\PreflightReport, ολοκληρώνοντας το matrix των demos σε Delphi, Lazarus και C++Builder για το επαναχρησιμοποιήσιμο workflowFPdfPreflightReport - Το δείγμα C++Builder χρησιμοποιεί το
FPdfPreflightReport.hppγια να παράγει standard summaries, προεπισκοπήσεις TXT report, αρχεία αναφοράς TXT / HTML και συμπεριφορά Open Last Report - Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.13
Version 1.39.12
- Προστέθηκε το
Demo\Lazarus\PreflightReport, φέρνοντας το workflow preflight report για PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R και PDF/VT στο Lazarus - Το δείγμα Lazarus μπορεί να ανοίγει ή να δημιουργεί ένα PDF, να επιλέγει target standards, να προεπισκοπεί summary rows και έξοδο TXT report, να αποθηκεύει αναφορές TXT / HTML και να ανοίγει την πιο πρόσφατα αποθηκευμένη αναφορά
- Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.12
Version 1.39.11
- Βελτιώθηκε το
Demo\Delphi\SearchAndSelectμε μια λίστα αποτελεσμάτων αναζήτησης για όλες τις σελίδες που καταγράφει αριθμό σελίδας, δείκτη χαρακτήρων και κείμενο προεπισκόπησης - Προστέθηκε πλοήγηση Previous / Next για matches και μετάβαση αποτελέσματος με double-click, διατηρώντας τη συμπεριφορά
HighlightSearchTextστην τρέχουσα σελίδα - Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.11
Version 1.39.10
- Βελτιώθηκε το
Demo\Delphi\SecurityAuditμε ενέργειες Save Report και Copy Report που εξάγουν το τρέχον summary και τις γραμμές ευρημάτων ως TXT audit report - Το demo καθαρίζει πλέον το report export state όταν γίνεται reset του audit panel, κρατώντας τις αναφορές που έχουν αντιγραφεί ή αποθηκευτεί ευθυγραμμισμένες με τα ορατά ευρήματα
- Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.10
Version 1.39.9
- Βελτιώθηκε το
Demo\Delphi\ContentExtractionLabμε αποθήκευση source PDF, αντιγραφή report στο clipboard και ενέργειες επιλογής all / none κατηγοριών - Το demo ακυρώνει πλέον την τρέχουσα αναφορά όταν αλλάζουν οι επιλογές κατηγοριών, ώστε οι εξαγωγές TXT / JSON να αντικατοπτρίζουν το ορατό scope εξαγωγής
- Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.9
Version 1.39.8
- Προστέθηκε το
Demo\Delphi\ContentExtractionLab, ένα ενιαίο sample workflow εξαγωγής περιεχομένου για document metadata, page text, page objects, images, attachments, links, annotations, bookmarks και metrics γραμματοσειρών / χαρακτήρων - Το δείγμα μπορεί να ανοίξει ένα υπάρχον PDF ή να δημιουργήσει ένα συνθετικό PDF με περιεχόμενο κειμένου, εικόνας, attachment και annotation, και έπειτα να παράγει summary rows και λεπτομερείς αναφορές TXT / JSON
- Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.8
Version 1.39.7
- Προστέθηκε το
Lib\FPdfPreflightReport.pas, ένας επαναχρησιμοποιήσιμος report helper που τυλίγει ταValidatePdfA,ValidatePdfUa,ValidatePdfE,ValidatePdfX,ValidatePdfRκαιValidatePdfVTσε ένα αντικείμενοTPdfPreflightReport - Προστέθηκε το
Demo\Delphi\PreflightReport, ένα workflow sample που ανοίγει ή δημιουργεί ένα PDF, επιλέγει target standards, προεπισκοπεί summary rows και συστάσεις issues και αποθηκεύει αναφορές TXT ή HTML - Οι παραγόμενες αναφορές περιγράφουν ρητά το ενσωματωμένο όριο validation σε επίπεδο marker, ώστε οι εφαρμογές να μπορούν να τις συνδυάζουν με ειδικά εργαλεία preflight σε επίπεδο περιεχομένου όταν χρειάζεται
- Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata, οι λίστες έργων package και τα installer version metadata ώστε να αναφέρουν 1.39.7
Version 1.39.6
- Προστέθηκε το
Demo\Delphi\SearchAndSelect, ένα εστιασμένο sample workflow viewer για search highlighting, text selection, selected-text preview, αντιγραφή, καθαρισμό και λειτουργίες spread display - Το δείγμα παρουσιάζει τα
HighlightSearchText, τις επιλογές αναζήτησης match-case / whole-word, ταAllowUserTextSelection,SelectedText,SelectAll,CopySelectionToClipboardκαιClearSelectionχωρίς να προσθέτει νέο API βιβλιοθήκης - Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.6
Version 1.39.5
- Το
Demo\Delphi\ViewerInteractionLabεπεκτάθηκε σε sample viewer UX τύπου SearchAndSelect μεHighlightSearchText, επιλογές match-case / whole-word, preview επιλεγμένου κειμένου και τα υπάρχοντα controls επιλογής / clipboard - Το
Demo\Delphi\PrintDialogεπεκτάθηκε για να επιθεωρεί τις PDF author print preferences:PrintCopies,PrintPageRanges,PrintScaling,PrintPaperHandlingκαι το ορατό mapping duplex τουSetPdfPrintPaperHandlingDevMode - Προστέθηκε το
Demo\Delphi\SecurityAudit, ένα δείγμα μόνο για ανάγνωση της επιφάνειας κινδύνου που παραθέτει permissions, attachments, JavaScript document, URI / Launch links, web links, signatures, κατάσταση XFA και διαθεσιμότητα βοηθητικών V8 / XFA - Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.5
Version 1.39.4
- Προστέθηκαν τα
Demo\CBuilder\ImageToPDFκαιDemo\Lazarus\ImageToPDF, ολοκληρώνοντας το matrix του sample ImageToPDF σε Delphi, C++Builder και Lazarus - Τα νέα δείγματα παρουσιάζουν επιλογή πολλαπλών εικόνων, preview επιλεγμένης εικόνας, μία PDF σελίδα ανά εικόνα, μεγέθη σελίδας A4 portrait / landscape, κεντραρισμένη κλιμάκωση εικόνας, πρόοδο ανά εικόνα και άνοιγμα του παραγόμενου PDF μετά την αποθήκευση
- Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.4
Version 1.39.3
- Προστέθηκε το
Demo\CBuilder\BatchExport, φέρνοντας το workflow εξαγωγής PDF σε JPG πολλών αρχείων στο C++Builder δίπλα στα υπάρχοντα δείγματα Delphi και Lazarus - Το δείγμα παρουσιάζει τα
LoadCustomDocument,IPdfCancellationTokenSource, είσοδο streamingTFileStream, πρόοδο ανά αρχείο και ανά σελίδα, διαχείριση ακύρωσης, inputs DPI / quality / password και άνοιγμα του φακέλου εξόδου μετά την ολοκλήρωση - Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.3
Version 1.39.2
- Προστέθηκε το
Demo\Delphi\WatermarkStamp, ένα εκτελέσιμο sample workflow Form XObject που δημιουργεί ένα target PDF και ένα επαναχρησιμοποιήσιμο stamp PDF και έπειτα εφαρμόζει κεντραρισμένα watermarks, πάνω δεξιά stamps και labels αριθμών σελίδας σε κάθε σελίδα - Το δείγμα παρουσιάζει τα
CreateXObjectFromPage,InsertFormObjectFromXObject,TPdfMatrixκαιFPDFPageObj_SetMatrixχωρίς να προσθέτει νέο API βιβλιοθήκης - Το
Docs\en-us\Examples.htmlενημερώθηκε ώστε να χρησιμοποιεί το τρέχον patternTPdfMatrix.Handleόταν περνά matrices στοFPDFPageObj_SetMatrix - Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.2
Version 1.39.1
- Προστέθηκε το
Demo\Delphi\ViewerInteractionLab, ένα εστιασμένο sampleTPdfViewγια display modes, fit modes, χρώματα σελίδας, περιστροφή, επιλογή κειμένου χρήστη, ενέργειες clipboard και ανατροφοδότηση συντεταγμένωνDeviceToPage - Προστέθηκαν τα
Demo\CBuilder\StandardsLab/Demo\Lazarus\StandardsLabώστε οι χρήστες Lazarus να μπορούν να τρέχουν το workflow validation και marker-output για PDF/A, PDF/UA, PDF/E, PDF/X, PDF/R και PDF/VT - Καταγράφηκαν οι μονάδες standards στα
Lib\37.0\PDFiumPas.dprojκαιLib\FPC\PDFiumLaz.lpkκαι διορθώθηκε το build του Delphi sampleSplitViewμε αφαίρεση διπλού importWinapi.ShellAPI - Διορθώθηκαν blockers batch-build στα δείγματα Delphi
BatchExport,PDFViewer,MultiPageViewerκαιSplitViewχωρίς αλλαγή της runtime συμπεριφοράς τους - Διορθώθηκε η συμβατότητα batch-build των δειγμάτων C++Builder
PDFViewerκαιMultiPageViewerμε αντικατάσταση τουnullptrαπόNULLγια το τρέχον project mode - Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.1
Version 1.39.0
- Προστέθηκε το
Demo\Delphi\StandardsLab, ένα εκτελέσιμο sample workflow standards που φορτώνει ή δημιουργεί ένα PDF, εκτελεί ταValidatePdfA,ValidatePdfUa,ValidatePdfE,ValidatePdfX,ValidatePdfRκαιValidatePdfVTκαι εμφανίζει τη συμμόρφωση που εντοπίστηκε, την κατάσταση pass/fail και τα counts issues σε ένα grid - Τα κουμπιά αποθήκευσης του StandardsLab καλούν τα
SaveAsPdfA,SaveAsPdfUa,SaveAsPdfE,SaveAsPdfX,SaveAsPdfRκαιSaveAsPdfVT, κάνοντας ορατή την έξοδο markers των PDF standards χωρίς να γράφεται custom harness - Ενημερώθηκαν το
TPdf.AboutInfo, τα Lazarus package metadata και τα installer version metadata ώστε να αναφέρουν 1.39.0
Version 1.38.0
- Τα overlays αναζήτησης και text-selection του
TPdfViewχρησιμοποιούν πλέον πραγματικό alpha blending αντί για logical mask painting, διατηρώντας το περιεχόμενο της σελίδας κάτω από τα highlights - Προστέθηκε το
SetPdfPrintPaperHandlingDevModeγια να αντιστοιχίζει τοTPrintPaperHandlingσε τιμές WindowsDEVMODE.dmDuplex:DMDUP_SIMPLEX,DMDUP_HORIZONTALκαιDMDUP_VERTICAL - Το
TPdfView.SmoothScrollτώρα animates τις εντολές scrollbar γραμμής / σελίδας σε segments με χρονόμετρο, ενώ η παρακολούθηση του thumb παραμένει άμεση - Ενημερώθηκαν το
TPdf.AboutInfoκαι τα installer version metadata ώστε να αναφέρουν 1.38.0
Version 1.37.0
- Το
TPdfδιαθέτει πλέον ένα render lock ανά instance που σειριοποιεί τις διαδρομέςRenderPage,RenderTile,RenderPageProgressive, reload σελίδας και unload εγγράφου Η απόδοση που καθοδηγείται από worker μέσω κοινού component είναι πλέον πρακτική, ενώ οι εφαρμογές εξακολουθούν να συντονίζουν τη μεταβολή και τη διάρκεια ζωής του εγγράφου - Διορθώθηκε το zero-copy bitmap wrapper ώστε να απορρίπτει bottom-up
TBitmapDIB layouts και να πέφτει πίσω σε buffer ιδιοκτησίας PDFium πριν την αντιγραφή, εξαλείφοντας αποτυχίες stride-corruption / access-violation στα VCL render tests - Σφίχτηκε η συμπεριφορά επιλογής του
TPdfView: τοAllowUserTextSelectionφιλτράρει μόνο την είσοδο χρήστη, τα selection APIs σε επίπεδο κώδικα εξακολουθούν να σχεδιάζουν και τοSelectAllακολουθεί το πραγματικό ορατό spread ώστε η σελίδα εξωφύλλου να μην επιλέγει πλέον τη σελίδα 2 Τα tests Delphi, Lazarus και C++Builder επεκτάθηκαν ανάλογα - Ενημερώθηκαν το
TPdf.AboutInfoκαι τα installer version metadata ώστε να αναφέρουν 1.37.0
Version 1.36.0
- Ενεργοποιήθηκε η επιλογή κειμένου από τον τελικό χρήστη στο
TPdfView— η ιδιότηταAllowUserTextSelectionπου είχε κρατηθεί στη v1.17.0 πλέον οδηγεί μια πλήρη ροή drag-select. Με αριστερό κλικ σε χαρακτήρα κειμένου μπαίνετε σε λειτουργία επιλογής (hit-test auto), ενώ με αριστερό κλικ σε κενό σημείο συνεχίζει η μετακίνηση όπως πριν. Το widget form-fill κρατά την προτεραιότητα, οπότε το κλικ σε πεδίο φόρμας εξακολουθεί να εστιάζει το πεδίο αντί να ξεκινά επιλογή - Το διπλό κλικ επιλέγει τη λέξη, το τριπλό κλικ επιλέγει τη γραμμή, το
Ctrl+Aεπιλέγει την τρέχουσα σελίδα (και τις δύο σελίδες σε λειτουργίες spread), και τοCtrl+Cαντιγράφει την επιλογή στο πρόχειρο των Windows ωςCF_UNICODETEXT Shift+Left/Shift+Rightεπεκτείνει την επιλογή έναν χαρακτήρα κάθε φορά (προεκτείνοντας στη γειτονική σελίδα στη λειτουργία spread), ενώ τοShift+Home/Shift+Endεπεκτείνει έως το οπτικό άκρο της γραμμής χρησιμοποιώντας το ύψος του πλαισίου του αρχικού χαρακτήρα ως ανοχή για το line-cluster, ώστε οι γραμμές με μικτό μέγεθος γραμματοσειράς να παραμένουν σωστά ομαδοποιημένες- Όταν περνάτε πάνω από κείμενο, ο δείκτης αλλάζει σε
crIBeam· όταν βγαίνετε από το κείμενο, επανέρχεται ο προεπιλεγμένος δείκτης. Ενώ βρίσκεται σε εξέλιξη σύρσιμο επιλογής κειμένου, η μεταφορά σε νεκρή ζώνη 20 pixel σε οποιοδήποτε άκρο του viewer κάνει αυτόματη κύλιση της σελίδας (βήμα 50 ms, 16 px / βήμα, με όριο στα ίδια όρια που χρησιμοποιεί η διαδρομή pan), ώστε η επιλογή να μπορεί να επεκταθεί πέρα από το τρέχον viewport χωρίς πρώτα να απελευθερωθεί το ποντίκι - Η επιλογή ανάμεσα σε σελίδες λειτουργεί σε λειτουργίες spread (
dmTwoPageContinuous,dmTwoPageContinuousWithCover): ένα drag που ξεκινά στην αριστερή σελίδα και τελειώνει στη δεξιά επιλέγει το συνεχόμενο εύρος που καλύπτει και τις δύο. ΤοSelectedTextενώνει τα αποσπάσματα ανά σελίδα με CR/LF, ώστε το κείμενο που επιστρέφει να διαβάζεται όπως κανονικό πολυγραμμικό περιεχόμενο - Η νέα δημοσιευμένη ιδιότητα
SelectionColor(προεπιλογήclHighlight, το χρώμα επιλογής του συστήματος Windows) — ανεξάρτητη από τοHighlightColorπου χρωματίζει τα αποτελέσματα αναζήτησης με κίτρινο. Οι επισημάνσεις αναζήτησης και μια ζωντανή επιλογή με σύρσιμο μπορούν να εμφανίζονται ταυτόχρονα στην οθόνη χωρίς σύγκρουση χρωμάτων - Το νέο δημοσιευμένο συμβάν
OnSelectionChangeενεργοποιείται κάθε φορά που οι υλοποιημένες περιοχές της επιλογής αλλάζουν πραγματικά — ποτέ όταν επανεφαρμόζεται το ίδιο, ώστε οι host εφαρμογές να μπορούν να το συνδέσουν απευθείας με κείμενο γραμμής κατάστασης ή με την κατάσταση ενεργοποίησης κουμπιών χωρίς debouncing - Το νέο δημόσιο API στο
TPdfView:HasSelection,SelectionCharCount,SelectedText,ClearSelection,SelectAll,CopySelectionToClipboard. Αυτά είναι σημεία εισόδου σε επίπεδο κώδικα και λειτουργούν πάντα ανεξάρτητα από τοAllowUserTextSelection— η σημαία ελέγχει μόνο την είσοδο του χρήστη (mouse, Ctrl+C, Ctrl+A, Shift+arrows), ώστε οι kiosk hosts να μπορούν να απενεργοποιήσουν την επιλογή από τον χρήστη ενώ εξακολουθούν να φτιάχνουν κουμπιά γραμμής εργαλείων "Select All / Copy" που οδηγούν το ίδιο API - Ένα προεπιλεγμένο αναδυόμενο μενού δεξιού κλικ
Copy/复制συνδέεται αυτόματα όταν ο host δεν έχει ορίσει το δικό τουPopupMenu— το κλασικό "select text, right-click, copy" λειτουργεί αμέσως. Η λεζάντα επιλέγεται ανάμεσα σε English και Chinese από τοSysLocale.PriLangID· οι hosts που χρειάζονται πλήρη τοπική προσαρμογή ή πιο πλούσιο μενού απλώς ορίζουν το δικό τουςPopupMenuκαι το προεπιλεγμένο απενεργοποιείται - Η επιλογή καθαρίζεται αυτόματα στο
SetPdf,SetPageNumber,SetActive(False)και κατά τις μεταβάσεις τουDisplayMode, με τοOnSelectionChangeνα ενεργοποιείται ακριβώς μία φορά όταν η προηγούμενη επιλογή δεν ήταν κενή. Το υποσύστημα form-fill κρατά την προτεραιότητα — όσο επεξεργάζεται ένα πεδίο φόρμας, όλες οι συντομεύσεις πληκτρολογίου της επιλογής αναστέλλονται ώστε το πεδίο να δέχεται ταCtrl+C/Ctrl+A/Shift+arrowsγια τη δική του επιλογή - Οι επεκταμένες σουίτες παλινδρόμησης Delphi και Lazarus έφτασαν πλέον τις 202 περιπτώσεις η καθεμία, και η σουίτα C++Builder τις 159 περιπτώσεις, καλύπτοντας προεπιλεγμένες τιμές, round-trip, συμπεριφορά δημόσιου API, καθαρισμούς κατά την αλλαγή κατάστασης, σύρσιμο με ποντίκι (hit-text / hit-blank), click vs drag, εναλλαγή δρομέα IBeam, διπλό κλικ σε λέξη, τριπλό κλικ σε γραμμή, συντομεύσεις πληκτρολογίου, προεπιλεγμένη σύνδεση / αναβολή / λεζάντα popup και επιλογή ανάμεσα σε σελίδες spread — μαζί με έλεγχο round-trip του προχείρου CR/LF
Version 1.35.0
- Προστέθηκε υποστήριξη εισαγωγής markers PDF/VT (ISO 16612-2:2010): το TPdf.SaveAsPdfVT προάγει το τρέχον έγγραφο σε αρχείο συμβατό με PDF/VT-1 ή PDF/VT-2 (το subset PDF για variable και transactional printing) Το PDF/VT βασίζεται πάνω στο PDF/X-4 — το ISO 16612-2 §6.2.1 απαιτεί κάθε αρχείο PDF/VT-1 να συμμορφώνεται επίσης με το PDF/X-4 — έτσι ο injector γράφει το πλήρες σύνολο markers PDF/X-4 (XMP
pdfxid:GTS_PDFXVersion = "PDF/X-4", Info/GTS_PDFXVersion (PDF/X-4)και/Trapped, catalog/OutputIntentsπου παραπέμπει σε dictionary OutputIntent με embedded ICC profile) μαζί με τις ιδιότητες ειδικά για PDF/VT - Η εισαγωγή ειδικά για PDF/VT καλύπτει XMP
pdfvtid:GTS_PDFVTVersion(= "PDF/VT-1" ή "PDF/VT-2" σύμφωνα με το §6.3 Table 2) καιpdfvtid:GTS_PDFVTModDate(σε συγχρονισμό με τοxmp:ModifyDateσύμφωνα με το §6.3 NOTE 1), συν μια περιγραφή pdfaExtension:schemas που δηλώνει και τα namespaces pdfxid και pdfvtid (NPES URIshttp://www.npes.org/pdfx/ns/id/καιhttp://www.npes.org/pdfvt/ns/id/) Το trailer φέρει έναν πίνακα/ID - Προστέθηκε το TPdf.SaveAsPdfVTToStream για in-memory έξοδο PDF/VT και μια συντομογραφία default-options
TPdf.SaveAsPdfVT(FileName)που παράγει PDF/VT-1 με το bundled sRGB IEC61966-2.1 OutputIntent (3144 bytes, ίδιο profile με τα SaveAsPdfA / SaveAsPdfX) και/Trapped /False - Προστέθηκε το TPdf.ValidatePdfVT: ελέγχει ένα ανοιχτό PDF για markers συμμόρφωσης PDF/VT (παρουσία των XMP
pdfvtid:GTS_PDFVTVersionκαιGTS_PDFVTModDate, ισότητα μεταξύpdfvtid:GTS_PDFVTModDateκαιxmp:ModifyDate, παρουσία του υποκείμενου identifierpdfxid:GTS_PDFXVersion, παρουσία catalog/DPartRootσύμφωνα με το §6.5,/OutputIntentsμε/DestOutputProfile, trailer /ID, κατάσταση κρυπτογράφησης, παρουσίαxmp:CreateDate/ModifyDate) και επιστρέφει TPdfVTValidationResult με το επίπεδο συμμόρφωσης που εντοπίστηκε και το σύνολο των issues που βρέθηκαν - Προστέθηκε η ιδιότητα TPdf.PdfVTConformance: επιστρέφει το επίπεδο συμμόρφωσης του τρέχοντος ανοιχτού εγγράφου (pvc1, pvc2, pvcNone ή pvcUnknown) χωρίς να χρειάζεται ρητή κλήση του ValidatePdfVT
- Νέοι τύποι εξάγονται στη νέα μονάδα FPdfPdfvt: TPdfVTConformance (pvcUnknown/None/1/2), TPdfVTTrappedState (ptvUnspecified/True/False/Unknown), TPdfVTValidationResult, TPdfVTValidationIssue, TPdfVTSaveOptions
- Η Document Part Hierarchy (
DPartRoot/DParttree per §6.5) είναι δομή σε επίπεδο εφαρμογής που εξαρτάται από τη χαρτογράφηση recipient / page-range του workflow variable-data print Το SaveAsPdfVT ΔΕΝ συνθέτει tree DPart — το ValidatePdfVT εμφανίζει ένα ελλιπές/DPartRootωςpvviMissingDPartRootώστε οι callers να μπορούν να δρομολογούν αρχεία PDF/VT μέσω ξεχωριστού βήματος δημιουργίας DPart Το PDF/X-4 content-level requirements (font embedding, transparency, ICC managed color, OPI / JavaScript / Reference XObject prohibitions κ.ο.κ.) παραμένουν ευθύνη του συγγραφέα του εγγράφου και του rendering pipeline του PDFium - Ενημερώθηκε το string TPdf.AboutInfo ώστε να αναφέρει την τρέχουσα έκδοση προϊόντος
Version 1.34.0
- Προστέθηκε υποστήριξη εισαγωγής markers PDF/R-1 (ISO 23504-1:2020): το TPdf.SaveAsPdfR προάγει το τρέχον έγγραφο σε αρχείο συμβατό με PDF/R-1 (το raster-image transport subset του PDF που χρησιμοποιείται για σαρωμένα έγγραφα) Η εισαγωγή καλύπτει τις απαιτήσεις σε επίπεδο file format που μπορούν να προστεθούν με post-processing — το μοναδικό comment αναγνώρισης έκδοσης
%PDF-raster-1.0που γράφεται ανάμεσα στο trailer dictionary και στο keyword startxref (§5), το catalog dictionary περιορισμένο στο white list του §6.3 (μένουν μόνο Version / ViewerPreferences / PageLayout / PageMode / AcroForm / Metadata), το Document Information Dictionary περιορισμένο στο white list του §6.4.3 (μένουν μόνο Creator / Producer / CreationDate / ModDate), ένα catalog /Metadata XMP stream που φέρει τα τέσσερα entries του §6.4.4 Table 1 (xmp:CreatorTool / pdf:Producer / xmp:CreateDate / xmp:ModifyDate) και έναν trailer πίνακα /ID - Προστέθηκε το TPdf.SaveAsPdfRToStream για in-memory έξοδο PDF/R και μια συντομογραφία default-options
TPdf.SaveAsPdfR(FileName)για τη συνηθισμένη περίπτωση - Προστέθηκε το TPdf.ValidatePdfR: ελέγχει ένα ανοιχτό PDF για markers συμμόρφωσης PDF/R-1 (το footer comment
%PDF-raster-x.y, την έκδοση header, την απουσία /Type /ObjStm, τη συμμόρφωση του catalog white list, τη συμμόρφωση του Info dictionary white list, την παρουσία XMP metadata stream, το trailer /ID) και επιστρέφει TPdfRValidationResult με το επίπεδο συμμόρφωσης που εντοπίστηκε και το σύνολο των issues που βρέθηκαν - Προστέθηκε η ιδιότητα TPdf.PdfRConformance: επιστρέφει το επίπεδο συμμόρφωσης του τρέχοντος ανοιχτού εγγράφου (prc1, prcNone ή prcUnknown) χωρίς να χρειάζεται ρητή κλήση του ValidatePdfR
- Νέοι τύποι εξάγονται στη νέα μονάδα FPdfPdfr: TPdfRConformance, TPdfRValidationResult, TPdfRValidationIssue, TPdfRSaveOptions Το
TPdfRSaveOptions.Defaultορίζει τα StripInfoOptionalEntries και StripCatalogOptionalEntries σε True, ώστε ο injector να παράγει από προεπιλογή catalog και Info dictionary συμβατά με το §6.3 / §6.4.3 Οι callers μπορούν να τα ορίσουν σε False για να διατηρήσουν τα source entries (η έξοδος τότε δεν θα ικανοποιεί εκείνες τις PDF/R ρήτρες, αλλά οι υπόλοιποι markers παραμένουν συνδεδεμένοι) - Οι απαιτήσεις σε επίπεδο περιεχομένου παραμένουν ευθύνη του source PDF: η δομή Contents ανά σελίδα (§6.5.1), η μορφή MediaBox
[0 0 w h](§6.5.3), οι περιορισμοί φίλτρων (§6.2.2 — μόνο FlateDecode, CCITTFaxDecode bitonal, DCTDecode 8-bit gray/RGB), η απουσία object streams (§6.2.4) και το strip layout κατά §6.6 Αυτά δεν μπορούν να επιβληθούν με post-processing — το PDF/R είναι δομικά πολύ αυστηρότερο subset από τα άλλα πρότυπα PDF/x και απαιτεί σωστή παραγωγή των source bytes Το ValidatePdfR εμφανίζει τα file-format ζητήματα που μπορεί να ανιχνεύσει αυτή η μονάδα συνδυάστε το με έναν TWAIN Working Group PDF/R validator για πλήρη έλεγχο σε επίπεδο περιεχομένου - Ενημερώθηκε το string TPdf.AboutInfo ώστε να αναφέρει την τρέχουσα έκδοση προϊόντος
Version 1.33.0
- Προστέθηκε υποστήριξη εισαγωγής markers PDF/X (ISO 15930 family): το TPdf.SaveAsPdfX προάγει το τρέχον έγγραφο σε αρχείο συμβατό με PDF/X-1a:2001, PDF/X-3:2002 ή PDF/X-4 μέσω post-processing του base PDF με incremental update Η εισαγωγή καλύπτει τις απαιτήσεις σε επίπεδο file format που μπορούν να προστεθούν με post-processing — ένα XMP metadata stream που φέρει
pdfxid:GTS_PDFXVersion(καιpdfxid:GTS_PDFXConformanceγια PDF/X-1a / PDF/X-3) μαζί με την αντίστοιχη περιγραφή pdfaExtension:schemas, ένα ξαναγραμμένο Document Information Dictionary με entries/GTS_PDFXVersion,/GTS_PDFXConformanceκαι/Trapped, ένα ενημερωμένο catalog με/OutputIntents [N 0 R]που παραπέμπει σε OutputIntent dictionary με/S /GTS_PDFXκαι embedded ICC profile, και έναν trailer πίνακα/ID - Προστέθηκε το TPdf.SaveAsPdfXToStream για in-memory έξοδο PDF/X και μια συντομογραφία default-options
TPdf.SaveAsPdfX(FileName)που παράγει PDF/X-4 με το built-in sRGB IEC61966-2.1 OutputIntent (3144 bytes, ίδιο profile με το SaveAsPdfA) - Προστέθηκε το TPdf.ValidatePdfX: ελέγχει ένα ανοιχτό PDF για markers συμμόρφωσης PDF/X (identifier XMP pdfxid και ισότητα με την τιμή του Info dictionary, περιγραφή pdfxid extension schema, πίνακα /OutputIntents με /DestOutputProfile, παρουσία Title, trailer /ID, κατάσταση κρυπτογράφησης, παρουσία xmp:CreateDate / xmp:ModifyDate) και επιστρέφει TPdfXValidationResult με το επίπεδο που εντοπίστηκε και το σύνολο των issues που βρέθηκαν
- Προστέθηκε η ιδιότητα TPdf.PdfXConformance: επιστρέφει το επίπεδο συμμόρφωσης του τρέχοντος ανοιχτού εγγράφου (pxc1a, pxc3, pxc4, pxcNone ή pxcUnknown) χωρίς να χρειάζεται ρητή κλήση του ValidatePdfX Το string έκδοσης XMP αναλύεται για να διακρίνει τα τρία επίπεδα συμμόρφωσης
- Νέοι τύποι εξάγονται στη νέα μονάδα FPdfPdfx: TPdfXConformance (pxcUnknown/None/1a/3/4), TPdfXTrappedState (ptUnspecified/True/False/Unknown), TPdfXValidationResult, TPdfXValidationIssue, TPdfXSaveOptions Το
TPdfXSaveOptions.Defaultστοχεύει σε PDF/X-4 με sRGB OutputIntent και/Trapped /Falseοι callers μπορούν να παρακάμψουν τοConformance, να δώσουν ένα blob CMYKIccProfileDataγια workflows εμπορικής εκτύπωσης ή να αλλάξουν ταOutputCondition/OutputConditionIdentifier/RegistryNameώστε να δείχνουν σε μια συγκεκριμένη εγγραφή ICC characterisation registry, π.χ. FOGRA39, GRACoL2006_Coated1v2 - Οι απαιτήσεις σε επίπεδο περιεχομένου (όλες οι γραμματοσειρές ενσωματωμένες, χωρίς JavaScript, χωρίς ορατά annotations, απαγόρευση OPI, κανόνες transparency για PDF/X-1a / PDF/X-3 κ.ο.κ.) παραμένουν ευθύνη του συγγραφέα του εγγράφου και του rendering pipeline του PDFium Συνδυάστε το ValidatePdfX με ένα εργαλείο preflight όπως το callas pdfaPilot ή το Ghent PDF Workgroup Output Suite για πλήρη επαλήθευση συμμόρφωσης
- Ενημερώθηκε το string TPdf.AboutInfo ώστε να αναφέρει την τρέχουσα έκδοση προϊόντος
Version 1.32.0
- Προστέθηκε υποστήριξη εισαγωγής marker PDF/E-1 (ISO 24517-1:2008): το TPdf.SaveAsPdfE προωθεί το τρέχον έγγραφο σε αρχείο συμβατό με PDF/E-1 μέσω μετα-επεξεργασίας του βασικού PDF με incremental update. Η εισαγωγή καλύπτει τις απαιτήσεις επιπέδου μορφότυπου που μπορούν να προστεθούν μετά την αποθήκευση — μια ροή μεταδεδομένων XMP με
pdfe:ISO_PDFEVersion = "PDF/E-1"μαζί με την αντίστοιχη περιγραφή pdfaExtension:schemas, ένα ανασυνταγμένο Document Information Dictionary με την υποχρεωτική εγγραφή/ISO_PDFEVersion (PDF/E-1)που απαιτείται από το §5, τα blocks σύνδεσης Info-XMP που κληρονομούνται από το ISO 19005-1 §6.7 μέσω §13.1 (dc:title / dc:creator / dc:description / pdf:Producer / pdf:Keywords / xmp:CreateDate / xmp:ModifyDate / xmp:MetadataDate / xmp:CreatorTool), και έναν πίνακα/IDtrailer που απαιτείται από το §6.2 - Προστέθηκε το TPdf.SaveAsPdfEToStream για εξαγωγή PDF/E στη μνήμη, καθώς και μια συντομογραφία με προεπιλεγμένες επιλογές
TPdf.SaveAsPdfE(FileName)για τη συνηθισμένη περίπτωση - Προστέθηκε το TPdf.ValidatePdfE: ελέγχει ένα ανοιχτό PDF για δείκτες συμμόρφωσης PDF/E-1 (παρουσία και ισότητα της XMP τιμής pdfe:ISO_PDFEVersion με την τιμή στο Info dictionary, περιγραφή σχήματος pdfe extension schema, εγγραφή Info dictionary /ISO_PDFEVersion, trailer /ID, παρουσία xmp:CreateDate / xmp:ModifyDate) και επιστρέφει δομημένο αποτέλεσμα με το ανιχνευμένο επίπεδο συμμόρφωσης και το σύνολο των προβλημάτων που βρέθηκαν
- Προστέθηκε η ιδιότητα TPdf.PdfEConformance: επιστρέφει το επίπεδο συμμόρφωσης του τρέχοντος ανοιχτού εγγράφου (pec1, pecNone, ή pecUnknown) χωρίς να χρειάζεται ρητή κλήση του ValidatePdfE
- Νέοι τύποι στο νέο unit FPdfPdfe: TPdfEConformance, TPdfEValidationResult, TPdfEValidationIssue, TPdfESaveOptions
- Η επανεγγραφή του Info dictionary είναι πρωτιά για τη διαδρομή post-processing PDF/x του PDFium Delphi Component — ξαναγράφει το υπάρχον Info object με τον ίδιο αριθμό object (ώστε το xref subsection / trailer /Info reference να παραμένουν έγκυρα) και συνθέτει νέο Info dictionary όταν το source trailer δεν έχει καταχώριση /Info. Το ίδιο το PDFium εκδίδει Info dictionary σε κάθε SaveAs output, άρα η συνηθισμένη περίπτωση είναι η διαδρομή επανεγγραφής
- Οι απαιτήσεις σε επίπεδο περιεχομένου (ενσωμάτωση γραμματοσειρών, ToUnicode CMaps, απαγορευμένα κλειδιά XObjects / ExtGState / XFA forms κ.λπ.) παραμένουν ευθύνη του συντάκτη του εγγράφου — το SaveAsPdfE προσθέτει τα markers του μορφότυπου αλλά δεν αλλάζει το περιεχόμενο των σελίδων ούτε αφαιρεί απαγορευμένες δυνατότητες
- Ενημερώθηκε η συμβολοσειρά TPdf.AboutInfo ώστε να αναφέρει την τρέχουσα έκδοση του προϊόντος
Version 1.31.0
- Προστέθηκε υποστήριξη εισαγωγής marker PDF/UA-1 (ISO 14289-1:2014): το TPdf.SaveAsPdfUa προωθεί το τρέχον έγγραφο σε αρχείο συμβατό με PDF/UA-1 μέσω μετα-επεξεργασίας του βασικού PDF με incremental update. Η εισαγωγή καλύπτει τις απαιτήσεις επιπέδου μορφότυπου που μπορούν να επιβληθούν μετά την αποθήκευση — μια ροή μεταδεδομένων XMP με
pdfuaid:part = 1μαζί με την αντίστοιχη περιγραφή pdfaExtension:schemas, υποχρεωτικόdc:title, catalog/MarkInfo << /Marked true /Suspects false >>και/ViewerPreferences << /DisplayDocTitle true >>(μόνο όταν το source δεν έχει κανένα), catalog/Lang(όταν ο caller δίνει BCP 47 tag), και έναν πίνακα trailer/ID - Προστέθηκε το TPdf.SaveAsPdfUaToStream για εξαγωγή PDF/UA στη μνήμη, καθώς και μια συντομογραφία με προεπιλεγμένες επιλογές
TPdf.SaveAsPdfUa(FileName)για τη συνηθισμένη περίπτωση - Προστέθηκε το TPdf.ValidatePdfUa: ελέγχει ένα ανοιχτό PDF για δείκτες συμμόρφωσης PDF/UA-1 (ύπαρξη StructTreeRoot, /Lang, /MarkInfo /Marked true με /Suspects = false, /ViewerPreferences /DisplayDocTitle true, XMP αναγνωριστικό pdfuaid:part, παρουσία dc:title, trailer /ID, κατάσταση κρυπτογράφησης) και επιστρέφει δομημένο αποτέλεσμα με το ανιχνευμένο επίπεδο συμμόρφωσης και το σύνολο των προβλημάτων που βρέθηκαν
- Προστέθηκε η ιδιότητα TPdf.PdfUaConformance: επιστρέφει το επίπεδο συμμόρφωσης του τρέχοντος ανοιχτού εγγράφου (puc1, pucNone, ή pucUnknown) χωρίς να χρειάζεται ρητή κλήση του ValidatePdfUa
- Νέοι τύποι στο νέο unit FPdfPdfua: TPdfUaConformance, TPdfUaValidationResult, TPdfUaValidationIssue, TPdfUaSaveOptions
- Τα πεδία Title / Author / Subject / Keywords / Creator / Producer / CreationDate / ModDate / DocumentId / InstanceId / Language που μένουν κενά στο TPdfUaSaveOptions συμπληρώνονται αυτόματα από τα FPDF_GetMetaText / FPDF_GetFileIdentifier / FPDFCatalog_GetLanguage, ώστε οι υπάρχοντες callers να μπορούν να αποθηκεύουν με μία μόνο γραμμή
- Οι απαιτήσεις σε επίπεδο περιεχομένου (πληρότητα tagging του StructTreeRoot, εναλλακτικό κείμενο Figure Alt, ToUnicode CMaps, ενσωμάτωση γραμματοσειρών κ.λπ.) παραμένουν ευθύνη του συντάκτη του εγγράφου — το SaveAsPdfUa προσθέτει τα markers του μορφότυπου αλλά δεν αλλάζει το περιεχόμενο των σελίδων ούτε επινοεί tags. Το ValidatePdfUa επισημαίνει την απουσία του StructTreeRoot ως
pvuaiMissingStructTreeRootώστε οι callers να μπορούν να δρομολογούν μη tagged έγγραφα σε ξεχωριστή γραμμή tagging - Ενημερώθηκε η συμβολοσειρά TPdf.AboutInfo ώστε να αναφέρει την τρέχουσα έκδοση του προϊόντος
Version 1.30.0
- Το PDF/A-1b output πληροί πλέον τις απαιτήσεις ISO 19005-1 (με Cor.1:2007) για ισοδυναμία μεταξύ Document Information Dictionary / XMP: κάθε καταχώριση Info dictionary που γράφει το PDFium στο βασικό PDF αντικατοπτρίζεται στο XMP packet, συμπεριλαμβανομένων των Title (dc:title), Author (dc:creator), Subject (dc:description σύμφωνα με το Cor.1), Keywords (pdf:Keywords), Creator (xmp:CreatorTool), Producer (pdf:Producer), CreationDate (xmp:CreateDate), και ModDate (xmp:ModifyDate). Επίσης εκπέμπεται το xmp:MetadataDate
- Το trailer ενός PDF/A εγγράφου περιέχει πλέον πάντα πίνακα /ID (αυστηρή απαίτηση του ISO 19005-1 6.1.3). Όταν το TPdf.SaveAsPdfA επεξεργάζεται ένα έγγραφο του οποίου το source ήδη έχει file identifier, επαναχρησιμοποιούνται τα υπάρχοντα 16-byte permanent και changing IDs, διαφορετικά ένας ντετερμινιστικός εναλλακτικός 16-byte ID παράγεται από τα bytes του source
- Το ενσωματωμένο XMP περιλαμβάνει πλέον την περιγραφή σχήματος pdfaid extension schema που απαιτείται από το ISO 19005-1 6.7.8 (αντικαταστάθηκε από το Cor.1) — το pdfaid θεωρείται extension schema σε σχέση με το XMP Specification 2004, οπότε όλα τα συμβατά αρχεία πρέπει να δηλώνουν τα ονόματα ιδιοτήτων του, τους τύπους τιμών και τις κατηγορίες του στο container pdfaExtension:schemas
- Το TPdfASaveOptions απέκτησε πέντε νέα προαιρετικά πεδία: Producer, CreationDate, ModDate (PDF date strings στη μορφή “D:YYYYMMDDHHmmSSOHH'mm'”), DocumentId, και InstanceId (16-byte byte strings για τον trailer /ID πίνακα). Τα TPdf.SaveAsPdfA / SaveAsPdfAToStream συμπληρώνουν αυτόματα τα πεδία που λείπουν από τα FPDF_GetMetaText και FPDF_GetFileIdentifier, ώστε οι υπάρχοντες callers να συνεχίζουν να λειτουργούν χωρίς αλλαγές
- Τα TPdf.ValidatePdfA / TPdf.PdfAConformance αναφέρουν πλέον τρία επιπλέον θέματα: pvaiMissingTrailerId (κανένα /ID στο trailer), pvaiMissingXmpDates (λείπουν xmp:CreateDate ή xmp:ModifyDate), και pvaiMissingExtensionSchema (λείπει η περιγραφή pdfaid extension schema)
- Τα μη-ASCII στους Title, Author, Subject, Keywords, Creator, και Producer κωδικοποιούνται πλέον ως UTF-8 στο XMP packet (το XMP Specification απαιτεί UTF-8), διατηρώντας την κυκλική μεταφορά πολυγλωσσικών μεταδεδομένων μέσω SaveAsPdfA
- Ενημερώθηκε η συμβολοσειρά TPdf.AboutInfo ώστε να αναφέρει την τρέχουσα έκδοση του προϊόντος
Version 1.29.0
- Ανανέωθηκαν τα ενσωματωμένα PDFium DLLs (Win32 και Win64, και τα standard και V8 builds) στο upstream snapshot της 2026-05-22, ενσωματώνοντας διορθώσεις upstream για τα paths κρασαρίσματος του FPDFText_SetText / FPDFText_SetCharcodes και γενική εσωτερική σκλήρυνση από το PDFium project
- Εκτέθηκε η νέα σημαία αποθήκευσης FPDF_SUBSET_NEW_FONTS του PDFium στο FPdfPageOps.pas, επιτρέποντας στους callers του FPDF_SaveAsCopy να ζητούν αυτόματο subsetting των embedded font files για νέα text objects. Οι υπάρχουσες σταθερές FPDF_INCREMENTAL, FPDF_NO_INCREMENTAL, και FPDF_REMOVE_SECURITY ορίζονται πλέον με τη upstream μορφή bit-shift (η παλιά αριθμητική τιμή 3 διατηρείται ως FPDF_REMOVE_SECURITY_DEPRECATED για binary compatibility)
- Προστέθηκε το enum FPDF_FONT_BACKEND_TYPE (FREETYPE / FONTATIONS) και το αντίστοιχο πεδίο m_FontLibraryType στο FPDF_LIBRARY_CONFIG στο FPdfView.pas, ώστε οι εφαρμογές που αρχικοποιούν το PDFium με τον Skia renderer να μπορούν πλέον να επιλέγουν το font backend κατά την εκκίνηση
- Ενημερώθηκε η υπογραφή του TFPDFPage_InsertObject ώστε να ταιριάζει με το upstream: η C function πλέον επιστρέφει FPDF_BOOL (TRUE σε επιτυχία, FALSE αν το page_object είναι NULL ή αν αποτύχει η μεταφορά ownership) αντί για void. Οι υπάρχοντες callers του PDFium Delphi Component συνεχίζουν να μεταγλωττίζονται χωρίς αλλαγές, επειδή το Delphi / FPC επιτρέπουν να αγνοηθεί η τιμή επιστροφής μιας function
- Διορθώθηκε η συμβολοσειρά TPdf.AboutInfo ώστε να αναφέρει την τρέχουσα έκδοση του προϊόντος (ήταν κολλημένη στο v1.27.0 από την documentation-only έκδοση v1.28.0)
Version 1.28.0
- Επεκτάθηκε σημαντικά η εντός σελίδας τεκμηρίωση σε όλο το API reference: κάθε property, method, event και global function entry περιλαμβάνει πλέον Περιγραφή τριών παραγράφων, λίστα Παρατηρήσεις, πολυγραμμικό Delphi Παράδειγμα, και πλουσιότερο block Δείτε επίσης — καλύπτοντας περισσότερες από 200 έως τότε λεπτές σελίδες, συμπεριλαμβανομένων όλων των counters του TPdf, των metadata getters, των accessors για γραμματοσειρές και χαρακτήρες, των page-level properties, των indexed records, των document-level methods, και όλης της επιφάνειας state / display / event του TPdfView
- Βελτιστοποιήθηκε η διάταξη της βοήθειας ώστε να ταιριάζει με το οπτικό baseline του losLab που χρησιμοποιεί το reference του HotXLS: ταιριάχτηκαν τα μεγέθη των h1/h2, ενοποιήθηκαν τα styles του πλέγματος πλοήγησης API στο κοινό StyleSheet, και αφαιρέθηκαν οι per-page inline CSS overrides στο Navigation.html
- Η τεκμηρίωση πλέον συνοδεύεται από βοηθητικό script (Docs\Build-Expand-Entries.ps1) που αναπαράγει τον εμπλουτισμό της entry page από έναν ενιαίο πίνακα δεδομένων για επαναλήψιμη συντήρηση
Version 1.27.0
- Προστέθηκε υποστήριξη δημιουργίας PDF/A-1b: το TPdf.SaveAsPdfA αποθηκεύει οποιοδήποτε ανοιχτό έγγραφο ως αρχείο συμβατό με PDF/A-1b μέσω μετα-επεξεργασίας του βασικού PDF με incremental update που εισάγει XMP metadata stream, sRGB ICC OutputIntent, και ενημερωμένο catalog εγγράφου — χωρίς να απαιτούνται επιπλέον DLL APIs. Λειτουργεί σε κάθε πλατφόρμα που υποστηρίζει το PDFium Delphi Component
- Προστέθηκε το TPdf.SaveAsPdfAToStream για εξαγωγή PDF/A στη μνήμη
- Προστέθηκε το TPdf.ValidatePdfA: ελέγχει ένα ανοιχτό PDF για συμμόρφωση PDF/A (δείκτες XMP pdfaid, OutputIntent με ενσωματωμένο ICC profile, encryption) και επιστρέφει δομημένο αποτέλεσμα με το ανιχνευμένο επίπεδο συμμόρφωσης και ένα σύνολο συγκεκριμένων προβλημάτων που βρέθηκαν
- Προστέθηκε η ιδιότητα TPdf.PdfAConformance: επιστρέφει το επίπεδο συμμόρφωσης του τρέχοντος ανοιχτού εγγράφου (pac1b, pac1a, pac2b, pac3b, pacNone, ή pacUnknown) χωρίς να χρειάζεται ρητή κλήση του ValidatePdfA
- Νέοι τύποι που εκτίθενται: TPdfAConformance, TPdfAValidationResult, TPdfAValidationIssue, TPdfASaveOptions (στο νέο unit FPdfPdfa.pas)
- Το SaveAsPdfA υποστηρίζει προσαρμοσμένο ICC profile μέσω του TPdfASaveOptions.IccProfileData; όταν μένει κενό χρησιμοποιείται αυτόματα το ενσωματωμένο προφίλ sRGB IEC61966-2.1 (HP/Microsoft, 3144 bytes)
- Αντικαταστάθηκε το μονολιθικό HTML reference με αναδομημένο web help system: 302 ξεχωριστές σελίδες entry API (μία ανά property, method, event και global function) που καλύπτουν το TPdf και το TPdfView, καθεμία με πλήρη περιγραφή, πίνακα παραμέτρων, Delphi code example, και συνδέσμους Δείτε επίσης
- Προστέθηκε το Navigation.html: ένας ολοκληρωμένος one-page API navigation index οργανωμένος σε έξι ενότητες (TPdf properties/methods/events, TPdfView properties/methods/events, global functions) με πλέγμα flex 5 στηλών για γρήγορη σάρωση
- Ανακατασκευάστηκαν τα TPdf.html και TPdfView.html ως compact component overview pages που διατηρούν τις ενότητες type-reference (Types, Constants, Global Variables) και συνδέουν προς τις επιμέρους entry pages για όλα τα members
- Προστέθηκε αναζήτηση πλήρους κειμένου με Search.js και incremental client-side matching σε όλες τις 312 indexed pages
- Ενημερώθηκαν όλες οι navigation bars σε όλο το site ώστε να δείχνουν προς το Navigation.html
Version 1.26.0
- Προστέθηκε το Demo/Lazarus/BatchExport, το LCL port του Delphi BatchExport demo της v1.14.0. Ίδιο σύνολο δυνατοτήτων: εξαγωγή πολλών PDF σε JPG με συνολική πρόοδο ανά αρχείο, τρέχουσα πρόοδο ανά σελίδα, εισόδους για DPI / ποιότητα / κωδικό πρόσβασης, και μια παρτίδα που μπορεί να ακυρωθεί συνεργατικά και βασίζεται στο IPdfCancellationToken. Ο φάκελος εξόδου ανοίγει στον file manager της πλατφόρμας όταν η εξαγωγή ολοκληρωθεί με επιτυχία
Version 1.25.0
- Προστέθηκε επαναχρησιμοποίηση Form XObject στο TPdf, επιτρέποντας workflows watermark, template overlay, και “stamp one page onto many”: το CreateXObjectFromPage κατασκευάζει ένα επαναχρησιμοποιήσιμο handle από οποιαδήποτε σελίδα άλλου εγγράφου· το InsertFormObjectFromXObject εισάγει ΜΙΑ αντιγραφή της wrapped σελίδας στην τρέχουσα σελίδα. Επιστρέφει το inserted FPDF_PAGEOBJECT ώστε ο caller να μπορεί να το τοποθετεί / κλιμακώνει / περιστρέφει με το FPDFPageObj_SetMatrix και τα βοηθήματα TPdfMatrix της v1.9.0
- Η νέα κλάση TPdfXObject στην Pascal τυλίγει το handle FPDF_XOBJECT του PDFium και το κλείνει αυτόματα στον destructor της, εξαλείφοντας την χειροκίνητη διαδικασία FPDF_CloseXObject
- Επεκτάθηκαν οι Delphi και Lazarus regression suites σε 147 cases η καθεμία, και η C++Builder suite σε 123 cases, καλύπτοντας τη δημιουργία handle και τα contracts εισαγωγής page object
Version 1.24.0
- Προστέθηκε το TPdf.RenderPageProgressive — μια ακυρώσιμη εκδοχή του RenderPage που οδηγεί τον progressive rendering loop του PDFium και ελέγχει ένα IPdfCancellationToken της v1.7.0 ανάμεσα στις επαναλήψεις, ώστε οι μακρές αποδόσεις υψηλού DPI να μπορούν να διακοπούν στη μέση της σελίδας αντί να μπλοκάρουν τον caller μέχρι την ολοκλήρωση
- Επιστρέφει τιμή TPdfProgressiveStatus: prsDone, prsCancelled, ή prsFailed. Περάστε AToken = nil για απόδοση μέχρι τέλους χωρίς ποτέ να παύσει (καμία δυνατότητα prsCancelled)
- Χρησιμοποιεί την ίδια zero-copy fast path που εισήχθη στη v1.21.0 — το PDFium αποδίδει απευθείας στο DIB του προορισμού TBitmap. Η ίδια παλιά fallback διαδρομή ισχύει όταν το DIB δεν μπορεί να wrapped
- Επεκτάθηκαν οι Delphi και Lazarus regression suites σε 145 cases η καθεμία, και η C++Builder suite σε 121 cases, καλύπτοντας nil-token (ολοκληρώνει), pre-cancelled token (prsCancelled), και pixel equivalence με sync RenderPage πάνω σε live token
Version 1.23.0
- Προστέθηκαν έξι νέες μέθοδοι TPdfView που εκθέτουν στις εφαρμογές την επιλογή κειμένου και το Undo/Redo των form-widget του PDFium: η GetSelectedFormText επιστρέφει το κείμενο που είναι αυτή τη στιγμή επιλεγμένο μέσα στο focused form widget· η SelectAllFormText επιλέγει κάθε χαρακτήρα· οι FormUndo / FormRedo / FormCanUndo / FormCanRedo χειρίζονται το edit history του focused widget. Τα υποκείμενα PDFium APIs ήταν ήδη συνδεδεμένα αλλά δεν είχαν υψηλού επιπέδου entry point. Και οι έξι μέθοδοι short-circuit με ασφάλεια όταν η προβολή είναι ανενεργή ή το έγγραφο δεν έχει εστιασμένο AcroForm widget
- Επεκτάθηκαν οι Delphi και Lazarus regression suites σε 142 cases η καθεμία, και η C++Builder suite σε 119 cases, καλύπτοντας το no-form-no-focus contract για κάθε νέα μέθοδο
Version 1.22.0
- Προστέθηκαν wrappers σύνθεσης σελίδων στο TPdf: η ImportPagesByIndex δέχεται ένα zero-based index array για να αντιγράφει συγκεκριμένες σελίδες από source document· η ImportNPagesToOne επιστρέφει ένα ολοκαίνουργιο TPdf του οποίου οι σελίδες είναι N-up composites αυτού του εγγράφου· η MovePages αναδιατάσσει σελίδες επιτόπου. Τα υποκείμενα PDFium APIs ήταν ήδη συνδεδεμένα αλλά δεν είχαν Pascal-friendly entry point
- Η ImportPagesByIndex δέχεται κενό array για να εισάγει κάθε source page (ισοδύναμο με το να περάσετε nil στο επίπεδο C ABI)
- Επεκτάθηκαν οι Delphi και Lazarus regression suites σε 136 cases η καθεμία, και η C++Builder suite σε 115 cases, καλύπτοντας subset import, whole-document import, page reorder, και N-up composite
Version 1.21.0
- Βελτιώθηκε η απόδοση απόδοσης με μετάβαση των TPdf.RenderPage / TPdf.RenderTile (και των αντίστοιχων βοηθημάτων TPdfView) σε zero-copy output path. Το PDFium πλέον γράφει απευθείας στο DIB buffer του προορισμού TBitmap αντί σε εσωτερικό buffer που μετά αντιγραφόταν γραμμή-γραμμή, γλιτώνοντας μία αντιγραφή μνήμης width x height x 4 bytes σε κάθε render. Η βελτίωση φαίνεται περισσότερο σε υψηλό DPI (thumbnail panels, print-quality export, batch export)
- Η παλιά per-scanline διαδρομή διατηρείται ως fallback ασφάλειας για τη σπάνια περίπτωση όπου το DIB του προορισμού δεν μπορεί να wrapped (ακραίες διαστάσεις, ασυνήθιστο stride, OOM). Η συμπεριφορά είναι byte-identical μεταξύ των δύο διαδρομών, απλώς πιο αργή στο fallback
- Επεκτάθηκαν οι Delphi και Lazarus regression suites σε 132 cases η καθεμία, και η C++Builder suite σε 112 cases, καλύπτοντας caller-bitmap pf32bit upgrade, round-trip διαστάσεων, και sanity test μεγάλου bitmap stride
Version 1.20.0
- Προστέθηκε επισήμανση αποτελεσμάτων αναζήτησης στο TPdfView: η HighlightSearchText(Text, MatchCase, MatchWholeWord) σαρώνει την τρέχουσα σελίδα προβολής και επιστρέφει τον αριθμό των matches που βρέθηκαν, ζωγραφίζοντας mask HighlightColor πάνω σε κάθε match σε κάθε redraw. Η ClearHighlight αφαιρεί τις επισημάνσεις· η μετάβαση της προβολής σε άλλη σελίδα τις καθαρίζει αυτόματα επειδή τα matches είναι page-specific
- Το HighlightColor έχει προεπιλογή clYellow και είναι published ώστε οι εφαρμογές να μπορούν να το θεματοποιούν ώστε να ταιριάζει με την UI palette τους
- Επεκτάθηκαν οι Delphi και Lazarus regression suites σε 129 cases η καθεμία, και η C++Builder suite σε 109 cases, καλύπτοντας προεπιλεγμένο χρώμα, color round-trip, “real fixture word matches” απέναντι στο sample.pdf string, και το contract “missing word returns zero matches”
Version 1.19.0
- Προστέθηκε η ιδιότητα FitMode στο TPdfView με τέσσερις τιμές: pfmNone (manual zoom), pfmActualSize (100%), pfmFitPage (ολόκληρη η σελίδα χωρά στο viewport), και pfmFitWidth (το πλάτος της σελίδας ταιριάζει με το πλάτος του viewport). Το ενεργό fit mode εφαρμόζεται ξανά αυτόματα στο Resize και όταν αλλάζει η τρέχουσα σελίδα, έτσι ώστε τα μεγάλα έγγραφα με μικτά μεγέθη σελίδων να μένουν σωστά framed
- Η απευθείας ρύθμιση του Zoom ακυρώνει το ενεργό fit mode (το FitMode επιστρέφει σε pfmNone), ακολουθώντας τη συνηθισμένη συμπεριφορά των PDF viewers όπου η πληκτρολόγηση τιμής zoom βγάζει το έγγραφο από Fit Page / Fit Width
- Η προεπιλογή είναι pfmNone ώστε οι υπάρχουσες εφαρμογές να διατηρούν τη συμπεριφορά explicit-zoom
- Επεκτάθηκαν οι Delphi και Lazarus regression suites σε 124 cases η καθεμία, και η C++Builder suite σε 106 cases, καλύπτοντας την προεπιλεγμένη τιμή, το round-trip της λειτουργίας, το fit-page που παράγει πραγματικό zoom σε φορτωμένο έγγραφο, και το manual-zoom-cancels-fit-mode
Version 1.18.0
- Προστέθηκε η ιδιότητα PageColor στο TPdfView, αποσυνδέοντας το background της αποδιδόμενης PDF σελίδας από το Color του περιβάλλοντος control. Η προεπιλογή είναι clWhite, έτσι ώστε οι PDF σελίδες να αποδίδονται πλέον ως paper-white ανεξάρτητα από το theme της host εφαρμογής. Τα dark-mode viewers μπορούν πλέον να κρατούν τη scroll area σκοτεινή ενώ η πραγματική PDF σελίδα μένει λευκή (ή σε οποιοδήποτε χρώμα επιλέγει η εφαρμογή)
- Αλλαγή συμπεριφοράς: οι εφαρμογές που συνήθιζαν να ορίζουν το TPdfView.Color για να αλλάξουν το χρώμα της PDF σελίδας θα πρέπει πλέον να ορίζουν το PageColor. Η προεπιλεγμένη εμπειρία βελτιώνεται για τη συνηθισμένη περίπτωση (λευκές σελίδες πάνω σε themed backgrounds control) χωρίς καμία αλλαγή κώδικα
- Επεκτάθηκαν οι Delphi και Lazarus regression suites σε 120 cases η καθεμία, και η C++Builder suite σε 103 cases, καλύπτοντας την προεπιλεγμένη τιμή και το color round-trip
Version 1.17.0
- Προστέθηκαν toggles περιορισμού εισόδου χρήστη στο TPdfView ώστε οι εφαρμογές που ενσωματώνουν το viewer σε kiosks, preview panes ή read-only contexts να μπορούν να απενεργοποιούν χειρονομίες πλοήγησης χωρίς subclassing: το AllowUserPageChange ελέγχει τα νέα keyboard shortcuts PgUp / PgDn / Ctrl+Home / Ctrl+End· το ChangePageOnMouseScrolling ελέγχει τα νέα wheel-up / wheel-down page jumps· το AllowUserTextSelection είναι δεσμευμένο για το μελλοντικό μονοπάτι επιλογής κειμένου με mouse-drag. Και τα τρία έχουν προεπιλογή True ώστε οι υπάρχουσες εφαρμογές να αναβαθμίζονται χωρίς καμία αλλαγή συμπεριφοράς
- Η πλοήγηση σελίδας με το ροδάκι του ποντικιού παραλείπει το Ctrl+wheel ώστε οι εφαρμογές να μπορούν να κρατούν το Ctrl+wheel αποκλειστικά για zoom
- Επεκτάθηκαν οι Delphi και Lazarus regression suites σε 118 cases η καθεμία, και η C++Builder suite σε 101 cases, καλύπτοντας τις προεπιλεγμένες τιμές και το toggle round-trip
Version 1.16.2
- Επεκτάθηκε η κάλυψη regression του TPdfView για annotation link clicks όταν η σελίδα του viewer διαφέρει από την αντίστοιχη σελίδα του TPdf, χρησιμοποιώντας μια πραγματική headless διαδρομή mouse click σε Delphi, Lazarus, και C++Builder
- Οι Delphi και Lazarus suites τρέχουν πλέον 114 cases η καθεμία, και η C++Builder τρέχει πλέον 99 cases
Version 1.16.1
- Διορθώθηκε ο χειρισμός link-click στο TPdfView ώστε οι αυτόματες ενέργειες annotation και web-link να χρησιμοποιούν τη σελίδα που προβάλλεται αυτή τη στιγμή από τον viewer, ακόμη και όταν το αντίστοιχο TPdf component βρίσκεται σε διαφορετική σελίδα
- Θωρακίστηκε το TPdfThumbnailView απέναντι σε dangling Pdf references όταν καταστρέφεται το συνδεδεμένο TPdf component
- Προστέθηκε κάλυψη regression για τον χρόνο ζωής των thumbnail references· οι Delphi και Lazarus suites τρέχουν πλέον 113 cases η καθεμία, και η C++Builder τρέχει πλέον 98 cases
- Συγχρονίστηκαν το README, η τεκμηρίωση δοκιμών, το περιεχόμενο αναζήτησης / ευρετηρίου του HTML Help, και τα παραγόμενα outputs των C++ packages με τις ενημερώσεις ενσωμάτωσης από v1.7.0 έως v1.16.0
Version 1.16.0
- Προστέθηκε ένα νέο Delphi PrintDialog demo (Demo/Delphi/PrintDialog) που εστιάζει στην εκτύπωση N-up (1 / 2 / 4 / 9 σελίδες ανά φύλλο) με φιλτράρισμα περιττών / ζυγών σελίδων, απόδοση σε grayscale, και προαιρετικά περιγράμματα κελιών ενός pixel. Είναι σκόπιμα ένα μικρό συνοδευτικό του υπάρχοντος PrintPDF demo, το οποίο ήδη καλύπτει preview, recent files, zoom, και scaling
Version 1.15.0
- Προστέθηκε ένα νέο component TPdfThumbnailView (unit FPdfThumbnail) που αποδίδει ένα thumbnail ανά σελίδα ανά γραμμή σε side panel με δυνατότητα κύλισης, με επισήμανση hover και επιλογής μαζί με πλοήγηση click-to-go. Έχει σχεδιαστεί να στέκεται δίπλα σε ένα TPdfView ώστε οι τελικοί χρήστες να μπορούν να περιηγούνται σε ένα μεγάλο έγγραφο ανά σελίδα
- Το component είναι καταχωρισμένο στην καρτέλα losLab palette μαζί με τα TPdf και TPdfView· βασικές ιδιότητες: Pdf, CurrentPageIndex, ThumbnailWidth, ThumbnailHeight, TextColor, HoverColor, SelectionColor, BorderColor, και το event OnPageClick
- Επεκτάθηκαν οι Delphi και Lazarus regression suites σε 112 cases η καθεμία, και η C++Builder suite σε 97 cases, καλύπτοντας defaults, round-trip μεγέθους thumbnail, clamping ακραίων τιμών, color round-trip, και ανάθεση event handler
Version 1.14.0
- Προστέθηκε ένα νέο Delphi BatchExport demo (Demo/Delphi/BatchExport) που δείχνει πώς να μετατρέπετε πολλά αρχεία PDF σε JPG σε μία διέλευση χρησιμοποιώντας το TPdf.LoadCustomDocument για streaming load, το IPdfCancellationToken για συνεργατική ακύρωση, και μπάρες προόδου συνολικά ανά αρχείο και ανά σελίδα. Το demo χρησιμοποιεί ένα TPdf instance ανά αρχείο (το ίδιο το PDFium δεν είναι thread safe) και ανοίγει τον φάκελο εξόδου στο Explorer όταν η εξαγωγή ολοκληρωθεί με επιτυχία
Version 1.13.0
- Προστέθηκε ένα UI overlay για async rendering στο TPdfView μέσω τριών νέων ιδιοτήτων: AsyncRendering, LoadingText, και LoadingColor. Όταν το AsyncRendering είναι True, η single-page paint διαδρομή σχεδιάζει έναν μικρό δείκτη “Loading...” πάνω από την αποδιδόμενη σελίδα ώστε οι εφαρμογές που χρησιμοποιούν δικό τους worker για μακρές αποδόσεις να μοιράζονται ένα συνεπές οπτικό affordance
- Οι προεπιλογές διατηρούν την υπάρχουσα συμπεριφορά: το AsyncRendering είναι False, οπότε οι εφαρμογές που δεν το ενεργοποιούν δεν βλέπουν καμία οπτική αλλαγή
- Η τεκμηρίωση διευκρινίζει ότι το ίδιο το PDFium δεν είναι thread safe — στην πράξη η μεταφορά της απόδοσης σε worker απαιτεί ο caller να κρατά ένα TPdf ανά worker· το επερχόμενο batch-export demo δείχνει αυτό το μοτίβο
- Επεκτάθηκαν οι Delphi και Lazarus regression suites σε 106 cases η καθεμία, και η C++Builder suite σε 93 cases, καλύπτοντας τις προεπιλεγμένες τιμές και το round-trip των τριών ιδιοτήτων
Version 1.12.0
- Προστέθηκε χειρισμός συνδέσμων με κλικ στο TPdfView. Η νέα ιδιότητα LinkOptions ελέγχει την αυτόματη συμπεριφορά για τους τέσσερις τύπους ενεργειών συνδέσμου PDF: goto (άλμα σε σελίδα), URI (ShellExecute), launch (ShellExecute), και ενσωματωμένο GotoR (reserved). Οι προεπιλογές ενεργοποιούν τα loAutoGoto και loAutoOpenURI· τα loAutoLaunch και loAutoEmbeddedGoto μένουν κλειστά ώστε ένα τυχαίο κλικ να μην μπορεί να τρέξει αυθαίρετο πρόγραμμα
- Προστέθηκαν τα events OnAnnotationLinkClick και OnWebLinkClick που ενεργοποιούνται πριν από οποιαδήποτε αυτόματη ενέργεια και επιτρέπουν στις εφαρμογές να επιθεωρούν τον σύνδεσμο, να τον σημειώνουν ως Handled, ή να τον ανακατευθύνουν (για παράδειγμα, σε security prompt)
- Η ανίχνευση click σε σύνδεσμο εκτελείται μόνο όταν η κίνηση είναι κλικ και όχι drag, χρησιμοποιώντας ένα νέο MouseDown anchor ώστε οι χειρονομίες μετακίνησης να συνεχίζουν να περνούν από την υπάρχουσα διαδρομή κύλισης χωρίς αλλαγή
- Επεκτάθηκαν οι Delphi και Lazarus regression suites σε 102 cases η καθεμία, και η C++Builder suite σε 91 cases, καλύπτοντας τις προεπιλογές του LinkOptions, το set round-trip, και την ανάθεση event handler
Version 1.11.0
- Προστέθηκε οπτικό φινίρισμα στο TPdfView: οι ιδιότητες PageShadowSize, PageShadowColor, και PageBorderColor ζωγραφίζουν προαιρετική σκιά κάτω από το page rectangle και ένα περίγραμμα ενός pixel γύρω του. Οι προεπιλογές διατηρούν την προηγούμενη επίπεδη εμφάνιση (PageShadowSize = 0· το περίγραμμα σχεδιάζεται στο προεπιλεγμένο clBlack αλλά χάνεται πάνω στο προεπιλεγμένο λευκό background μέχρι οι callers να αλλάξουν τα χρώματα)
- Προστέθηκε μια ιδιότητα SmoothScroll ως opt-in flag για μελλοντικό incremental scroll animation· η ιδιότητα κάνει round-trip σήμερα και είναι συνδεδεμένη ώστε οι εφαρμογές να μπορούν να αποθηκεύουν την προτίμηση, ενώ η πλευρά απόδοσης εξακολουθεί να χρησιμοποιεί την υπάρχουσα άμεση συμπεριφορά κύλισης
- Επεκτάθηκαν οι Delphi και Lazarus regression suites σε 98 cases η καθεμία, και η C++Builder suite σε 89 cases, καλύπτοντας τις προεπιλεγμένες τιμές, το round-trip της ιδιότητας, και το clamp αρνητικού shadow size
Version 1.10.0
- Προστέθηκε άμεση εισαγωγή εικόνας μέσω των νέων overloads TPdf.AddImage και TPdfView.AddImage που δέχονται είτε file path είτε TBitmap, επιπλέον του υπάρχοντος AddPicture που βασίζεται σε TPicture. Το AddImage(FileName) αναγνωρίζει κάθε μορφή που είναι καταχωρισμένη στις VCL ή LCL graphics units (BMP, PNG μέσω του PngImage unit, JPG κ.λπ.) και περνά από την ίδια διαδρομή με το AddPicture ώστε η συμπεριφορά να είναι ίδια
- Το AddImage(TBitmap) παρακάμπτει το ενδιάμεσο TPicture, κάτι που απλοποιεί τους callers που ήδη διαθέτουν TBitmap από εργασία απόδοσης ή batch generation
- Επεκτάθηκαν οι Delphi και Lazarus regression suites σε 92 cases η καθεμία, και η C++Builder suite σε 84 cases, καλύπτοντας εισαγωγή bitmap, bounds page object, απόρριψη nil bitmap, και φόρτωση BMP αρχείου
Version 1.9.0
- Προστέθηκε υψηλού επιπέδου υποστήριξη μετασχηματισμών μέσω της νέας κλάσης TPdfMatrix στο unit FPdfMatrix. Το TPdfMatrix τυλίγει το FS_MATRIX του PDFium με OO API για Translate, Scale, Rotate, HorizontalFlip, VerticalFlip, CentralFlip, Skew, και Multiply, κατάλληλο για σύνθεση transforms πριν δοθούν στο FPDFPageObj_SetMatrix και σε παρόμοια PDFium APIs
- Το TPdfMatrix.Multiply αποτυπώνει σωστά τα έξι στοιχεία του matrix πριν υπολογίσει τις νέες τιμές γραμμών, διορθώνοντας ένα λανθάνον ζήτημα όπου οι εναλλακτικές Pascal υλοποιήσεις υπεργράφουν παλαιότερα στοιχεία κατά την ίδια κλήση και παράγουν λανθασμένα αποτελέσματα για κάθε σύνθεση πέρα από καθαρή μετατόπιση
- Επεκτάθηκαν οι Delphi και Lazarus regression suites σε 88 cases η καθεμία, και η C++Builder suite σε 81 cases, καλύπτοντας identity, reset, translate / scale / flip, σειρά post-multiplicative composition, και το Multiply regression case
Version 1.8.0
- Προστέθηκε on-demand stream loading μέσω της νέας μεθόδου TPdf.LoadCustomDocument(AStream, AOwnsStream) και της βοηθητικής κλάσης TPdfStreamAdapter, με βάση το FPDF_LoadCustomDocument του PDFium. Το PDFium διαβάζει πλέον blocks από το παρεχόμενο TStream μόνο όταν χρειάζεται, έτσι ώστε πολύ μεγάλα ή απομακρυσμένα PDFs να μην απαιτούν πια upfront αντίγραφο στη μνήμη
- Προστέθηκε προαιρετική ιδιοκτησία stream: η παράδοση του AOwnsStream = True δίνει τη διάρκεια ζωής του TStream στο TPdf, το οποίο το ελευθερώνει όταν εκτελεστεί το UnloadDocument
- Επεκτάθηκαν οι Delphi και Lazarus regression suites σε 79 cases η καθεμία, και η C++Builder suite σε 75 cases, καλύπτοντας streaming load μέσω TFileStream, cleanup owned stream, και το contract externally-owned-stream survives-unload
Version 1.7.0
- Προστέθηκαν συνεργατικά async cancellation primitives στο νέο unit FPdfAsync, εκθέτοντας τα IPdfCancellationToken / IPdfCancellationTokenSource και ένα επαναχρησιμοποιήσιμο singleton PdfNoCancellationToken ώστε οι ροές μακράς απόδοσης και εξαγωγής να μπορούν να υποστηρίζουν καθαρή σημασιολογία ακύρωσης από το UI
- Προστέθηκε ένα ελαφρύ βοηθητικό TPdfFuture<T> που τρέχει έναν worker σε background thread και επιστρέφει το envelope TPdfFutureResult<T> στο main thread, διακρίνοντας περιπτώσεις επιτυχίας, ακύρωσης, και αποτυχίας
- Επεκτάθηκαν οι Delphi και Lazarus regression suites σε 76 cases η καθεμία, και η C++Builder suite σε 73 cases, με κοινή κάλυψη της κατάστασης ακύρωσης, του idempotent cancel, του callback fan-out, και της post-cancel εγγραφής
Version 1.6.10
- Προστέθηκε υψηλού επιπέδου πρόσβαση TPdf.PrintPageRanges στο print page range της προτίμησης προβολής PDF, επιστρέφοντας one-based page ranges για τον κώδικα της εφαρμογής
- Προστέθηκαν τα TPdf.SetFormFieldFlags / SetFormFieldFlagsAt και τα αντίστοιχα βοηθήματα TPdfView ώστε οι εφαρμογές να μπορούν να ενημερώνουν τα AcroForm field flags μέσω του δημόσιου API, συμπεριλαμβανομένης της κάλυψης για password και multi-select flags
- Θωρακίστηκε η κάλυψη ABI του PDFium binding για Windows-sized FPDF_DWORD, FPDF_FILEACCESS callbacks, και πεδία V8 embedder slot
Version 1.6.9
- Προστέθηκαν low-level Skia rendering bindings για τα νεοεξαγόμενα APIs FPDF_RenderPageSkia και FPDF_FFLDrawSkia στα ενσωματωμένα standard και V8 PDFium DLLs
- Επεκτάθηκαν οι έλεγχοι κάλυψης του δημόσιου binding ώστε η φόρτωση standard και V8 DLL να επαληθεύει πλέον τα Skia render entry points μαζί με τα υπάρχοντα probes δυνατοτήτων V8/XFA
Version 1.6.8
- Προστέθηκαν τα TPdf.SetTextPositions και TPdfSingleArray για να ορίζονται θέσεις ανά χαρακτήρα σε υπάρχοντα text objects μέσω του νεοεξαγόμενου FPDFText_SetPositions API
- Το FPDFText_SetPositions προήχθη σε απαιτούμενο binding για τα τρέχοντα ενσωματωμένα PDFium DLLs, ενώ επιβεβαιώνεται ότι τα Skia render entry points παραμένουν μη διαθέσιμα επειδή τα DLLs ακόμα δεν τα εξάγουν
- Επεκτάθηκαν οι Delphi, C++Builder, και Lazarus regression suites σε 65 cases η καθεμία με κάλυψη text-position
Version 1.6.7
- Προστέθηκε υψηλού επιπέδου πρόσβαση του TPdf στις JavaScript name-tree actions του εγγράφου, επιστρέφοντας ονόματα ενεργειών και scripts μέσω των JavaScriptAction και JavaScriptActions
- Προστέθηκε το TPdf.FileIdentifier για ανάγνωση των permanent και changing trailer IDs ως binary TBytes χωρίς το terminator byte του PDFium
- Προστέθηκαν τα TPdf.PageBox, GetPageBox, και SetPageBox για τα MediaBox, CropBox, BleedBox, TrimBox, και ArtBox της τρέχουσας σελίδας
- Επιβεβαιώθηκε ότι τα τρέχοντα ενσωματωμένα PDFium DLLs αφήνουν μόνο τα Skia render entry points μη διαθέσιμα στο runtime επειδή αυτά τα exports δεν υπάρχουν
- Επεκτάθηκαν οι Delphi, C++Builder, και Lazarus regression suites σε 64 cases η καθεμία με κάλυψη document JavaScript, trailer ID, και page-box
Version 1.6.6
- Προστέθηκε runtime υποστήριξη για το ενσωματωμένο V8-enabled PDFium DLL. Η ρύθμιση του EnableV8Engine πριν από τη φόρτωση επιλέγει πλέον το pdfium.v8.dll από το δέντρο DLLs\Win32 ή DLLs\Win64 και εκθέτει bindings μόνο για V8/XFA όταν το φορτωμένο DLL τα παρέχει
- Προστέθηκαν τα V8CapabilitiesAvailable, XfaBStrHelpersAvailable, GetRecommendedV8Flags, και low-level προαιρετικά bindings για τα FPDF_BStr_*, FPDF_GetRecommendedV8Flags, και FPDF_GetArrayBufferAllocatorSharedInstance
- Το FPDFText_SetPositions έγινε προαιρετικό ώστε το PDFium Delphi Component να συνεχίζει να φορτώνει με PDFium DLLs που δεν εξάγουν αυτόν τον πειραματικό text-position setter
- Επεκτάθηκαν οι Delphi, C++Builder, και Lazarus regression suites σε 61 cases η καθεμία με κάλυψη δυνατοτήτων standard DLL και V8 DLL