base64decodierte PDF empfangen und mit Text erweitern

Diskussionen und Austausch über die von FPDF bereitgestellten Methoden, Problemen bei der Anwendung etc.
Kloso
Benutzer
Beiträge: 2
Registriert: Do 20. Sep 2018, 15:36

base64decodierte PDF empfangen und mit Text erweitern

Beitragvon Kloso » Do 20. Sep 2018, 15:55

Guten Tag,

ich empfange base64 decodierte pdfs von DHL Retourenportal und lade diese direkt runter auf meiner internetseite. Aaalles funktioniert ;-)

Als ich jetzt fpdf und fpdi kennengelernt habe, möchte ich diese empfangene pdfs noch um paar Text stellen erweitern.
Fürs erste möchte ich es hinbekommen den Text "nichtsIstUnmoeglich" irgendwie auf die PDF zu schreiben.

Was ich bisjetzt hinbekommen habe ist mit FPDI und FPDF eine xy.pdf datei im ordner aufzumachen und "nichtsIstUnmoeglich" darauf zu schreiben.

Aber nun moechte ich die decodierte von DHL empfangene bearbeiten.

Hier https://stackoverflow.com/questions/18484632/print-base64-coded-image-into-a-fpdf-document gibt es einen ähnlichen Ansatz mit einer base64decodierden PNG - nun müsste ich es bloß auf PDF umstellen.

Meine PHP sieht dann erstmal wie folgt aus:

Code: Alles auswählen

... $pdf = base64_decode($pdf);
$file = "meinePDF.pdf";
file_put_contents($file, $pdf);

if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="'. $file .'"');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    readfile($file);
    exit;
}


Ab da habe ich die decodierte pdf in $pdf und Filename ist "meinePDF" in der Variable $file. Und die datei landet auf meinem Server und wird automatisch runtergeladen.

Nun habe ich folgendes versucht (dabei habe ich testweise in der 3.Zeile $file anstatt xy.pdf die aufm Server liegt eingetragen) mit xy.pdf hat es geklappt auf die PDF wurde "nichtsIstUnmoeglich" geschrieben aber wenn ich $file verwende dann kommt nichts:

Code: Alles auswählen

$pdf = new Fpdi();
$pdf->AddPage();
$pdf->setSourceFile($file);
$tplIdx = $pdf->importPage(1);
$pdf->useImportedPage($tplIdx, 10, 10, 100);
$pdf->SetFont('Helvetica');
$pdf->SetTextColor(255, 0, 0);
$pdf->SetXY(30, 30);
$pdf->Write(0, 'nichtsIstUnmoeglich');
$pdf->Output( 'test.pdf', 'I');


Ich weiß nicht ob ich verständlich mein Problem erläutert habe. Falls Rückfragen gibt gerne...
:) Vielen Dank im Voraus

Benutzeravatar
Wirus!
Beiträge: 1523
Registriert: Do 22. Jun 2006, 18:23

Re: base64decodierte PDF empfangen und mit Text erweitern

Beitragvon Wirus! » Do 20. Sep 2018, 18:53

Zwei Dinge fallen mir spontan auf:

Du verwendest $pdf zweimal. Wenn beide Codeschnipsel aus einem PHP Script stammen, kann das Verwenden einer nicht leeren Variable zu Problemen führen.

Das mit dem decodieren des PDF erscheint mir seltsam. Normalerweise sollte DHL Dir ein PDF zur Verfügung stellen, das keine Verrenkungen beim Abspeichern benötigt.

Mein Vorgehen wäre, das PDF erst mal abzuspeichern (erster Schnipsel) und zu prüfen, ob das entstandene PDF ein korrektes und valides PDF mit maximal PDF Spezifikation 1.5 ist (höhere Spezifikationen kann das freie FPDI nicht verarbeiten)

Kloso
Benutzer
Beiträge: 2
Registriert: Do 20. Sep 2018, 15:36

Re: base64decodierte PDF empfangen und mit Text erweitern

Beitragvon Kloso » Mi 26. Sep 2018, 10:47

Vilen Dank Wirus!,

ich habe es hinbekommen. Funktioniert einwandfrei. :) :mrgreen: :mrgreen:

Code: Alles auswählen

$pdf = base64_decode($pdf);
$file = "meinePDF.pdf";
file_put_contents($file, $pdf);
$pdf2 = new Fpdi();
$pdf2->AddPage();
$pdf2->setSourceFile($file);
$tplIdx = $pdf2->importPage(1);
$pdf2->useImportedPage($tplIdx, 10, 10, 100);
$pdf2->SetFont('Helvetica');
$pdf2->SetTextColor(255, 0, 0);
$pdf2->SetXY(30, 30);
$pdf2->Write(0, 'nichtsIstUnmoeglich');
$pdf2->Output( 'test.pdf', 'I');


Jetzt versuche ich noch den Text zu drehen, da die PDF falschrum ist. Bis jetzt irgendwie noch nicht hibekommen mit http://www.fpdf.org/en/script/script2.php dieser Hilfe. Aber sollte funktionieren.


Zurück zu „Programmierung“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 Gäste