web-dev-qa-db-fra.com

utilisation de header () pour réécrire le nom du fichier dans l'URL du pdf dynamique

J'ai un script php qui génère un rapport pdf. Lorsque nous allons enregistrer le document pdf, le nom de fichier suggéré par Acrobat est report_pdf, puisque le script php s'appelle report_pdf.php. Je souhaite nommer le fichier pdf de manière dynamique, de sorte que je n'ai pas à saisir le nom approprié pour le rapport à chaque fois que je l'enregistre. 

Quelqu'un a suggéré cette question en demandant à un groupe de discussion, où filename="July Report.pdf" est le nom voulu du rapport

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

Mais ça ne marche pas. Est-ce que je me trompe ou est-ce que ça va marcher? Est-ce un travail pour mod_rewrite?


J'ai donc essayé les deux

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

et

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

(pas en même temps) et ni travailler pour moi. Est-ce un problème avec mon hébergeur? Pour cela url , voici mon 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

Essayer:

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

ou

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

Une autre option serait d’utiliser le $_SERVER['PATH_INFO'] pour transmettre votre "July Report.pdf" - un exemple de lien pourrait être:

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

Ce fichier devrait par défaut être enregistré sous le nom "July Report.pdf" - et devrait se comporter exactement comme votre ancien script php. Modifiez simplement le code qui produit le lien vers le pdf.

47
gnarf

Devrait être:

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

Basé sur https://github.com/rospdf/pdf-php/raw/master/readme.pdf (Page 19) La méthode stream accepte un tableau en tant que paramètre:

stream([array options]) Utilisé pour la sortie, cela va définir les en-têtes requis et sortir le code pdf . Le tableau options peut être utilisé pour définir un certain nombre d'éléments concernant la sortie:

'Content-Disposition'=>'filename' définit le nom du fichier, ...

Ce code fonctionne bien pour moi

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

Dans mon cas, j'utilise ezStream() mais je pense que stream() devrait donner le même résultat.

3
Seelixh

Pour le nom indiqué sur l'onglet titre dans le navigateur

J'ai eu le même problème, puis j'ai trouvé qu'il manquait des métadonnées dans mon .pdf . J'ai utilisé un outil ("outils debenu PDF") pour éditer une propriété pdf telle que l'auteur, le titre, etc Je remplace simplement le titre de champ vide par le titre que je veux, télécharge le nouveau pdf et maintenant, avec le même code, le même script, le navigateur affiche le bon nom!

Pour le nom quand vous demandez de sauvegarder le document

est ce que vous spécifiez dans l'en-tête

1
JoTaRo

Avez-vous essayé de supprimer des espaces du nom de fichier en utilisant des traits d'union? Donc, je pense que son nom doit être comme ça; filename = July-Report.pdf

0
K-Gun