[ Neznalica br.1 @ 16.05.2013. 11:46 ] @
Interesuje me da li je moguće učitati neki pdf fajl u poseban Div u nekoj Html stranici. Npr. ja bih da imam neke padajuce liste i npr kad kliknem na prvu padajucu listu i izaberem opciju 5 da mi on otvori 5-u stranicu tog pdf-a. Pdf bi bio odgovarajucih dimenzija kao i taj div. Padajuca lista je najprostija, tipa:
Code:
<select id="lista" >
<option value="">Izaberi opciju...</option>
<option value="1">Opcija 1</option>
<option value="2">Opcija 2</option>
<option value="3">Opcija 3</option>
<option value="4">Opcija 4</option>
<option value="5">Opcija 5</option>
<option value="6">Opcija 6</option>
<option value="7">Opcija 7</option>
<option value="8">Opcija 8</option>          
       </select>


To ja zamisljam ovako nekako kao na slici
[ bojan_bozovic @ 16.05.2013. 12:24 ] @
Ne, to nije moguće bez PDF renderinga na serveru. Postoje proprietary komponente za to, ali su vrlo skupe, pa je najbolje da koristiš Google Docs (ali opet, nemaš kontolu nad layoutom i paginacijom), ukoliko korisnik nema PDF pregledač instaliran.
[ Neznalica br.1 @ 16.05.2013. 13:30 ] @
Pretpostavio sam da je tako. Da li onda mogu npr mjesto pdf-a da u taj div ucitavam slike? To mislim da bi trebalo da moze al mi ne polazi za rukom.
[ bojan_bozovic @ 16.05.2013. 13:33 ] @
Da, to može Javaskriptom, ili server-side (PHP, Python, ASP.NET itd.)
[ Neznalica br.1 @ 16.05.2013. 13:51 ] @
Bojane, imas li neki primer za to ili neki link da po odradim pomocu JavaScript-a. Npr. kad izaberem opciju 1 da mi ucita jednu sliku u taj poseban Div, a kad izaberem opciju 2 da tu sliku zameni drugom...
[ Dejan Carić @ 16.05.2013. 15:23 ] @
Za prikazivanje PDF fajlova pomoću javascript-a pogledaj ovaj projekat: https://github.com/mozilla/pdf.js/

Nije savršeno, ali može da prođe.

Online demo možeš videti na ovoj stranici: http://mozilla.github.io/pdf.js/web/viewer.html
[ Neznalica br.1 @ 17.05.2013. 08:57 ] @
Al meni to ne pomaze kod onog sto ja hocu. Da li neko zna kako da razlicite slike ucitavam u jedan Div?
[ Dejan Carić @ 17.05.2013. 10:38 ] @
Na demo linku koji sam postavio, svaka strana iz PDF dokumenta je renderovana unutar jednog diva:

Code:
div id="pageContainer1"
div id="pageContainer2"
...




Gde je tačno zapelo?

[ Neznalica br.1 @ 17.05.2013. 20:13 ] @
Pa ja bih npr htio da svaku stranicu pdf-a ucitavam kad kliknem na opciju iz padajuce liste, npr. opcija 2 da ucita str 2, al to ne uspevam.
[ Dejan Carić @ 18.05.2013. 23:04 ] @
PDF.js je slabo dokumentovan pa ćeš morati dosta da eksperimentišeš.

Evo nešto na brzinu:

Code:

<!DOCTYPE html>
<html lang="en">
    <head>
        <title>PDF demo</title>
        <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
        <script src="https://raw.github.com/mozilla/pdf.js/gh-pages/build/pdf.js"></script>
    </head>
    <body>
        <select id="pageSelector">
        </select>
        <div class="pdf">
            <canvas id="pdfCanvas"/>
        </div>
        <script type="text/javascript">
            $(document).ready(function() {

                var url = 'test.pdf';
                PDFJS.disableWorker = true;

                // ucitavamo PDF i punimo dropdown list
                PDFJS.getDocument(url).then(function(pdf) {
                    var numberOfPages = pdf.numPages;
                    for (var i = 1; i <= numberOfPages; i++) {
                        $('<option/>').val(i).html(i).appendTo('#pageSelector');
                    }
                });

                // prikazujemo prvu stranu
                displayPage(1);

                // kada se promeni vrednost u dropdown listi, prikazujemo odgovarajucu stranu
                $('#pageSelector').change(function() {
                    var value = $(this).val();
                    displayPage(value);
                });

                // funkcija za prikazivanje jedne strane
                function displayPage(pageNum) {
                    PDFJS.getDocument(url).then(function(pdf) {
                        pdf.getPage(pageNum).then(function(page) {
                            var scale = 1;
                            var viewport = page.getViewport(scale);

                            var canvas = document.getElementById('pdfCanvas');
                            var context = canvas.getContext('2d');
                            canvas.height = viewport.height;
                            canvas.width = viewport.width;

                            page.render({ canvasContext: context, viewport: viewport });
                        });
                    });
                }
            });
         </script>
    </body>
</html>


Strane iz PDF-a se učitavaju u div koji ima klasu pdf -> div class="pdf"

Putanja do pdf fajla je setovana ovde: var url = 'test.pdf';
Možeš da je promeniš ili da jednostavno tako nazoveš fajl :)

Kada budeš testirao, ovaj HTML fajl mora da se nalazi na web serveru (bilo da podigneš web server kod sebe ili da uploaduješ fajl negde) jer ćeš u suprotnom dobiti grešku:
XMLHttpRequest cannot load file:///test.pdf. Cross origin requests are only supported for HTTP.

Evo taj isti html kod mene na sajtu: http://www.dcaric.com/pdfdemo/

Obrati pažnju da je ovo HTML5 i da možda neće raditi sa starijim verzijama browser-a.