property BookmarkFrom[Handle: FPDF_BOOKMARK]: TBookmark; // للقراءة فقط
BookmarkFrom هو الجسر بين تنقل العلامات المرجعية منخفض المستوى في PDFium وسجل TBookmark عالي المستوى. متى حصلت على مقبض FPDF_BOOKMARK مباشرة من PDFium (مثلًا عبر FPDFBookmark_GetFirstChild أو FPDFBookmark_GetNextSibling أو كجزء من اختبار نقرة في عارض)، مرِّره عبر هذا المفهرس لاستقبال نص العنوان المحلول، و PageNumber الهدف، ونوع TPdfAction، وأي URI / مسار ملف مرتبط.
السجل المُعاد هو لقطة: يقرأ قاموس العلامة المرجعية مرة واحدة ويفك ترميز الوجهة إلى رقم صفحة أساسه 1. يُخزَّن المقبض نفسه أيضًا على السجل بحيث يمكنك تمريره مرة أخرى إلى واجهات PDFium دون تنقل شجرة آخر.
هذا المفهرس هو الطريقة القانونية لتنفيذ تنقل مخطط مخصص يحتاج تحكمًا أكبر من Bookmarks (الذي يعد كل شيء عمق أولًا) أو BookmarkChildren (الذي يعيد الأبناء المباشرين فقط). امزج مقابض PDFium الخام مع حل BookmarkFrom لبناء، مثلًا، عرض شجرة بتحميل كسول.
| Handle | FPDF_BOOKMARK. مقبض علامة مرجعية غير nil حُصل عليه من واجهة PDFium C أو من حقل TBookmark.Handle سابق. تمرير nil يعيد سجلًا مُصفَّرًا. يظل المقبض صالحًا فقط أثناء تحميل المستند الأساسي. |
TBookmark المقبض — لا تستدعِ أي دالة تحرير PDFium عليه. يحرِّر PDFium مقابض المخطط تلقائيًا عند إغلاق المستند.Action المحلول تعداد TPdfAction نفسه مثل Bookmark و LinkAnnotation، لذا يستطيع كود الإرسال نفسه توجيه النقرات من مدخلات المخطط وتعليقات الروابط على حد سواء.PageNumber كـ 0. استخدم HasBookmarkChildren لتقرير التوسيع أو التنقل.
procedure TForm1.DumpOutline(const Bm: TBookmark; Depth: Integer);
var
Child: FPDF_BOOKMARK;
Sub: TBookmark;
begin
Memo1.Lines.Add(StringOfChar(' ', Depth * 2) + Bm.Title +
Format(' -> page %d', [Bm.ActionPageNumber]));
Child := FPDFBookmark_GetFirstChild(Pdf1.Document, Bm.Handle);
while Child <> nil do
begin
Sub := Pdf1.BookmarkFrom[Child];
DumpOutline(Sub, Depth + 1);
Child := FPDFBookmark_GetNextSibling(Pdf1.Document, Child);
end;
end;