function SaveAsReproducible(Stream: TStream; out Report: TPdfReproducibleReport; AllowSignedDocument: Boolean = False): Boolean;
function SaveAsReproducible(const FileName: string; out Report: TPdfReproducibleReport; AllowSignedDocument: Boolean = False): Boolean;
De objectvolgorde is al stabiel (oplopend objectnummer) en de afleiding van de content-hash /ID is deterministisch, dus de resterende non-determinisme is de wandklok /CreationDate en /ModDate die PDFium in /Info schrijft
StripDictionaryEntries verwijdert die tijdstempelsleutels uit de /Info-body, en de herbouwde trailer laat de bron-/ID weg (die is afgeleid van bytes met tijdstempels)
Onbereikbare objecten worden ook weggeveegd, net als bij SaveAsReachable, en objectnummers en generaties blijven stabiel
TPdfReproducibleReport rapporteert gehandhaafde en gesnoeide objectaantallen plus het aantal verwijderde tijdstempelvermeldingenAllowSignedDocument expliciet is ingeschakeld, omdat een volledige herschrijving bestaande handtekeningbytebereiken ongeldig maakt/ID volledig weg; aanroepers die een stabiele identificatie nodig hebben, kunnen er één uit de uitvoerbytes afleiden
Pdf.SaveAsReproducible('stable.pdf', Report);
WriteLn('stripped ', Report.StrippedTimestampCount, ' timestamps');