PDF "exportieren"

Ozzy Ozborn

Erfahrenes Mitglied
Hi,

für ein Uni-Projekt muss ich ein Programm schreiben, das qausi pdf-Dateien "exportiert", und zwar soll jede Seite auf maximal 640x400 verkleinert werden, und schwarz-weiß gemacht werden. Dann sollen die Seiten exportiert werden, und zwar pro Seite eine Datei (durchnummeriert), nur mit binären Daten (schwarzer Pixel eine 0, weißer Pixel eine 1).

Könnt Ihr mir bei diesem Problem weiterhelfen?

MfG, Ozzy
 
Wenn ich das richtig verstanden habe, müßtest Du das PDF erstmal anzeigen bzw. in eine Bitmap 'übersetzen' (rendern) und dann diese Bitmap abspeichern.
Da kannst Du Dir natürlich die Mühe machen, das PDF selber zu parsen und anzuzeigen (möglicherweise mit Hilfe einer entsprechenden Bibliothek (z.B. PDFLIB)) und dann das Fenster, in dem Du das anzeigst Pixel für Pixel zu speichern.
Ein etwas einfacherer Weg könnte sein, Du zeigst das PDF in einem PDF-Reader an, holst Dur einen Zugriff auf das Fenster des Readers und holst dir die Daten da raus.
Du hast leider keine Angaben über Deine Entwicklungsumgebung und Dein System gemacht. Unter Windows kannst Du Dir ein Handle auf das Fenster des Readers holen, damit bekommst Du Zugriff auf den DeviceContext des Fensters, aus dem Du die Bitmap kopieren kannst. Dann kannst Du sie ja auf die gewünschten Maße bringen und abspeichern.
 
Hi,

ja, ich arbeite unter Windows; aber ich weiß nicht, wie ich das umsetzen soll, was Du da geschrieben hast...
Hast Du noch etwas Code für mich?

MfG, Ozzy
 
Nee, habe ich leider nicht, und auch keine Zeit, was zu schreiben, sorry.
Aber um ein Handle auf das Fenster des Readers zu bekommen, kannst Du Dir mal die Funktionen EnumWindows(...) und FindWindow(...) anschauen. Wenn Du das Fenster gefunden hast, kannst Du mit GetDC ein Handle auf den DeviceContext bekommen. Wenn Du so weit gekommen bist, kannst Du Dir mal die Bitmap-Funktionen der Klasse CDC anschauen (die gibt es auch als SDK-Versionen). Sie bieten Möglichkeiten zum Kopieren und gleichzeitigen Skalieren der Bitmap (BitBlt, StretchBlt) sowie Zugriff auf die einzelnen Pixel (GetPixel). Zum Gebrauch von BitBlt findest Du hier im Forum schon ein paar Beispiele.
 
Zurück