Quando si genera un PDF nel browser a livello di programmazione (tramite PHP) il PDF sottoposto a rendering viene visualizzato correttamente sia in Firefox che in Safari, ma Chrome restituisce ERR_INVALID_RESPONSE. È un PDF valido: può essere aperto localmente con Adobe Reader/Preview una volta salvato dai browser funzionanti e verrà aperto anche in Chrome una volta salvato il PDF da un altro browser.Risultati di generazione PDF in ERR_INVALID_RESPONSE in Chrome
Il file PDF viene letto tramite file_get_contents()
, viene assegnato un timestamp corrente e quindi passato al browser. Una soluzione alternativa consisterebbe nel salvare il file in un punto temporaneo e reindirizzare l'utente (almeno per Chrome), ma questo non è l'ideale.
Ho studiato e sono riuscito a trovare solo bug reports dating from 2008.
Ho un sentore è un errore di intestazione. Dopo la generazione del PDF, le seguenti intestazioni vengono inviati al browser (ancora lavorando bene in FF, Safari e IE):
header('Content-type:application/pdf');
header("HTTP/1.1 200 OK");
Ho anche provato ad aggiungere le seguenti intestazioni dopo la ricerca su Stack Overflow, ma per inutile:
header("Content-Transfer-Encoding: binary");
header('Accept-Ranges: bytes');
Sono mancate intestazioni che richiede Chrome? Qualcuno ha esperienza con la visualizzazione di PDF generati dinamicamente in Chrome?
EDIT: una delle mie domande più importanti è che cosa potrebbe causare il corretto funzionamento di questo in locale in Chrome, ma non funzionerebbe su un ambiente server.
Grazie in anticipo per qualsiasi aiuto.
Avete provato a cambiare la disposizione all'attaccamento? intestazione ('Content-Disposition: attachment ;; filename = "YourFileName"'); – HNA
@HNA Ho - lo stesso errore si verifica in Chrome sia che si utilizzi o meno l'allegato. Ci sono due pulsanti: "salva" che getta nell'intestazione '(Content-Disposition: attachment; ');' in modo che il file venga scaricato automaticamente (funziona localmente in Chrome, FF e Safari e funziona senza localmente per Safari e Firefox). L'altro pulsante, "visualizza", visualizza semplicemente il PDF senza scaricarlo automaticamente. Attualmente non funzionano in Chrome in un'istanza non locale. –
Inviate un'intestazione '(Content-Length: '. Filesize ($ yourfile));'? – maxhb