2016-04-24 9 views
1

Ich benutze die FPDF-Bibliothek, um Online-PDF-Dateien anzuzeigen, mit der Ausgabeoption «I» (die den Inhalt zum Browser ausgeben).
Dann muss ich in der Lage sein, einige dieser generierten pdfs auf meinem Server zu speichern (wie die Ausgabeoption «F»).Holen und speichern Sie den von PHP generierten Inhalt mit FPDF

Um das zu tun, schrieb ich dieses Skript:

$pdf_data = file_get_contents('https:/HOST/Folder/file.php'); 
    $path =__DIR__.'/Folder/file.pdf'; 
    file_put_contents($path, $pdf_data); 

Es gelingt eine Datei mit PDF-Erweiterung in das Verzeichnis zu erstellen, aber:
- ich einen Fehler bekam: «Format Fehler: nicht eine pdf oder beschädigt »wenn ich versuche, die" pdf "-Datei zu öffnen,
- Die gespeicherte Datei ist leer (?).

Also, was ist los?
Wie kann ich den von der PHP-Datei generierten Inhalt erhalten und als PDF auf meinem Server speichern?

+0

file_put_contents generiert eine Textdatei, keine PDF-Datei. Ändern Sie die Erweiterung in pdf nicht das Format als auch –

+0

Ok, das ist ein erster Punkt. Das habe ich nicht bemerkt. Jetzt habe ich die Erweiterung auf .txt umgestellt, um das Skript zu testen, aber die gespeicherte Textdatei ist noch leer. Also ich denke, file_get_contents funktioniert auch nicht. – CamilleFF

+0

Nur um zu wissen, dass ich den leeren Inhalt von file_get_contents repariert habe, indem ich den Benutzer-Agent vorher gesetzt habe, wie folgt: _ini_set ('user_agent', $ _SERVER ['HTTP_USER_AGENT']); _ – CamilleFF

Antwort

2

Schließlich habe ich dieses Skript vergessen und eine neue Lösung gefunden, die funktioniert!

Ich habe zwei Ausgänge in meine PHP-Code-Build mit FPDF, eine zum Anzeigen der Datei online und eine zum Speichern der Datei auf dem Server eingerichtet.
Der vom PHP-Code erzeugte Inhalt wird immer angezeigt, und ich kontrolliere die PDF-Sicherung mit einer Zeichenfolge auf der ersten Ausgabe.
Also, wenn ich Backups brauche, benutze ich eine Jquery-Funktion, um den PHP-Code im Hintergrund auszuführen und die PDF-Datei hochzuladen (versteckter iframe funktioniert auch).

Unter dem Ende meines PHP-Code:

<?php 
... 
if (mycondition) {$string='F';} 
else {$string ='I';} 
... 
$pdf->Output(__DIR__.'/../../Folder/file.pdf',$string); // save on the server 
$pdf->Output('file.pdf','I'); // display on the browser 
?> 

Unterhalb der jQuery-Funktion Ich verwende:

<script type="text/javascript" src="./js/jquery.js"></script> 
<script type="text/javascript"> 
    var phpfile = <?php echo json_encode($Filename); ?>; // the php file to upload 
    function uploadpdf() { 
    $.get(phpfile); 
    return false; } 
</script> 

Hope this helfen!