• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Seitenanzahl von pdf Dokumenten mit JS auslesen

HeinzX

New member
Hallo,

Ich bin neu hier im Forum und hätte gern eine Antwort auf ein Problem, welches mich schon ein paar Tage beschäftigt.:confused:

Lässt sich mit JavaScript die Seitenanzahl eines pdf-Dokumentes auslesen?

Ich würde gern alle Seiten eines 1- 3 seitigen Pdf-Dokumente parallel in einem Webbrowser (Firefox) anzeigen. Prinzipiell gelingt mir dies auch, wenn ich die Gesamtseitenzahl vorher kenne. Ich mache das mit einer Schleife und benutze den Parameter page um die jeweilige Seite anzuzeigen. Wenn ein Dokument weniger Seiten, als von mir in der Schleife angeben, besitzt, bekomme ich ich eine Fehlermeldung (bad Paramter). Wie kann ich die Schleifenvariable (Gesamtseitenzahl) finden, oder vorher die Schleife abbrechen?
 
Vielen Dank für den Hinweis, dann war meine bisherige Mühe umsonst.:(
Eigentlich will ich das Script benutzen um auf einem Präsentationsbildschirm die Seiten einer pdf-Datei, die in der Seitenanzahl varieren kann, darzustellen. Das heißt ich bin quasi auf dem Server. wie löse ich das Problem dann serverseitig, wie gelingt mir die Übergabe?

Aber vielen Dank nochmals an kkapsner.
 
Eventuell geht das schon, wenn das PDF Plugin für den Browser (sofern eines installiert ist) eine JS Schnittstelle anbietet. google mal nach PDF, Plugin, Javascript API oder so ähnlich
 
Ah - ich bin davon ausgegangen, dass du über das Browsersystem keine Kontrolle hast (öffentliche Seite).
 
Ich hatte gestern kurz gesucht, anscheinend kann zumindest der IE über ActiveX darauf zugreifen. Oder reden wir gerade aneinander vorbei?
 
Hier ist wieder der Grünschnabel.:icon7:

Also ich benutze Firefox als Browser und habe das Adobe Plugin installiert.
Ich kann einzelne Seiten des pdf-Dokuments gezielt ansprechen, aber wenn ich eine Seite aufrufe, die nicht existiert, bekomme ich vom Pdf Plugin mal ein Warnfenster mit dem Hinweis "Bad Paramter" und mal garnichts zurückgemeldet, je nachdem ob ich alle Paramter benutze oder nicht.
Exitiert die Seite klappt alles prima mit dem Aufruf:
z.B.:"<embed src='"+pdfDatei+"#pagemode=none&toolbar=0&scrollbar=0&statusbar=0&navpanes=0&view=FitV&page="+i+"&zoom=100%' width='33%' height='78%'>"
Leider kenne ich die Gesamtseitenanzahl nicht vor dem Öffnen.
Vielleicht hat ja jemand eine Idee, wie ich z.B. eine Schleife zum Zählen mit Abbruchbedingung hinbekomme.
Ansonsten merci für die Rückmeldungen.

HeinzX
 
Weiter oben hast du was von serverseitig geschrieben. Und kkapsner hat schon geschrieben, dass man das PDF am besten erstmal via PHP/Perl oder sonstwas ausliest und dann die Seitenzahl im HTML Quellcode dem JS mitgibt.
Haben wir dich an der Stelle falsch verstanden oder woran scheitert das?
 
Ich würde sagen es scheitert an Php oder Perl:rolleyes:
Ok, habe eine Weile ca (15+x Jahre) das Programmieren aus Zeitgründen nicht mehr so praktizieren können wie früher Basic, TurboPascal etc. Hinund wieder ein paar Makros, aber das wars dann. Nun hat mich die Leidenschaft wieder...
Ich werde dann doch den Weg über php gehen müssen, wenn Js es nicht tut. Was brauche ich außer Literatur dazu? Wo bekomme ich php (kostenlos?!), was muss ich installieren? Helft mal einem "Programmier-Opa".

Greenhorn HeinzX
 
Na dann werde ich das mal probieren. Ich sage erst mal vielen Dank mikdoe, und wenn es klappt gibts es eine Rückmeldung. Auch den Tipp mit http://www.perl-community.de/ werde ich beherzigen.
Habe mich bisher "aus Hochachtung" etwas vor Perl gescheut (ist vielleicht eine Nummer zu groß ), aber was man nicht probiert, kann man nicht beurteilen...

Also nochmal vielen Dank.

PS: Sollte es dennoch andere Vorschläge geben, ich bin offen für alles! ;)
 
Weiter oben hast du was von serverseitig geschrieben. Und kkapsner hat schon geschrieben, dass man das PDF am besten erstmal via PHP/Perl oder sonstwas ausliest und dann die Seitenzahl im HTML Quellcode dem JS mitgibt.
Haben wir dich an der Stelle falsch verstanden oder woran scheitert das?

Hallo kkapsner, hallo mikdoe,

also ich habe mich jetz durch die Anfänge von Perl durchgearbeitet, vilen Dank nochmals an micdoe für die Links bzgl Strawberry und CPAN und mein erstes perlscript kann Seitenzahlen auslesen und auf dem Bildschirm ausgeben. :cool: Hier mein Code:
#!/usr/bin/perl
use CAM::pDF; # Name of the Perl Module

my $file_name ="S2.pdf";

my $pdf = CAM::pDF->new($file_name);

print "Seiten:";
print $pdf->numPages();

Jetzt bräuchte ich noch einen Rat wie ich den Wert an mein JavaScript übergebe, damit ich damit weiterarbeiten kann. Wer hilft mir?

Grüße vom Grünschnabel HeinzX
 
Hallo Heinz!
Respekt! Gut gemacht!
Bitte setze als zweite Zeile use strict; und als dritte use warnings;
Das gehört in jedes Script nach ganz oben direkt unter die Shebang Zeile.
Und bezüglich JS müsstest du jetzt quasi mit dem Perlscript die ganze HTML Seite die das JS enthält mit dem Script ausgeben. Entweder liest du mit dem Script die HTML Datei als Template ein, setzt die Seitenzahl in das JS ein und printest an den Browser oder du baust die komplette Seite in das Script ein und printest es komplett an den Browser. Ein Template wäre leichter zu warten, weil man dafür den Perl Quellcode nicht anfassen braucht.

Zur Ausgabe an den Browser brauchst du im Perlscript nur print an STDOUT machen, kannst also alles so lassen wie es ist, bau nur einfach noch den Header ein.

Also:
Code:
#!/usr/bin/perl
use strict;
use warnings;
 use CAM::PDF; # Name of the Perl Module
 
my $file_name ="S2.pdf";
 
my $pdf = CAM::PDF->new($file_name);
 print "Content-Type: text/html\n\n";
print "Seiten:";
 print $pdf->numPages();

Fertig. Und schon kannst du das script im Browser aufrufen. Musst natürlich noch einbauen, dass die HTML Seite quasi als Template geladen wird.
 
Du kannst in einem <script>-Bereich einfach die Seitenzahl so ausgeben, dass sie einer JS-Variablen zugeordnet wird.
 
Hallo mikdoe, hallo kkapsner,

vielen Dank für die Lorbeeren von mikdoe , aber soweit ist es noch nicht.:rolleyes:
Auf der Konsole komme ich ja nun zurecht, aber im Browser tue ich mich noch gewaltig schwer.
Während ich bei der Verwendung von JS oder nur Html einfach mit dem Aufrufen einer HTML-Seite im Browser zurechtkam, muss ich offensichtlich für Perl einen Webserver einrichten, oder sehe ich das verkehrt?:confused:
Na ja, weil es schnell gehen sollte und nix kosten durfte:icon7: habe ich mir mal xampp runtergeladen.
Den apache-server bekomme ich zum Laufen auch die Demodateien für Perlscripte funktionieren, aber leider ist dort das Modul CAM::pDF nicht enthalten, damit ist die Sache wohl gestorben, oder?! Wie komme ich aus der Sackgasse wieder raus? Welche Alternativen gibt es zu xampp? Vielleicht hat ja einer noch einen guten Vorschlag. Oder bin ich außer einem Grünschnabel auch noch zu grün hinter den Ohren?:D
Bevor ich es vergesse, ich bin beeindruckt von eurem Interesse mir zu helfen! Merci! Was für eine Motivation nicht aufzugeben.

Grüße vom Grünschnabel HeinzX

PS: Offensichtlich war ich wohl größenwahnsinning mit meiner fixen Idee von einem kleinen JS!:d
Na dafür habe ich in den letzten Tagen aber eine Menge gelernt, man gönnt sich ja sonst nichts.:cool:
 
Um Perl Module nach zuinstallieren ist eine richtige Perl Installation nötig, z.b. die von ActiveState. Dort kannst du leicht Module mit ppm installieren. Du musst nur dem Apache Server von XAMPP irgendwie so konfigurieren, dass er diese Installation für die Perlskripte verwendet. Das sollte kein Hexenwerk sein.
 
Ob XAMPP für dich überhaupt die richtige Wahl ist, würde ich mir nochmal überlegen. Da ist viel Zeug dabei, das du nicht brauchst... und das Perl ist für die unbrauchbar -> ich würde den Apache Server alleine + eine richtige Perl Installation vorziehen.
 
Genau wie kkapsner sagt. Du hast strawberry schon drauf. Und das Modul ist doch offensichtlich auch schon installiert, sonst hätte dein kleines script in der Konsole nicht funktioniert. Jetzt nur noch den Apache laden und die httpd.conf einstellen. Danach noch ein kleiner Registry Eintrag, falls die Shebang Probleme macht.
Aber eigentlich dachte ich, du wärst schon in einer Serverumgebung, so zumindest hatte ich deinen ersten Post interpretiert.
Xampp ist auch nett aber da ist etliches dabei, dass du nicht brauchst und es ist schwerlastig zu PHP.
Ich empfehle Apache. Eine Beispiel Konfig und den Reg-Eintrag kann ich dir später noch raussuchen.
Von Active State Perl rate ich zumindest dringend ab. Hat keinen Compiler und manche Module müssen rein compiliert werden. Das macht mit AS einfach keinen Spaß. Was du installiert hast reicht völlig aus, fehlt nur noch der Apache.
Und was beide mit "richtiger Perlinstallation" meinen weiß ich nicht. Strawberry drauf, Apache konfiguriert und fertig.
 
Zuletzt bearbeitet:
Ist bei XAMPP nicht Apache dabei? Der müßte doch problemlos umkonfigurierbar sein.

Ich bin ActiveState fast immer gut zu recht gekommen, auch ohne Compiler. Es gibt dutzende repositories, um auch an seltene Module zu kommen*. Um eine lokale Serverumgebung zu schaffen ist das völlig ausreichend, da du i.d.R. auf dem Server auch keine kompilierten Module installieren kannst (oder nur über Umwege).

Eine richtige Perlinstallation, ist eine mit der Möglichkeit Module zu installieren, die bietet die von XAMPP anscheinend nicht.

*Nachtrag: aber natürlich ist auch Strawberry Perl geeignet. Wie gesagt, es ist alles geeignet, ausser der Perlinstallation von XAMPP
 
Zurück
Oben