2008-09-18 6 views
1

J'ai une application Web qui charge dynamiquement des fichiers PDF à afficher dans le navigateur. Actuellement, il utilise "innerHTML" pour remplacer un div avec l'objet PDF. Cela marche.Comment modifier dynamiquement le "src" ou "données" pour un fichier PDF Object/Embed en utilisant JavaScript?

Mais, existe-t-il un meilleur moyen d'obtenir l'ID de l'élément et de définir le paramètre "src" ou "data" pour l'objet/l'intégration et de charger instantanément un nouveau document? J'espère que l'instance d'Adobe Acrobat Reader restera à l'écran, mais le nouveau document sera chargé.

Voici un exemple JavaScript de l'objet:

document.getElementById(`divPDF`).innerHTML = `<OBJECT id='objPDF' DATA="'+strFilename+'" TYPE="application/pdf" TITLE="IMAGING" WIDTH="100%" HEIGHT="100%"></object>`; 

Toute idée est appréciée.

Répondre

1

Je ne sais pas si cela va fonctionner, car je n'ai pas essayé cela dans mes projets.

(En regardant votre JS, je crois que vous utilisez jQuery Sinon, s'il vous plaît me corriger.)

Une fois que vous avez rempli le divPDF avec l'objet que vous pouvez essayer le code ci-dessous:

$("objPDF").attr({ 
    data: "dir/to/newPDF" 
}); 

Encore une fois, je ne suis pas sûr que cela fonctionnera pour vos besoins particuliers, mais si vous attachez ce code à un gestionnaire d'événements, vous pouvez changer les données de l'objet.

Vous pouvez également l'envelopper dans une fonction à utiliser encore et encore:

function pdfLoad(dirToPDF) { 
    $("objPDF").attr({ 
     data: dirToPDF 
    }); 
} 
0

Si le gestionnaire pour le PDF est acrobate (il ne doit pas être), il expose une interface JS qui est documenté ici:

http://www.adobe.com/devnet/acrobat/pdfs/js_api_reference.pdf

Voyez si vous pouvez appeler openDoc (urlToPdf) sur document.getElementById (« objPDF ») - même si cela fonctionne, il ne fonctionne que lorsque Acrobat est utilisé pour traiter ' application/pdf '

0

@lark Une légère correction:

$('#objPDF').attr('data','dirToPDF'); 

Le # spécifie le objPDF est un ID et non un nom d'élément. Bien que je ne sache toujours pas si cela fonctionnera.

@ Tristan Jetez un coup d'œil au jQuery Media plugin. Il mentionne également le support PDF, même si je ne l'ai jamais utilisé.

0

Ouvrir un PDF-Link dans une PDFN fenêtre externe avec un PDF-Reader.EXE externe:

En cliquant sur le bouton suivant:

<FORM action=""> 
    <INPUT type="button" value="PDF file" 
     onclick="window.open('http://www.Dku-betrieb.eu/Pdfn.html', 
     'PDFN', 'width=620, height=630')"> 
</FORM> 

ouvre ce frameset Pdfn.html dans une fenêtre externe:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> 
<html lang="de"> 
    <meta http-equiv="refresh" content="12;url=http://www.dku-betrieb.eu/Pdfn1.html"> 
    <head> 
     <title>Reader</title> 
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
    </head> 
    <frameset> 
    <frame src="http://www.dku-betrieb.eu/File.pdf" frameborder=0 name="p1"> 
    </frameset> 
</HTML> 

qui actualise en 12 secondes le téléchargement du PDF-Reader:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> 
<html lang="de"> 
    <head> 
     <title>Reader</title> 
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
    </head> 
    <frameset > 
    <frame src="http://www.dku-betrieb.eu/PDFReader.exe" frameborder=0 name="p2"> 
    </frameset> 
</HTML> 

en montrant le résultat le fichier PDF dans la fenêtre externe PDFN.

0
function pdfLoad(datasrc) { 

      var x = document.getElementById('objPDF'); 
      x.data = datasrc; 

     } 

Cela a fonctionné pour moi

Questions connexes