AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Quick PDF-Library: Wie die Position des Annotationfensters ermitteln?

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

Ein Thema von Harry Stahl · begonnen am 2. Nov 2021 · letzter Beitrag vom 16. Nov 2021
Antwort Antwort
Seite 2 von 3     12 3   
Benutzerbild von ULIK
ULIK

Registriert seit: 25. Sep 2006
Ort: Regensburg
416 Beiträge
 
Delphi 11 Alexandria
 
#11

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

  Alt 12. Nov 2021, 08:20
Super!
Noch ein kleiner Rat (falls für Dich relevant): wenn Du Zugriff auf einen mit einer neueren AutoCAD Version erstellten Plan hast, dann teste dein Programm mal gegen ein daraus generiertes PDF. Der Hintergrund: in diesen Plänen gibt es nämlich gerne mal extrem viele Annotations (hab da Beispiele mit 10000 und mehr Annotations). Einfach weil dort jede Beschriftung als Annotation angelegt wird.
Oder generier mal mit QuickPDF so ein PDF mit >10000 Text-Annotations.


Grüße,
Uli
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

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

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

  Alt 12. Nov 2021, 17:16
Und die 10.000 Annotationen sind alle auf einer Seite?
Ich habe mein Programm so gestrickt, dass immer nur alle Annotationen der gewählten Seite angezeigt wird.
Man kann aber mit Schaltern zur nächsten oder vorherigen Seite mit Annotationen springen.

Edit 1: Sind das alles sinle-Annotations oder ist es eher eine oder einige Annotationen mit vielen Antworten?

Edit2: Jetzt ist es mir auch gelungen, den Status der Annotationen zu setzen und zu speichern (habe hier doch GetobjFromString und SetObjToString verwendet). Mal schauen, ob ich noch das setzen einer Antwort auf eine Annotation hinbekomme, dann wäre ich soweit zufrieden...

Geändert von Harry Stahl (12. Nov 2021 um 21:11 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von ULIK
ULIK

Registriert seit: 25. Sep 2006
Ort: Regensburg
416 Beiträge
 
Delphi 11 Alexandria
 
#13

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

  Alt 15. Nov 2021, 06:37
Die waren wirklich auf einer Seite: das war ein riesiger AutoCAD Plan mit Papierformat 2x3 m und alle Beschriftungen auf diesem Plan waren Text Annotations Ist natürlich ein Extrembeispiel aber im Hinterkopf sollte man es halt behalten.

Lies Dir in der PDF Spec die Abschnitte bei den Markup-Annotations für die Eigenschaften IRT und RT durch. Gerade IRT ist das interessante. Dann modifizier deine Annotation entsprechend und schreib es mit SetObjToString in das PDF zurück.

Geändert von ULIK (15. Nov 2021 um 06:52 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

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

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

  Alt 15. Nov 2021, 10:52
Danke für den Hinweis. Genau das hatte ich schon selber herausgefunden und konnte damit auch eine Antwort-Annotation setzen.

Was mir dabei auffiel, ist dass nach dem Anfügen von Annotationen diese leider nicht direkt auch über die Objektliste erreichbar sind. Erst nachdem ich die PDF-Datei gespeichert und neu geladen habe, tauchen die in der Objektliste auf (mache ich nicht als Dateispeicherung, sondern speichern in String und laden daraus). Die Anzahl der Objekte wird zwar erhöht, aber wie gesagt, bei Abfrage der Objekte nacheinander tauchen die neu hinzugefügten Annotationen nicht auf.

Allerdings ist das umständlich und unnötig aufwändig. Gibt es nicht eine andere Methode, um sicherzustellen, dass angefügte Annotationen auch direkt danach über die Objectliste verfügbar sind?

Welche Dokumentation zur PDF-Spezifikation kannst Du empfehlen? "/IRT" habe ich durch vergleichen der Annos rausgefunden, aber das ist natürlich aufwendig. Andererseits eröffnet sich ja mit dem direkten Schreiben und lesen der Objekte doch ein weites Anwedungsfeld...
  Mit Zitat antworten Zitat
Benutzerbild von ULIK
ULIK

Registriert seit: 25. Sep 2006
Ort: Regensburg
416 Beiträge
 
Delphi 11 Alexandria
 
#15

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

  Alt 15. Nov 2021, 14:59
Ich hab hier die offizielle PDF 1.7 und 2.0 Spezifikation rumliegen. Die gibt's aber glaub ich nur zu kaufen (hat mein Arbeitgeber besorgt, darum weis ich grad nichts genaueres über Bezugsquellen).

Das mit den Objektlisten schau ich mir mal an. Wie genau erstellst Du eine neue Annotation? Mit AddTextMarkupAnnotation?

Edit: Hab das schnell getestet: wenn ich mit
Code:
qp.AddNoteAnnotation(100, 100, 0, 100, 100, 100, 100, 'Murks', 'Content', 1.0, 0,0,0);
eine neue Annotation angelege, dann seh ich die sofort in der Objektliste.

Hier mein Testcode:
Code:
        qp := TDebenuPDFLibrary.Create;
        try
          for i := 1 to qp.GetObjectCount do
          begin
            strObject := qp.GetObjectToString(i);

            memo1.Lines.Add('Obj ' + IntToStr(i) + ' ' + Copy(strObject,1, 60) + #13#10);
          end;

          qp.AddNoteAnnotation(100, 100, 0, 100, 100, 100, 100, 'Murks', 'Content', 1.0, 0,0,0);

          for i := 1 to qp.GetObjectCount do
          begin
            strObject := qp.GetObjectToString(i);

            memo1.Lines.Add('Obj ' + IntToStr(i) + ' ' + Copy(strObject,1, 60) + #13#10);
          end;
        finally
          qp.Free;
        end;

Geändert von ULIK (15. Nov 2021 um 15:11 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

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

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

  Alt 15. Nov 2021, 15:05
Nein, ich verwende AddNoteAnnotation.
  Mit Zitat antworten Zitat
Benutzerbild von ULIK
ULIK

Registriert seit: 25. Sep 2006
Ort: Regensburg
416 Beiträge
 
Delphi 11 Alexandria
 
#17

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

  Alt 15. Nov 2021, 15:12
Upps. Siehe meine Bearbeitung oben
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

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

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

  Alt 15. Nov 2021, 15:42
Dein "Upps" verstehe ich als Bestätigung des Problems. Oder?

Edit: Mal selber getestet: hier existiert das Object auch nach dem Add.

Das nicht- funktionieren hatte ich auch erst mal festgestellt, bei einer größeren Datei, die ein anderer erzeugt hat...

Geändert von Harry Stahl (15. Nov 2021 um 17:42 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

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

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

  Alt 15. Nov 2021, 18:16
Kann das übrigens sein, dass das nachträgliche Hinzufügen eines Outline-Eintrages als Child nicht funktioniert, wenn das Parent-Outline kein Child ist?

Ich wollte einen neuen Untereintrag in einem bestehenden Baum nachträglich hinzufügen (also einem Child ein weiteres Child hinzufügen), das geht wohl nicht, muss ich dafür den ganzen Baum neu erzeugen?

EDit: Das ist wohl nur so ab Level-Ebene 3, ab da funktioniert es nicht mehr, vorher kein Problem. Seltsam...

Geändert von Harry Stahl (15. Nov 2021 um 21:51 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von ULIK
ULIK

Registriert seit: 25. Sep 2006
Ort: Regensburg
416 Beiträge
 
Delphi 11 Alexandria
 
#20

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

  Alt 16. Nov 2021, 08:39
Outlines: das wäre mir noch nie aufgefallen. Kannst Du mir da mal deinen Testcode schicken? Hab's grad in unsere Anwendung schnell ausprobiert, da hab ich kein Problem gehabt auch in der 6./7. Ebene
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz