|
THotPDF.SaveIncrementalUpdate
|
Ö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);
Sınırlı overloadPozitif 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 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 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 |