Seiten aus PDF extrahieren

Ich hatte das Problem dass ich Seiten aus PDF extrahieren wollte. Nun kann der Acrobat Reader zwar Seiten selektiv drucken, aber eben nur das ganze Dokument speichern.

Eine erste Idee wäre gewesen einfach die interessanten Seiten auf einen “PDF-Drucker” zu drucken. Da hatte ich aber Bedenken dass die Abbildungen an Qualität verlieren.

Ich brauche also eine Software die das besser kann. Zusätzlich sollte die Software nichts kosten, am besten noch ein Open Source Projekt sein.
Eine Suche im Netz brachte das “pdftk the pdf toolkit” zum Vorschein.
Dabei handelt es sich um ein Kommandozeilenwerkzeug um PDF Dateien zu manipulieren. Die Funktionen die ich bislang verwendet habe sind das Rotieren von Seiten und das Schneiden und neu Zusammenfügen von PDF Dateien. Das funktioniert wie gewünscht.

Mit dieser Zeile wird zum Beispiel ein neues PDF out.pdf erzeugt das die Seiten 12 bis 17 der Datei input.pdf enthält:

Mehr Infos über das Programm und weitere Anwendungsbeispiele finden sich auf der Projektseite. Den Quellcode des GPL Tools gibt es dort auch zum Download. Für Windows, MacOS und Linux gibt es schon fertige Binaries, alle anderen müssen selbst compilieren.

jQuery von Google CDN und lokalem Fallback laden

Google bietet einige Javascript Frameworks zum Download über sein Content Delivery Network (CDN) an. Der Vorteil ist, dass die Server schnell sind und dass eine große Chance besteht, dass der Besucher einer Website die Datei bereits in seinem Cache hat. Beides führt zu einer deutlich schnelleren Ladezeit.

Was aber wenn die Server von Google nicht erreichbar sind? Zum Beispiel weil der Nutzer den Zugriff aus irgend welchen Gründen blockiert? Dann würde die Website nicht mehr funktionieren.
Zum Glück gibt es einen Ausweg.

Der Ausweg

Ich wollte auch die Vorteile nutzen und jQuery von Google für meine Website bereitstellen lassen. Falls das nicht klappen sollte will ich einen Plan B haben. Das lässt sich mit Javascript verwirklichen.

Der Trick ist, dass jQuery ein Objekt im Browser anlegt wenn es geladen wurde. Und das lässt sich mit Javascript abfragen. Falls es jQuery nicht gibt, dann wird mit Javascript eine lokale Kopie geladen.

Ein weiterer Trick ist es die URL ohne das scheme (das http) anzugeben. Was auf den ersten Blick ungewöhnlich aussieht ist eine gültige Syntax. Damit kann dann sowohl eine http als auch eine verschlüsselte https Verbindung verwendet werden ohne dass es dabei zu Fehlermeldungen kommt. Der Browser verwendet für die Anfrage einfach die fehlenden Stücke aus der URL der Seite die den Link enthält. Die Details sind im RFC 2396 beschrieben.

Eine netter Trick, der so natürlich auch mit anderen Bibliotheken funktioniert.