THotPDF.SaveIncrementalUpdate

THotPDF

 

Önceki  Yöntemler  THotPDF

Tüm özgün kaynak baytları olduğu gibi tutarken seyrek bir artımlı revizyon yazar

 

Delphi sözdizimi:

procedure SaveIncrementalUpdate(const TargetFile: TFileName);

 

C++ sözdizimi:

void __fastcall SaveIncrementalUpdate(System::Sysutils::TFileName TargetFile);

 

procedure SaveIncrementalUpdate(const TargetFile: TFileName); overload;

Sınırlı overload

procedure SaveIncrementalUpdate(const TargetFile: TFileName;
  MaxOutputBytes: Int64; Checkpoint: TNotifyEvent); overload;

Pozitif bir MaxOutputBytes, BeginIncrementalUpdate gerektirir ve eksiksiz orijinal prefix'i artı eklenmiş delta'yı sınırlar; negatif limitler geçersizdir, sıfır ise legacy sınırsız davranışı korur

Pozitif-limit overload'u, delta'sını geçici depolamaya spool eder ve serialize etme limiti aştığında yayımdan önce EHPDFIncrementalOutputBudget raise eder — o başarısızlık path'inde mevcut bir hedefi korur

Checkpoint, object traversal ve yayım kopyaları sırasında belgeyi ve yazma sırasında dahili spool'u alır; belirli bir Sender türüne güvenmeyin

Bu düşük-düzeyli kaydetme, ayrık bir hedef için atomik bir replacement API değildir; yayım sırasında cancellation veya bir I/O başarısızlığı kısmi bir dosya bırakabilir — atomik harici yayım için private bir aday veya doğrulanmış incremental imzalama işini kullanın

Açıklama

SaveIncrementalUpdate, BeginIncrementalUpdate'in başlattığı iş akışını tamamlar. Yalnızca değişen, yeni ve silinen nesneler gezilip yazılır; seyrek xref alt bölümleri ve /Prev'i önceki revizyona işaret eden bir trailer bunlara eşlik eder

Farklı bir hedef için, tamamlanan delta eklenmeden önce özgün önek dosya destekli kaynaktan sırayla kopyalanır. Aynı hedef için HotPDF kaynak kimliğini, uzunluğu ve yazma zamanını doğrular, tembel kaynak tanıtıcılarını serbest bırakır, doğrudan ekler, dosyayı boşaltır ve ekleme başarısız olursa özgün uzunluğa geri kırpılır. Her iki yol da var olan bayt aralıklarını ve önceki imzaları korur

 

Hiçbir nesne kirli ya da silinmemişse hedef, kaynakla bayt düzeyinde aynıdır ve hiçbir xref bölümü, trailer, satır sonu veya EOF işareti eklenmez. Bir revizyon gerektiğinde ilk trailer ID kararlı kalır, yalnızca ikinci değişiklik ID'si döndürülür

Şifreli bir kaynak için eklenen trailer, özgün /Encrypt nesnesini ve generation referansını birebir yineler. Yeniden yazılan dizeler ve stream'ler kaynak güvenlik işleyicisi tarafından korunmaya devam eder; oluşan belge, özgün Standard kullanıcı ve sahip parolalarını veya genel anahtar alıcı kimlik bilgilerini kabul etmeye devam eder

Başarılı bir aynı hedefli ekleme, tutulan kaynağı tüketir; çünkü özgün revizyon yerinde değişmiştir. Başka bir revizyon oluşturmadan önce BeginIncrementalUpdate'i yeniden çağırın. GetIncrementalUpdateSourceInfo; saklanan baytları, sonda baytlarını, kopyalama ve ekleme sayılarını, izlenen değişiklikleri, ziyaret edilen nesneleri, xref girdilerini, kilitlemeyi ve tüketim durumunu ortaya koyar

Yıkıcı düzenlemeler, etkin boş nesne zincirinin tamamını otomatik olarak yeniden kurar. Var olan boş generation'lar korunur; yeni boşa çıkan generation'lar 65535'e kadar ilerler, yeniden yazılan nesneler özgün generation'larını korur ve yazılan her girdi nesne numarasına göre sıralanır. GetLastIncrementalXRefRebuildInfo, kayıttan sonra kaynak, geçiş, doyma ve yeniden kurulan zincir sayılarını döndürür

Sonradan bir imza revizyonu eklerken, yeni bir imza hazırlamadan veya yerleştirmeden önce bu metodu çağırın. Eklenen dosya oluştuğunda, yeni imza değerini rezerve etmek ve doldurmak için normal imzalama yardımcılarını kullanın

Sertifikalı veya kullanım haklı belgeler için SaveIncrementalUpdateAuthenticated aynı dizinde bir aday yazar, ilke taşıyan her imzayı kimlik doğrular, sonraki tüm revizyonları zorunlu kılar ve hedefi yalnızca tüm ilkeler güncellemeyi kabul ettikten sonra atomik olarak değiştirir

 

Ayrıca bkz.: BeginIncrementalUpdate, MarkDirty, SaveIncrementalUpdateAuthenticated, GetIncrementalUpdateSourceInfo, GetLastIncrementalXRefRebuildInfo, AcroForm desteği, PDF filtre desteği