PNG mit transparenz in PDF einfügen

  • Guten Abend,

    ich bin gerade am versuchen ein PNG Bild in ein PDF einzufügen, was auch ohne Probleme funktioniert. Dafür verwende ich die MPDF_UDF in der Version 103 (laut Ordnername)

    Mein Problem ist, dass die Bilder immer einen weißen Hintergrund haben, weil in der UDF die Datein in ein jpg umgewandelt werden. Und damit alle Tranzparenten pixel in weiße umgewandelt werden.

    Ich hab schon selbst versucht die UDF umzuschreiben, aber jetzt werden die Bilder nicht angezeigt. Hier ist der geänderte Code-teil:

    im Anhang ist noch ein PDF mit dem das die UDF normalerweiße aus gibt.("mit_JPG_Umwandlung.pdf")

    und das mit dem geändertem Code.("mit_PNG.pdf")

    Kann mir jemand helfen entweder den Code richtig zu ändern, oder mir eine UDF zeigen die Bilder in welchem Format auch immer mit transparenz einfügen kann?


    Vielen Dank schon mal

    Flo

  • Auf den ersten BLick schaut es für mich richtig aus, du hast ja auch eig. nur bei CloneArea auf $GDIP_PXF32ARGB gewechselt und bei GraphicsClear auf 0x00FFFFFF.
    Ich würde auf die schnelle 2 Mögliche Probleme sehen:
    1. Unterstützt MPDF 32Bit ARGB Werte (Vielleicht musst du RGBA oder ähnliches verwenden (keine Ahnung ob das mit GDI-Plus geht))
    2. Nutzt du eventuell PDF/A (die Archiv Version von PDF)? Dort sind keine Transparenten Bilder erlaubt, da für die Archivierung alles genau definiert sein soll, was für Probleme sorgen könnte.

  • Tut mir leid das ich erst jetzt antworte, ich hat zwischenzeitlich keine Zeit weiter daran zu arbeiten.

    was ich geändert habe, ist:

    - es wird eine temporäre png statt einer Jpg erstellt
    - ich habe den Farbraum auf PXF32ARGB umgestellt, damit die Transparenten pixel bestehen bleiben
    - ich hab bei _GDIPlus_GraphicsClear die Farbe auf 0x00FFFFFF umgestellt
    - und im ersten _ToBuffer /FlateDecode statt /DCTDecode angegeben.

    Das was ich jetzt im Internet gelesen habe, scheint es aber recht aufwändig zusein ein PNG in ein PDF einzusetzten, wenn der Alpha kanal bestehen bleiben soll. Da man dafür die RGB werte vom A entfernt und dann mit /mask arbeitet.

    Ich bin jetzt dazu übergeangen einfach mit GDI+ die pngs übereinander zu legen.

    Mit freundlichen Grüßen

    Flo