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:
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:
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.
WPViewPDF1.CommandEx(COMPDF_RenderDrawobjects, 4 + 8 + 32 + 64);
WPViewPDF1.Plus.SaveToFile(SaveDialog1.FileName);
Verursacht das SaveToFile den selben Fehler?