WPViewPDF Plus: Gerenderte Objekte sind falsch ausgerichtet

  • Hallo,

    ich habe in der Demo (aktuellste Version) MetaFileOverlay eine Anpassung gemacht, weil ich in meiner Anwendung links ausgerichtete Texte benötige. Die Anpassungen sind in dieser Methode:

    Code
    procedure TMetafileOverlay.Inserttexthere1Click(Sender: TObject);var  t: TPDFDrawObjectRec;  s : AnsiString;begin  FillChar(t, SizeOf(t), 0);  t.grtyp := 100;  t.typparam := 2000; // Textfield, Height = 20  t.ColorText := ColorToRGB( clBlue ); // Text Color  t.ColorPen := ColorToRGB( clYellow ); // Background Color  t.ObjectOptions := 8; // Opaque *** Anpassung//  t.ObjectOptions := 4+8; // Center Text + Opaque  t.ColorBrush := clYellow;  // On page 1  t.PageNo :=  WPViewPDF1.command(COMPDF_GetPageUnderMouse);  // Position of MOUSE on the page:  t.x := WPViewPDF1.command(COMPDF_GetPageLogX);  t.y := WPViewPDF1.command(COMPDF_GetPageLogY);  t.h := 72;  t.w := 72*3;  t.Angle := 0; // Anpassung  t.FontSize := 55*100;  if FontDialog1.Execute then  begin     s := '"Font=' + FontDialog1.Font.Name + '"';     WPViewPDF1.AddDrawObject(wpAddNow, '', t, 'Test', PAnsiChar(s));  end;end;

    Die Darstellung ist dann zunächst korrekt: Links ausgerichtet und am unteren Rand des Bereichs.

    Sobald aber das Objekt gerendet wird:

    Code
    WPViewPDF1.CommandEx(COMPDF_RenderDrawobjects, 4 + 8 + 32 + 64);  // Render  WPViewPDF1.ClearDrawObject(-1, -1);  // and Clear all


    ist der Text horizontal zentriert und am oberen Rand des Bereichs ausgerichtet. Ursache scheint das ClearDrawObject zu sein. Auch die Methode zum Speichern der Veränderungen bewirkt diese Veränderung, obwohl dort kein ClearDrawObject aufgerufen wird.

    Dabei könnte ich noch halbwegs damit leben, dass der Text am oberen oder unteren Rand ausgerichtet ist, aber dass er linksbündig bleibt, ist unbedingt erforderlich.

    Ist das ein Bug oder kann ich das so beeinflussen, dass es korrekt gespeichert wird? Im Falle eines Bugs, wäre ich dankbar für eine kurzfristige Korrektur. Ich vermute den Fehler in der DLL.

    EDIT:
    Ergänzung:
    In der Methode zum Speichern des PDF-Dkumentes "fehlt" ClearDrawObject. Trotzdem habe ich dort den selben Effekt.

    Code
    WPViewPDF1.CommandEx(COMPDF_RenderDrawobjects,  4 + 8 + 32 + 64);
        WPViewPDF1.Plus.SaveToFile(SaveDialog1.FileName);


    Verursacht das SaveToFile den selben Fehler?

  • Danke für die Korrekturen. Bei mir läuft es jetzt, wie es soll.

    In der Doku steht, dass es jetzt auch möglich ist, rechts auszurichten. Leider konnte ich keinen Hinweis finden, wie das gesteuert werden muss. Können Sie mir da noch einen Tipp geben, was dafür gemacht werden muss?

    • Offizieller Beitrag

    In dem record TPDFDrawObjectRec gibt es ObjectOptions welches folgende bit werte annehmen kann:

    ObjectOptions : Integer; // Option Bitfield
    // 1 : Keep AspectRatio
    // 2 : Stretch (used for text)
    // 4 : Center horizontally (text in the box)
    // 8 : Used for Text and JPEG. Draw Background in selected Brush Color and Pen
    // 16 : Apply Brush Color after painting the object
    // 32 : prohibit moving the object
    // 64 : prohibit changing size of object
    // 2048: Align to right (only text)
    // 4096: Align to middle (vertically) (text in the box)
    // 8192: Align to Top (vertically) (text in the box)