TPdfNavigationMergeHelper.MergeFilesWithNavigation özelliğini etkinleştirmek için uses yan tümcesine FPdfMerge ekleyin veya genel MergePdfFilesWithNavigation işlevini açık bir hedef belgeyle çağırın
Yardımcı, yerel sayfa içe aktarmalarını aşamalandırır, hiyerarşik outline'ları yeniden oluşturur, adlandırılmış hedefleri birleştirir, sayfa bağlantılarını yeniden eşler ve çağıranın belgesini değiştirmeden önce sonucu bağımsız olarak yeniden açar
pmnPreserve kaynak hiyerarşisini korur; pmnGroupBySource her kaynak dosyanın adını taşıyan bir başlık ekler
Başlıklar, üst ilişkileri, stiller, renkler, genişletilmiş dallar, URI eylemleri ve çözümlenmiş iç sayfa hedefleri korunur; seçilen, tekrarlanan ve yeniden sıralanan sayfalar ilk içe aktarma örneğine eşlenir ve atlanan sayfalara giden hedefler başlığa dönüşür
Sayfalar eklendiğinde mevcut hedef outline'ları kayar; gezinme ve yerel sayfa içe aktarmaları yakalanırken kaynak dosyalar yazma paylaşımı engellenmiş şekilde açık kalır
Yalnızca hatada duran birleştirme desteklenir; imzalı hedefler, desteklenmeyen outline eylemleri ve şifreli son işlem hata raporuyla reddedilir; başarısızlık veya iptal çağıranın belgesini korur
Bu API, mevcut yerel form ilkesini korur; gelişmiş AcroForm alan çakışması ve kaynak işlemeye ihtiyacınız olduğunda FPdfFormMerge kullanın
PreserveNamedDestinations ve PreservePageLinks varsayılan olarak True değerindedir; her iki seçenekten birini False yapmak, ek gezinme işlemenin o bölümünü atlar
Adlandırılmış hedefler, hiyerarşik ağaçları, dolaylı dizileri ve /D içeren hedef sözlüklerini kapsayacak şekilde hem eski katalog /Dests sözlüğünden hem de /Names/Dests ad ağacından okunur; her iki biçim de aynı anahtarı tanımlıyorsa ad ağacı değeri öncelik alır
Sonuç, dengeli bir /Names/Dests ağacı kullanır ve /EmbeddedFiles gibi ilgisiz hedef ad ağaçlarını korur; hedeflerle ilgisiz kaynak ağaçları bu yardımcı tarafından içe aktarılmaz
Anahtarlar, UTF-16BE kodlaması dahil özgün PDF dize baytlarını korur; tam görünüm modu ve parametreleri, /FitH null ve /XYZ null 34 null dahil korunur
| Policy | Behavior |
|---|---|
pndReject | Hedefte zaten var olan bir kaynak anahtar, işlemin tamamını reddeder |
pndRename | Varsayılan ilke, çakışmayan adları korur ve çakışan adlara varsayılanı Imported_ olan DestinationPrefix önekini ekler; sonraki çakışmalar 2_Imported_Shared gibi belirleyici önekler kullanır |
pndNamespace | Her kaynak anahtar, DestinationPrefix, bir tabanlı kaynak dizini ve alt çizgiyle öneki alır, örneğin Imported_1_Shared; kalan çakışmalar belirleyici bir sayısal önek alır |
DestinationPrefix 1 ile 256 arasında yazdırılabilir ASCII karakteri içermelidir; anahtar bu kodlamayı kullandığında önekler UTF-16BE BOM'dan sonra eklenir
/Dest veya tek bir /A /GoTo eylemi kullanan iç bağlantı açıklamaları açık hedefler olarak yeniden yazılır; böylece adlandırılmış bağlantı hedefleri çakışma yeniden adlandırmasından sonra da doğru kalır
Mevcut bağlantı sahibi sayfaları ve hedefleri, sayfalar eklendiğinde kayar; tekrar tekrar içe aktarılan bir sayfanın her örneği bağımsız bir bağlantı açıklaması alır, iç hedefleri ise hedef sayfanın ilk seçilen örneğine eşlenir
Hedef sayfası atlanan hedefler, adlandırılmış hedef ağacından kaldırılır; etkilenen bir bağlantının /Dest veya GoTo eylemi kaldırılırken açıklama ve diğer özellikleri korunur
URI bağlantıları olduğu gibi kalır; /Next kullanan zincirli bağlantı eylemleri reddedilir çünkü eylem zincirlerini yeniden eşlemek bu yardımcının mevcut kapsamı dışındadır
Hatalı biçimlendirilmiş veya döngüsel hedef ağaçları, kullanılamayan nesne başvuruları ve yinelenen ad ağacı anahtarları işlemi reddeder; başarısızlık, iptal veya aşılan bütçe çağıranın belgesini değiştirmeden bırakır
Varsayılan sınırlar 10.000 outline öğesi, 128 derinlik, 1.048.576 başlık karakteri, 10.000 adlandırılmış hedef, 100.000 sayfa bağlantısı ve 256 MiB belge baytıdır; belge baytı üst sınırı MaxInt değerini aşmamalıdır
Ek hedef veya bağlantı işleme etkinleştirildiğinde en yüksek yapılandırılabilir derinlik 256dır, adlandırılmış hedef sınırı 65.536yı ve sayfa bağlantısı sınırı 1.000.000u aşmamalıdır; kaynak yakalama, ham anahtar baytlarını da 1 MiB ile sınırlar
Birleştirilmiş adlandırılmış anahtarlar, MaxTitleCharacters değerine eşit ayrı bir bayt bütçesi kullanır; her kaynak, seçilen sayfa filtrelemesinden önce yapılandırılan bütçeler içinde yakalanır
PreservedNamedDestinationCount son adlandırılmış hedefleri, RenamedNamedDestinationCount seçilen ilke tarafından değiştirilen içe aktarılan anahtarları ve RemovedNamedDestinationCount çözümlenmemiş ya da atlanan adlandırılmış hedefleri sayar
RemappedPageLinkCount hem mevcut hem içe aktarılan bağlantılardaki son iç hedefleri sayar ve RemovedPageLinkCount kaldırılan iç hedefleri sayar; hem /Dest hem GoTo içeren bir bağlantı her hedef için bir kez katkıda bulunur
type
TPdfMergeNavigationPolicy= (pmnPreserve, pmnGroupBySource);
TPdfMergeNamedDestinationPolicy= (pndReject, pndRename, pndNamespace);
TPdfNavigationMergeOptions= record
NativeOptions: TPdfBatchMergeOptions;
NavigationPolicy: TPdfMergeNavigationPolicy;
MaxOutlineItems: Integer;
MaxOutlineDepth: Integer;
MaxTitleCharacters: Integer;
MaxDocumentBytes: Int64;
PreserveNamedDestinations, PreservePageLinks: Boolean;
NamedDestinationPolicy: TPdfMergeNamedDestinationPolicy;
DestinationPrefix: string;
MaxNamedDestinations, MaxPageLinks: Integer;
class function Default: TPdfNavigationMergeOptions; static;
end;
TPdfNavigationMergeReport= record
Succeeded: Boolean;
Cancelled: Boolean;
ImportedSourceCount: Integer;
ImportedPageCount: Integer;
PreservedOutlineCount: Integer;
RemovedDestinationCount: Integer;
SourceGroupCount: Integer;
PreservedNamedDestinationCount, RenamedNamedDestinationCount: Integer;
RemovedNamedDestinationCount, RemappedPageLinkCount, RemovedPageLinkCount: Integer;
ErrorMessage: string;
end;
// The caller's document is replaced only after the complete staged result
// has been independently reopened and its outline destinations checked
TPdfNavigationMergeHelper= class helper for TPdf
function MergeFilesWithNavigation(const Sources: TPdfBatchMergeSources;
const Options: TPdfNavigationMergeOptions;
out Report: TPdfNavigationMergeReport): Boolean;
end;
function MergePdfFilesWithNavigation(Destination: TPdf;
const Sources: TPdfBatchMergeSources;
const Options: TPdfNavigationMergeOptions;
out Report: TPdfNavigationMergeReport): Boolean;
FPdfCompress, kendi sayfa içe aktarmalarını ve seyrek PDF revizyonlarını yöneten çağırıcılar için CapturePdfNavigation ve WritePdfNavigation sunar
TPdfNavigationNamedDestination.NameKey ham PDF anahtar baytlarını içerir; sayfa numaraları mutlak ve bir tabanlıdır, sıfır ise çözümlenmemiş bir hedefi belirtir
TPdfNavigationPageLink.PageNumber sahip sayfayı tanımlar; AnnotationIndex tüm özgün açıklamalar arasındaki sıfır tabanlı sıra, LinkIndex ise yalnızca bağlantı açıklamaları arasındaki sıfır tabanlı sıradır
Yazıcı, bağlantıları LinkIndex ile tanımlar, her açıklamayı son sayfa sahibiyle klonlar ve sağlanan sayfa hedeflerini ve kesin hedef son eklerini yazar; çağırıcılar, içe aktarmaları için gereken eksiksiz eşlemeyi sağlamalıdır
Yazıcı, birbirinden farklı kaynak ve çıkış akışları ile şifrelenmemiş, imzalanmamış bir belge ister; özdeş akışlarla yapılan bağımsız değişken reddi kaynağı korur, diğer başarısızlıklar ayrı çıkış akışını temizler
Bu akış işlevleri sayfa içe aktarmaz veya canlı bir TPdf belgesini değiştirmez; eksiksiz gezinme birleştirme için daha üst düzey işlemsel işlevi kullanın
function CapturePdfNavigation(Source: TStream; MaxNamedDestinations, MaxPageLinks, MaxDepth: Integer; out Names: TPdfNavigationNamedDestinations; out Links: TPdfNavigationPageLinks; out ErrorText: string): Boolean; function WritePdfNavigation(Source, Output: TStream; const Names: TPdfNavigationNamedDestinations; const Links: TPdfNavigationPageLinks; ReplaceNamedDestinations: Boolean; out ErrorText: string): Boolean;