pdf file wil niet openen op juiste wijze
Ik heb een overzicht met pdf-files.
Deze zijn aan te klikken op mijn site. Na klikken erop
moet acrobat reader openen om de inhoud in te zien.
Maar komt nu elke keer met een index directory.
Wat ik wil is eigenlijk dat bij het klikken op de naam
buiten de site om, acrobat reader opstart met de
gekozen bestandsnaam.
Moet ik ergens een connectie maken o.i.d.
Deze zijn aan te klikken op mijn site. Na klikken erop
moet acrobat reader openen om de inhoud in te zien.
Maar komt nu elke keer met een index directory.
Wat ik wil is eigenlijk dat bij het klikken op de naam
buiten de site om, acrobat reader opstart met de
gekozen bestandsnaam.
Moet ik ergens een connectie maken o.i.d.
Laat je php/html code eens zien waarbij de PDF link wordt gegenereerd...
heb aardig wat gegoogled, weet eigelijk dit te omschrijven.
$file zijn de de pdf-files.
$file zijn de de pdf-files.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
while($data = mysql_fetch_assoc($query))
{
$bid=$data['id'];
$omschrijving = stripslashes( $data['omschrijving'] );
$file = stripslashes($data['filenaam']);
$datum = $data['datum'];
$i++;
echo '<tr>'.PHP_EOL;
echo '<rij>'.PHP_EOL;
echo '<td class="formleft">'.PHP_EOL;
echo $i. ")".PHP_EOL;
echo '</td>'.PHP_EOL;
echo '<td class="vast30">'.PHP_EOL;
echo $datum.PHP_EOL;
echo '</td>'.PHP_EOL;
echo '<td class="vast30">'.PHP_EOL;
echo $omschrijving.PHP_EOL;
echo '</td>'.PHP_EOL;
echo '<td class="formleft">'.PHP_EOL;
//echo $file.PHP_EOL;
echo '<A HREF="../folders">'.$file.'</A>'.PHP_EOL;
//echo '<a href= "probeersel/berichten/folders/'.$file.'</a>"'.PHP_EOL;
echo '</td>'.PHP_EOL;
{
$bid=$data['id'];
$omschrijving = stripslashes( $data['omschrijving'] );
$file = stripslashes($data['filenaam']);
$datum = $data['datum'];
$i++;
echo '<tr>'.PHP_EOL;
echo '<rij>'.PHP_EOL;
echo '<td class="formleft">'.PHP_EOL;
echo $i. ")".PHP_EOL;
echo '</td>'.PHP_EOL;
echo '<td class="vast30">'.PHP_EOL;
echo $datum.PHP_EOL;
echo '</td>'.PHP_EOL;
echo '<td class="vast30">'.PHP_EOL;
echo $omschrijving.PHP_EOL;
echo '</td>'.PHP_EOL;
echo '<td class="formleft">'.PHP_EOL;
//echo $file.PHP_EOL;
echo '<A HREF="../folders">'.$file.'</A>'.PHP_EOL;
//echo '<a href= "probeersel/berichten/folders/'.$file.'</a>"'.PHP_EOL;
echo '</td>'.PHP_EOL;
Merk op dat elke webbrowser anders zal reageren. De ene zal de file proberen openen (en dus acrobat automatisch openen), de ander browser zwiert die pdf onmiddellijk naar de Downloads-map.
Daarbij komt nog dat de gebruiker zelf kan instellen hoe het moet gebeuren.
Maar waar je vraag basically op neerkomt, is een "force download" script. (Google "php force download" voor meer documentatie).
Daarbij komt nog dat de gebruiker zelf kan instellen hoe het moet gebeuren.
Maar waar je vraag basically op neerkomt, is een "force download" script. (Google "php force download" voor meer documentatie).
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$file = "pdf_document.pdf"; // het juiste pad niet vergeten. Jij moet dus zien voor een systeem om de juiste file te kiezen...
if (!empty($_GET['download'])) {
if (is_file($file)) {
header('Content-disposition: attachment; filename=' . $file); // dit kan misschien problemen geven als er vreemde tekens in de bestandnaam staan
header('Content-type: application/pdf');
readfile($file);
}
}
else {
echo 'bla bla ... to download file, click <a href="?download=1">here</a>';
}
?>
$file = "pdf_document.pdf"; // het juiste pad niet vergeten. Jij moet dus zien voor een systeem om de juiste file te kiezen...
if (!empty($_GET['download'])) {
if (is_file($file)) {
header('Content-disposition: attachment; filename=' . $file); // dit kan misschien problemen geven als er vreemde tekens in de bestandnaam staan
header('Content-type: application/pdf');
readfile($file);
}
}
else {
echo 'bla bla ... to download file, click <a href="?download=1">here</a>';
}
?>
@Kris
hetscript.php?download=../../databaseconfig.php en ik krijg databaseconfig.php als pdf binnen. Openene in kladblok en ik kan het gewoon lezen.
Oftewel zorg voor je beveiliging
hetscript.php?download=../../databaseconfig.php en ik krijg databaseconfig.php als pdf binnen. Openene in kladblok en ik kan het gewoon lezen.
Oftewel zorg voor je beveiliging
Is het je opgevallen dat ik de bestandsnaam gehard-coded heb en op geen enkele manier afhankelijk gemaakt van user input?
enkel maar een "?download=1" om aan te geven: nu downloaden
en commentaar waarin ik zeg dat ze zelf moeten zien hoe ze aan de juiste file komen (bv. op basis van een $_GET['id'] de juiste bestandsnaam uit een DB lezen)
enkel maar een "?download=1" om aan te geven: nu downloaden
en commentaar waarin ik zeg dat ze zelf moeten zien hoe ze aan de juiste file komen (bv. op basis van een $_GET['id'] de juiste bestandsnaam uit een DB lezen)
Gewijzigd op 28/11/2012 17:19:05 door Kris Peeters
@Kris, ik heb inderdaad niet goed gekeken. Sorry
Bij onderstaande code wordt Acrobat reader wel geopend
maar krijg steeds foutmelding dat het niet een supported file is
of damage is of bijv. een email attachment en niet juist
gecodeerd is.
I.p.v. attachment heb ik ook inline geprobeerd maar dat werkt ook niet.
Met openen in acrobat reader wordt het bestand wel geopend.
Ik gebruik om een Word-document om te zetten naar een pdf file
het programma PDFCreator 1.6
maar krijg steeds foutmelding dat het niet een supported file is
of damage is of bijv. een email attachment en niet juist
gecodeerd is.
I.p.v. attachment heb ik ook inline geprobeerd maar dat werkt ook niet.
Met openen in acrobat reader wordt het bestand wel geopend.
Ik gebruik om een Word-document om te zetten naar een pdf file
het programma PDFCreator 1.6
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
} elseif ( isset ($_GET['p']) && $_GET['p'] == "download") {
$filetitel = $_GET['file']; // het juiste pad niet vergeten. Jij moet dus zien voor een systeem om de juiste file te kiezen...
if (!empty($_GET['download'])) {
if (is_file("folders/".$filetitel)) {
header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename='.$filetitel); // dit kan misschien problemen geven als er vreemde tekens in de bestandnaam staan
readfile($filetitel);
}
}
}else {
echo 'bla bla ... to download file, click <a href="?download=1">here</a>';
}
$filetitel = $_GET['file']; // het juiste pad niet vergeten. Jij moet dus zien voor een systeem om de juiste file te kiezen...
if (!empty($_GET['download'])) {
if (is_file("folders/".$filetitel)) {
header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename='.$filetitel); // dit kan misschien problemen geven als er vreemde tekens in de bestandnaam staan
readfile($filetitel);
}
}
}else {
echo 'bla bla ... to download file, click <a href="?download=1">here</a>';
}
Gewijzigd op 30/11/2012 09:56:15 door Willem L
Een makkelijke oplossing (niet de netste) is gewoon wanneer men klikt op een pdf file je ze naar een landingpage stuurt (bijvoorbeeld view_pdf.php) en je daar de pdf gewoon opent in een iframe.
Dan opent hij hem altijd en hoef je geen zorgen te maken wat welke browser doet, en hoe mensen het zelf hebben ingestelt. Zet op die view_pdf.php gewoon een Back/Terug link of open de link in een nieuw venster/tabblad.
Dan hoef je niets te 'forceren' of te verplichten om te downloaden.
Dan opent hij hem altijd en hoef je geen zorgen te maken wat welke browser doet, en hoe mensen het zelf hebben ingestelt. Zet op die view_pdf.php gewoon een Back/Terug link of open de link in een nieuw venster/tabblad.
Dan hoef je niets te 'forceren' of te verplichten om te downloaden.
@Chris
Dat kan ook een mogelijkheid zijn.
Maar ben nu zover dat er al wat gebeurt
maar wel de melding
Warning: Cannot modify header information - headers already sent by (output started
ben nu zoekende, maar is naar mijn mening
voor mij even te hoog gegrepen. Zie door de
bomen even het bos niet meer.
kijk even www.wasbuytenwegh-deleyens.nl
dan berichten en dan november, klik op de pdf file
dan zie wat er gebeurt. haha
Dat kan ook een mogelijkheid zijn.
Maar ben nu zover dat er al wat gebeurt
maar wel de melding
Warning: Cannot modify header information - headers already sent by (output started
ben nu zoekende, maar is naar mijn mening
voor mij even te hoog gegrepen. Zie door de
bomen even het bos niet meer.
kijk even www.wasbuytenwegh-deleyens.nl
dan berichten en dan november, klik op de pdf file
dan zie wat er gebeurt. haha
ik ben niet zeker van mijn zaak maar wat als je je pdf file in een iframe laad? ik doe dat wel altijd als ik een pdf ergens inlaad en hem in de pagina wil hebben. ik maak alleen wel gebruik van fpdf, en dat is iets anders dan een pdf inlezen.




