Einzelnen Beitrag anzeigen

Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.479 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Quick PDF-Library: Wie die Position des Annotationfensters ermitteln?

  Alt 11. Nov 2021, 14:59
Hast Du QuickPDF in der Source-Version? Dann könnte ich Dir die nötigen Erweiterungen schicken um an die benötigten Informationen heran zu kommen.

Das Problem im Allgemeinen ist wie folgt: wenn Du mit AddNoteAnnotation eine Annotation anlegst, dann wird nicht nur eine angelegt, sondern immer zwei Stück:
die erste die das Note-Symbol darstellt und vom Subtype /Text ist und die zweite die vom Subtype /Popup ist. Die erste referenziert die zweite mittels der Eigenschaft /Popup und die zweite hat in der Eigenschaft /Parent die erste stehen. In PDF schaut das so aus:

Code:
AddNoteAnnotation(100, 100, 0, 100, 100, 100, 100, 'Murks', 'Content', 1.0, 0,0,0);
wird zu
Code:
8 0 obj
<<
/Type /Annot
/Subtype /Text
/M (D:20211103093933+01'00')
/Name /Note
/Rect [ 100 76 120 100 ]
/C [ 1 0 0 ]
/T (Murks)
/Contents (Content)
/F 28
/Popup 9 0 R
/AP <<
/N 10 0 R
>>
/P 2 0 R
/Subj (Sticky Note)
/NM (D:20211103093933+01'00')
/CreationDate (D:20211103093933+01'00')
>>
endobj
9 0 obj
<<
/Type /Annot
/Subtype /Popup
/Parent 8 0 R
/Rect [ 100 0 200 100 ]
/F 25
/Open false
>>
endobj
Auf diese Weise sind die beiden Annotations verbunden. Dummerweise kommt man mit der regulären Version von QuickPDF nicht an die Informationen /Popup bzw. /Parent ran. Das hab ich erst extra einbauen müssen.


Grüße,
Uli
Hier könnte ich die Information ja entsprechend auslesen (/Open false). Würde aber ungerne immer auch die PDF-Datei zusätzlich als ganzen Textstream einlesen (was natürlich zur Not ginge). Mit SelectContentSteram und GetContentstream komme ich leider nicht zum Ziel. Gibt es sonst eine alternative Möglichkeit Teile aus der PDF-Datei im oben genannten Format anlassbezogen und partiell einzulesen, so dass ich an Infos im oben genannten Format rankomme?
  Mit Zitat antworten Zitat