it-swarm.com.de

verwenden Sie header (), um den Dateinamen in die URL für dynamisches PDF umzuschreiben

Ich habe ein PHP-Skript, das einen PDF-Bericht generiert. Wenn Sie das PDF-Dokument speichern, ist der Dateiname, den Acrobat angibt, "report_pdf", da das PHP-Skript "report_pdf.php" heißt. Ich möchte die PDF-Datei dynamisch benennen, so dass ich nicht bei jedem Speichern den entsprechenden Namen für den Bericht eingeben muss. 

Auf die Frage nach einer Nachrichtengruppe schlug jemand dies vor, wobei filename="July Report.pdf" der beabsichtigte Name des Berichts ist

<?
header('Content-Type: application/pdf');
header('Content-disposition: filename="July Report.pdf"');

Aber es geht nicht. Mache ich es falsch oder funktioniert das überhaupt? Ist das ein Job für mod_rewrite?


Ich habe also beide ausprobiert

header('Content-disposition: inline; filename="July Report.pdf"');

und

header('Content-disposition: attachment; filename="July Report.pdf"');

(nicht gleichzeitig) und arbeiten auch nicht für mich. Ist das ein Problem mit meinem Webhoster? Für diese url ist hier mein Code:

<?
header('Content-disposition: inline; filename="July Report.pdf"');

// requires the R&OS pdf class
require_once('class.ezpdf.php');
require_once('class.pdf.php');

// make a new pdf object
$pdf = new Cpdf();
// select the font
$pdf->selectFont('./fonts/Helvetica');
$pdf->addText(30,400,30,'Hello World');
$pdf->stream();

?>
28
user151841

Versuchen:

header('Content-Disposition: attachment; filename="July Report.pdf"');

oder

header('Content-Disposition: inline; filename="July Report.pdf"');

Eine weitere Option wäre die Verwendung von $_SERVER['PATH_INFO'], um Ihre "Juli Report.pdf" zu übergeben. Ein Beispiellink könnte sein:

<a href="report_pdf.php/July%20Report.pdf?month=07">

Diese Datei sollte standardmäßig als "Juli Report.pdf" gespeichert werden - und sollte sich genauso wie das alte PHP-Skript verhalten. Ändern Sie einfach den Code, der den Link erzeugt, in das PDF.

47
gnarf

Sollte sein:

header('Content-disposition: attachment;filename="July Report.pdf"'); 
5
Seva Alekseyev

Basierend auf https://github.com/rospdf/pdf-php/raw/master/readme.pdf (Seite 19) Die stream-Methode akzeptiert ein Array als Parameter:

stream([array options]) Wird für die Ausgabe verwendet, setzt dies die erforderlichen Header und gibt den PDF-Code aus. Das options-Array kann verwendet werden, um eine Reihe von Einstellungen für die Ausgabe vorzunehmen:

'Content-Disposition'=>'filename' Setzt den Dateinamen, ...

Dieser Code funktioniert gut für mich

$ezOutput = $pdf->ezStream(array("Content-Disposition"=>"YourFileName.pdf"));

In meinem Fall verwende ich ezStream(), aber ich denke, stream() sollte das gleiche Ergebnis liefern.

3
Seelixh

Für den Namen, der auf der Registerkarte "Titel" im Browser angezeigt wird

Ich hatte das gleiche Problem, dann stellte ich fest, dass die Metadaten in meiner PDF-Datei fehlen. Ich habe ein Werkzeug ("debenu PDF tools") zum Bearbeiten von PDF-Eigenschaften wie Autor, Titel usw. verwendet. Ich ändere einfach den Titel vom leeren Feld in den gewünschten Titel und lade das neue PDF hoch und jetzt, mit dem gleichen Code, dem gleichen Skript, zeigt der Browser den richtigen Namen!

Für den Namen, wenn Sie nach dem Speichern des Dokuments fragen

ist das, was Sie im Header Dateiname = angeben

1
JoTaRo

Haben Sie versucht, Leerzeichen mit Bindestrichen aus dem Dateinamen zu entfernen? Ich denke, sein Name muss so sein; Dateiname = Juli-Report.pdf

0
K-Gun