Einzelnen Beitrag anzeigen

TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
609 Beiträge
 
Delphi 11 Alexandria
 
#1

Rave - PDF mit Grafik pixelig und zu groß

  Alt 26. Mai 2009, 11:05
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ß.

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 (Rave - RvRenderPDF und Metafiles) ist von Stephan.


mfg

TUX
  Mit Zitat antworten Zitat