![]() |
Rave - PDF mit Grafik pixelig und zu groß
Hallo,
ich habe immer noch ein Problem mit meinem Rave Report, ich erzeuge zur Laufzeit eine Grafik (MetaFile) dieses übergebe ich an einen Report um den Report entweder auszudrucken oder als PDF abzuspeichern, es klappt auch soweit bis auf eine Sache. Die Grafik ist zu pixelig, d.h. zoomt man im PDF immer näher so werden Linien und Texte pixelig dargestellt, was noch zu verschmerzen wäre wenn die so erzeugte PDF Datei nicht viel zu groß wäre. Erstelle ich den Report und drucke ihn über einem PDF Druckertreiber aus, so ist die erzeugte PDF Datei weder pixelig noch zu groß, die Dateigröße ist dann ca. 20-30KB. Speicher ich den gleichen Report über mein Programm als PDF Datei ab so wird die Grafik pixelig und die PDF Datei ist über 400 KB groß. :gruebel: Irgendwie schafft der Druckertreiber (z.B. PDF Creator) die Grafik als Vektor Grafik darzustellen. Jedoch die zur Laufzeit erzeugte Grafik ist eine pixel Grafik trotz Metafile. (Ich hatte gedacht ein MetaFile wäre automatisch eine Vektorgrafik) Ich hoffe jemand hat eine idee wie ich das ganze besser in den Griff bekomme. Also meine Ziele sind keine pixelige Grafik und die Dateigröße soll gleich bzw. ungefähr gleich dem PDF Druckertreiber sein. Das MetaFile wird wie folgt erzeugt und an den Report übergeben.
Delphi-Quellcode:
procedure TfrmGraph.RvCustConTAGraphGetRow(Connection: TRvCustomConnection);
var MemStream : TMemoryStream; DotsPerInch : Word; Wmf : TMetaFile; WmfCanvas : TMetaFileCanvas; begin //init DotsPerInch := RvRenderPDF.MetafileDPI; Wmf := TMetaFile.Create; try try Wmf.Enhanced := True; //Größe Wmf.SetSize(fMmToPx(1800, DotsPerInch), fMmToPx(1220, DotsPerInch)); //Zeichenfläche erstellen WmfCanvas := TMetaFileCanvas.Create(Wmf, 0); try //Grafik zeichnen... finally WmfCanvas.Free; end; //Zu Testzwecken wird das Bild gespeichert //Die hier erzeugte Datei ist ebenfalls pixelig beim heranzoomen (Datei größe ca. 350 KB) Wmf.SaveToFile(glLocalAppDir+'bla.emf'); //Bild in Report laden... MemStream := TMemoryStream.Create; try Wmf.SaveToStream(MemStream); Connection.WriteBlobData(MemStream.Memory^, MemStream.Size); finally MemStream.Free; end; except on EOutOfResources do begin //Fehlermeldung... end; end;{try..except} finally Wmf.Free; end;{try..finally} end; Ich hab schon das Forum rauf und runter durchsucht und bisher nix gefunden ausser einem Beitrag mit ähnnlichem Problem, jedoch auch ohne Lösung. Der Beitrag ( ![]() ![]() mfg TUX |
Re: Rave - PDF mit Grafik pixelig und zu groß
Hallo
Zitat:
Der ist Standardmäßig nur 300DPI und das fand ich recht wenig. Das scheint allerdings auch bewußt so zu sein, mit höheren DPI-Zahlen und mehr-Seiten hatte ich so ![]() Evtl helfen Dir die Links von Merlin weiter. Gruß Frank |
Re: Rave - PDF mit Grafik pixelig und zu groß
Delphi-Quellcode:
Das ist nur dafür da das ich die Grafik mit einer vorgegebenen DPI Zahl erstellen bzw. zeichnen kann.
DotsPerInch := RvRenderPDF.MetafileDPI
Der wert steht zur Zeit auf 600 und erhöhe ich diesen Wert auf 1200 erhalte ich die Meldung zu wenig Speicher so wie du. Nur selbst wenn es ginge bringt mir das ja nichts da die PDF Datei ja dann noch größer würde anstatt kleiner. Naja irgendwie scheint es mir das man mit MetaFile keine Vektorgrafik erzeugen kann bzw. die bei der Übergabe zum Rave Report verloren geht und dort in eine Pixelgrafik umgewandelt wird und somit das ganze so riesig wird. |
Re: Rave - PDF mit Grafik pixelig und zu groß
Hmm so langsam muß ich dieses Problem in den griff bekommen, es kann doch nicht sein das eine via Rave Report erzeugte PDF
Datei 10 mal oder noch größer ist als eine Datei mit einem PDF Druckertreiber. Gibt es vielleicht irgendwie die möglichkeit direkt im Rave zu zeichnen!? So das der Report dann das gemalte als Vektorgrafik ansieht und nicht mehr als Pixelgrafik. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz