Ich möchte eine PDF-Datei in eine Webseite einbetten. Ich muss das PDF dynamisch erzeugen, damit ich den Benutzer zuerst authentifizieren kann, also benutze ich XSendFile auf Apache. Die PHP-Datei, die ich habe, funktioniert gut, wenn ich einen Browser besuche, wobei die PDF-Datei sofort zum Download angeboten wird. Hier ist der Code verwende ich (mit freundlicher Genehmigung von http://www.brighterlamp.com/2010/10/send-files-faster-better-with-php-mod_xsendfile/)Probleme beim Einbetten von PDF-Dateien, die mit XSendFile auf einer Webseite gesendet wurden
// Get a list of loaded Apache modules
$modules = apache_get_modules();
if (in_array('mod_xsendfile', $modules)) {
// Use XSendFile if possible
header ('X-Sendfile: ' . $pathToFile);
header ('Content-Type: ' . $documentMIME);
header ('Content-Disposition: attachment; filename="' . $actualFilename . '"');
exit;
} else {
// Otherwise, use the traditional PHP way..
header ('Content-Type: ' . $documentMIME);
header ('Content-Disposition: attachment; filename="' . $actualFilename . '"');
@ob_end_clean();
@ob_end_flush();
readfile($pathToFile);
exit;
}
So weit so gut. Jetzt möchte ich diese PDF in eine Webseite eingebettet werden unter Verwendung eines Objekt-Tag z.B .:
<object data="dynamicpdf.php" type="application/pdf">
<p>PDF embed failed</a></p>
</object>
Aber diese ausfällt. Wenn ich das Datenattribut in eine statische PDF-Datei umwandle, funktioniert es einwandfrei.
Irgendwelche Ideen was schief läuft?
Swapping die
Es hängt vom Browser ab. Was ist der Anwendungsfall zum Einbetten einer PDF? Warum nicht HTML verwenden. Das Web wurde nicht für PDF erstellt. – mblaettermann
Um die PDF-Datei korrekt einzubetten, entfernen Sie den Header "Content-Disposition". Dies erzwingt den Download. Ich habe vergessen, das zu erwähnen. – mblaettermann