Collegare un PDF come documento scaricabile

15 dic 2010, 19:15:16
Visualizzazioni: 17.2K
Voti: 6

Come posso aggiungere un link a un PDF nel contenuto, in modo che venga scaricato invece di aprirsi nella finestra del browser? (Ho caricato il PDF nella libreria multimediale e posso inserire il collegamento, ma non trovo un'opzione per impedire che si apra nella finestra del browser).

Grazie,

Lucy

0
Tutte le risposte alla domanda 4
3
10

puoi provare ad aggiungere questo al tuo file .htaccess:

<FilesMatch "\.(?i:pdf)$">
    # Forza il Download del File
    ForceType application/octet-stream
    Header set Content-Disposition attachment
</FilesMatch>
15 dic 2010 22:56:24
Commenti

è fantastico e molto più veloce rispetto alle altre opzioni. Come posso usare più tipi di file? Ad esempio test.notebook con la parte (?i:pdf)?

v3nt v3nt
23 ago 2011 13:35:28

sembra che tu possa fare così (?i:(pdf|notebook))

Sébastien Méric Sébastien Méric
29 ago 2011 02:04:18

sì - alla fine l'ho scoperto! Grazie Sébastien...

v3nt v3nt
29 ago 2011 16:04:10
3

Un PDF verrà salvato con il mime-type application/pdf, quindi se il tuo tema ha un file template application.php o pdf.php che forza il download (o se controlli il mime-type nel tuo template attachment.php), puoi forzare il download.

Un file pdf.php strutturato così nel tuo tema dovrebbe funzionare:

<?php  if (have_posts()) : while (have_posts()) : the_post();

$pdf_title = $post->post_title;
$uploads_dir = wp_upload_dir();
$attachment_src = get_post_meta( $post->ID, '_wp_attached_file', true );
$pdf_src = path_join( $uploads_dir['path'], $attachment_src );


 header("Pragma: public"); // richiesto
 header("Expires: 0");
 header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
 header("Cache-Control: private",false); // richiesto per alcuni browser
 header("Content-Type: application/pdf");
 header("Content-Disposition: attachment; filename=\"".$pdf_title."\";" );
 header("Content-Transfer-Encoding: binary");
 header("Content-Length: ".filesize($pdf_src));
 ob_clean();
 flush();
 readfile("$pdf_src");


endwhile; endif;

?>

(Nota: affinché questo funzioni, quando inserisci il file nel tuo post tramite il media uploader, devi selezionare URL del post invece di URL del file nel campo Link URL prima di inserirlo nel post. Un collegamento a un nome file seguirà le preferenze del browser, ma collegandoti al link del post WP, puoi controllarne il comportamento.)

16 dic 2010 20:36:52
Commenti

Non dovresti mai usare il guid del post come URL. È un URL solo perché è una stringa univoca; potrebbe altrettanto facilmente cambiare.

John P Bloch John P Bloch
17 dic 2010 23:47:24

Grazie, ho modificato la mia funzione per basarsi sui metadati '_wp_attached_file'.

goldenapples goldenapples
18 dic 2010 06:18:01

Potresti invece trovare il percorso del pdf nel seguente modo: $pdf_src = get_attached_file($post->ID ); $bytes = filesize( $pdf_src );

Dipesh KC Dipesh KC
29 apr 2013 15:39:28
1

In realtà, dipende completamente dal browser. Alcuni browser apriranno un PDF direttamente nella finestra utilizzando un lettore PDF integrato (la maggior parte utilizza il plug-in Adobe, mentre Google Chrome ha il proprio). Se però il plug-in manca, il browser cercherà invece di scaricare il file.

La soluzione più sicura è aggiungere istruzioni nella pagina che indichino all'utente di fare clic destro e selezionare "Salva con nome".

Se sei preoccupato che gli utenti non riescano a tornare alla pagina dopo aver cliccato su un link, aggiungi target="_blank" al link e forzerai il browser ad aprirlo in una nuova scheda o finestra. A volte, questo può anche essere sufficiente per attivare lo scaricamento invece dell'apertura.

Esempio: <a href="http://site.url/document.pdf" target="_blank">Scarica PDF</a>.

15 dic 2010 19:22:07
Commenti

In realtà, "forzare un download" dipende interamente dagli header di risposta HTTP inviati dal server; non dal browser. Tuttavia, se un PDF può essere visualizzato nel browser dipende dal browser/plugin installati.

MrWhite MrWhite
24 gen 2015 14:34:18
0

Basta utilizzare l'attributo download del tag a: https://www.w3schools.com/tags/att_a_download.asp

4 mar 2021 01:48:13