Μετατροπή φορτωμένου PDF σε PDF/A-4 raster

Η HPDFArchivalConversion δημιουργεί ένα νέο έγγραφο PDF/A-4 από το ορατό περιεχόμενο σελίδων ενός φορτωμένου εγγράφου THotPDF, με αυστηρό native rendering και ένα sRGB ICC profile που παρέχετε εσείς

Κάθε σελίδα εξόδου περιέχει μια συμπιεσμένη χωρίς απώλειες RGB raster εικόνα στο ζητούμενο DPI, με τις αρχικές ορατές διαστάσεις, το crop, την περιστροφή και το UserUnit να αποτυπώνονται στη γεωμετρία της σελίδας εξόδου

Σημεία εισόδου

function HPDFConvertLoadedToPDFA4Raster(Source: THotPDF;
  Destination: TStream; const SRGBProfile: TBytes;
  const Options: THPDFArchivalConversionOptions;
  out Report: THPDFArchivalConversionReport): Boolean;

function HPDFConvertLoadedToPDFA4RasterFile(Source: THotPDF;
  const TargetFileName: string; const SRGBProfile: TBytes;
  const Options: THPDFArchivalConversionOptions;
  out Report: THPDFArchivalConversionReport): Boolean;

Φορτώστε πρώτα την πηγή και κρατήστε κάθε input stream ιδιοκτησίας του caller ζωντανό μέχρι να καταστραφεί το έγγραφο πηγής

Για κανονική αρχειακή δημοσίευση χρησιμοποιήστε το σημείο εισόδου αρχείου: ελέγχει έναν υπάρχοντα στόχο για aliasing της πηγής πριν δημιουργήσει ένα αποκλειστικό προσωρινό αρχείο στον κατάλογο στόχο, επικυρώνει την πλήρη μετατροπή, κάνει flush το αρχείο και αντικαθιστά τον στόχο με MoveFileEx χρησιμοποιώντας MOVEFILE_REPLACE_EXISTING και MOVEFILE_WRITE_THROUGH

Αποτυχίες μετατροπής, rendering, επικύρωσης, ακύρωσης και δημοσίευσης διατηρούν ένα υπάρχον αρχείο στόχο ανέπαφο και αφαιρούν την προσωρινή έξοδο

Το σημείο εισόδου stream απαιτεί έναν κενό, seekable προορισμό στη θέση zero και απορρίπτει γνωστά aliases της εισόδου μέσω IsLoadedSourceStreamAlias· δημοσιεύει bytes μόνο αφού η πλήρης staged έξοδος περάσει την native επικύρωση

Αποτυχία εγγραφής στον προορισμό προκαλεί ένα best-effort reset σε κενό stream, αλλά μια αυθαίρετη συσκευή ή custom stream μπορεί να απορρίψει αυτό το reset και να κρατήσει μερική εγγραφή· όταν η δημοσίευση αρχείου πρέπει να είναι ατομική, χρησιμοποιήστε το σημείο εισόδου αρχείου

Επιλογές και όρια πόρων

ΕπιλογήΠροεπιλογήΣημασία
DPI150Ζητούμενη φυσική ανάλυση, αποδεκτό εύρος από 36 έως 1200
MaxPages1000Μέγιστος αριθμός φορτωμένων σελίδων πηγής
MaxPixelsPerPage40,000,000Μέγιστο πλήθος pixels σελίδας και μέγιστο πλήθος pixels μεμονωμένης εικόνας πηγής
MaxTotalPixels500,000,000Μέγιστο αθροιστικό πλήθος raster pixels εξόδου
MaxRasterBytes256 MiBΜέγιστη δέσμευση raster για σελίδα ή εικόνα πηγής, με συντηρητικό έλεγχο τεσσάρων bytes ανά pixel
MaxOutputBytes256 MiBΜέγιστο μέγεθος staged PDF, επιβάλλεται πριν από δεσμεύσεις και εγγραφές stream
MaxDecodedStreamBytes64 MiBΠεριορίζει κάθε αλυσίδα φίλτρων, τον συνδυασμένο content preflight κάθε σελίδας, τα μεμονωμένα native stream-read callbacks, τα μεμονωμένα κωδικοποιημένα streams εικόνων πηγής και τον native output validator
MaxTotalDecodedBytes256 MiBΠεριορίζει την πρόσθετη εργασία native filtered decoders σε όλη τη μετατροπή, τον συνδυασμένο content preflight σε όλες τις σελίδες και τα αθροιστικά native stream-read callbacks σε όλες τις σελίδες
MaxInputObjects200,000Μέγιστος αριθμός ήδη φορτωμένων indirect objects
CancellationTokennilΔανεικό token που ελέγχεται πριν την εργασία, κατά το native rendering και decoding, και πριν τη δημοσίευση
CheckpointnilΔανεικό synchronous callback που καλείται με nil sender στα checkpoints μετατροπής και native πόρων· μην επανεισέρχεστε στο έγγραφο πηγής

Τα όρια decoding μετρούν εργασία decoder και μπορεί να χρεώσουν το ίδιο filtered stream ξανά κατά το preflight, τη μεταγλώττιση display-list και το rendering· η αύξηση ενός ορίου είναι ρητή απόφαση του caller

Το pixel preflight καλύπτει τόσο τη ζητούμενη φυσική ανάλυση όσο και το integer DPI του native renderer μετά την κλιμάκωση του UserUnit· πολύ μικρές μονάδες μπορεί να απαιτήσουν επιπλέον raster pixels, και κλασματικές διαστάσεις σελίδας μπορεί να επιφέρουν subpixel resampling όταν η εικόνα αντιστοιχιστεί ξανά στη φυσική σελίδα

Τα όρια μετατροπής ισχύουν μετά τη φόρτωση της πηγής· όταν δέχεστε μη αξιόπιστη είσοδο, ρυθμίστε τα δικά της όρια πόρων στον loader

Ο object graph της πηγής διατηρείται, ενώ read caches και στατιστικά decoding ενδέχεται να συμπληρωθούν· οι ρυθμίσεις rendering, το cancellation token, το backend και τα όρια decoding επαναφέρονται σε επιτυχία και σε αποτυχία

Δώστε στον converter αποκλειστική πρόσβαση στο έγγραφο πηγής όσο εφαρμόζει προσωρινά αυτές τις ρυθμίσεις

Rendering και χρώμα

Κάθε σελίδα πρέπει να κάνει render χωρίς native fallback diagnostic, χωρίς dropped diagnostic και χωρίς αποτυχία για πόρο που λείπει· μη υποστηριζόμενο περιεχόμενο απορρίπτει τη μετατροπή αντί να δημοσιεύσει ημιτελή σελίδα

Το όρισμα ICC πρέπει να περιγράφει sRGB με αναγνωρίσιμη αναπαράσταση matrix/TRC, τα τυπικά D50-adapted primaries και τη transfer function IEC sRGB· άσχετα RGB profiles, CMYK profiles, κατεστραμμένα profiles και profiles βάσει LUT απορρίπτονται

Η έξοδος δηλώνει ένα sRGB OutputIntent και μεταδεδομένα XMP PDF/A-4· custom proof ή output ICC workflow ήδη ρυθμισμένο στην πηγή απορρίπτεται, επειδή οι ρυθμίσεις των image decoders του δεν μπορούν να ερμηνευθούν ξανά με ασφάλεια ως sRGB

Το build FPC απαιτεί τη native codec γέφυρά του με διαθέσιμο LittleCMS και απορρίπτει τη μετατροπή όταν λείπει αυτό το color-management backend

Για τα streams εικόνων JPEG και JPX, συμπεριλαμβανομένων κωδικοποιημένων inline εικόνων, οι πραγματικές διαστάσεις codestream ελέγχονται πριν το native pixel decoding και πρέπει να συμφωνούν με το image dictionary του PDF

Το JPEG δέχεται 8-bit baseline, extended sequential και progressive headers εντός ορίων· το JPX δέχεται J2K SIZ headers εντός ορίων και JP2 boxes συνηθισμένου μήκους με το πολύ τέσσερα components και ακρίβεια component έως 16 bits

Οι κωδικοποιημένοι codecs έχουν ένα επιπλέον συντηρητικό working budget 64 bytes ανά pixel πηγής, και τα tile metadata του JPX περιορίζονται τόσο από το MaxInputObjects όσο και από 1024 bytes ανά tile μέσα στο MaxRasterBytes· το προεπιλεγμένο raster budget 256 MiB επιτρέπει συνεπώς το πολύ 4,194,304 κωδικοποιημένα pixels πηγής, και οι callers μπορούν να το αυξήσουν ρητά για μεγαλύτερες εικόνες

Η μετατροπή JBIG2 απορρίπτεται επειδή οι εσωτερικές δεσμεύσεις regions και symbols της δεν μπορούν να οριοθετηθούν από το διαθέσιμο header API· nonterminal image codecs, JP2 boxes εκτεταμένου μήκους, μη υποστηριζόμενα wrappers και wrapped codec streams με DecodeParms απορρίπτονται επίσης

Οι παράμετροι CCITT fax πρέπει να διατηρούν τις δηλωμένες θετικές διαστάσεις εικόνας· overrides DecodeParms.Columns και Rows που διαφέρουν από το dictionary, συμπεριλαμβανομένου αγνώστου Rows=0, απορρίπτονται πριν το native decoding

Οι έλεγχοι αυτοί οριοθετούν τα γνωστά header και allocation profiles που δέχεται ο converter και δεν υπόσχονται πλήρες process-memory sandbox για κάθε native decoder

Απώλεια πληροφορίας και ποιότητας

Το THPDFArchivalConversionReport παρέχει κατάσταση επιτυχίας και ακύρωσης, πλήθος σελίδων πηγής και rendered σελίδων, raster pixels, bytes εξόδου, πλήθος αφαιρεμένων annotations/φορμών/συνημμένων, ένα failure diagnostic και τα ευρήματα της native επικύρωσης

Το FailureKind διακρίνει τα afkNone, afkConversion, afkBudget και afkCancelled· τυποποιημένες αποτυχίες budget του converter παρέχουν επίσης BudgetMetric, BudgetObserved και BudgetLimit

Μια εξαίρεση σε checkpoint σταματά τη μετατροπή και αναφέρεται μέσω του native failure result· wrappers που απαιτούν την αρχική κατηγορία εξαίρεσης του callback πρέπει να την κρατήσουν πριν την πιάσει ο converter

Η λειτουργία archive.pdfa4.raster JSON και C ABI απαιτεί ρητή αποδοχή απώλειας πληροφορίας, διατηρεί το handle της πηγής, παραδίδει το επικυρωμένο PDF και την αναφορά απωλειών, και εφαρμόζει συντηρητικά όρια job budget

Επαλήθευση συμμόρφωσης

Ο converter ξαναφορτώνει την staged έξοδό του και απαιτεί ValidatePDFA4 με το βασικό προφίλ PDF/A-4 πριν τη δημοσίευση· ο native validator καλύπτει το τεκμηριωμένο, πεπερασμένο σύνολο κανόνων του και δεν αποτελεί απόδειξη κάθε απαίτησης του ISO 19005-4

Για ανεξάρτητη αποδοχή μπορείτε να χρησιμοποιήσετε veraPDF με --flavour 4· το regression fixture με μη ενσωματωμένο κείμενο, διαφάνεια, εικόνα RGB, σύνδεσμο, signature widget και συνημμένο πέρασε σε veraPDF 1.30.2 χωρίς κανέναν αποτυχημένο κανόνα ή έλεγχο

Εκτελέστε Tests/Delphi/Run-HotPDFArchivalTests.bat για τη στοχευμένη non-GUI σουίτα regression