Schlagwort-Archive: ABAP OO

Wie hier beschrieben PDF Dokumente in ABAP zusammenführen soll ein bestehendes PDF Dokument aus dem KPRO auf der Rückseite eines anderen PDF Dokuments, welches mittels ADS erstellt wird, eingebettet werden. Das auf der genannten Seite beschriebene Vorgehen funktioniert nur dann zuverlässig, wenn beide PDF Dokumente das gleiche Papierformat verwenden.

Im vorliegenden Fall wird ein PDF im DIN-A4 Format erstellt. Das einzubettende PDF Dokument liegt jedoch im DIN-A2 Format vor. Das Zusammenführen der Dokumente funktioniert zwar, der spätere Ausdruck auf einem DIN-A4 Drucker hingegen nicht. Die Zeichnung wird nicht skaliert ausgegeben.

Lösung

Wenn die Zeichnung als Bildformat vorliegt, kann die Ausgabe in einem Image Container im ADS erfolgen. Die Bilder werden in diesem Fall passend in den Container skaliert.

Mittels der Klasse ZCL_BC_PDF_CONVERTER kann ein existierendes PDF Dokument in ein Bildformat konvertiert werden. Die Klasse nimmt das PDF als XSTRING entgegen. Die Konvertierung selbst wird auf dem Application Server mittels System Kommando durchgeführt. Dabei wird das Tool pdftoppm (poppler-utils), welches bereits in der Linux Distribution des Application Server enthalten ist, genutzt.

Voraussetzung

Mit der Transaktion SM69 wird ein Systemkommando wie folgt definiert

Nutzung der Klasse

Die Konvertierung kann wie folgt durchgeführt werden

data: lv_data type xstring,
      lv_result type xstring,
     
      " auslesen des PDF aus dem kpro, Spool oder andere Quelle.
      " das PDF muss als Binärdaten vorliegen, nicht als Datei
     
          DATA(lo_converter) = NEW zcl_bc_pdf_converter(  ).
          lo_converter->set_source_data( lv_data ).
          lo_converter->convert(  ).
          lv_result = lo_converter->get_conversion_result(  ).

Zur Konvertierung werden temporäre Dateien auf dem Application Server angelegt und nach der Konvertierung gelöscht.

Verweis

Bei Interesse finden Sie die Klasse unter folgendem Repository

https://github.com/sap-weberpatrick/zcl_bc_pdf_converter