Funktion für Seitengröße und Anzahl aus PDF-Datei

Sie haben eine PDF-Datei und wollen herausfinden, wie viele Seiten diese aktuell enthält und welche Abmessungen diese Seiten jeweils besitzen. Das können Sie mit unserer Funktion int SCAN_PDF ermitteln. Sie muss für jede Seite im PDF-File separat aufgerufen werden. Anhand der Rückgabewerte dieser Funktion kann Ihr Programm erkennen, ob nur eine Seite vorhanden war, ob nach der aktuell erkannten Seite noch mit weiteren Seiten zu rechnen ist und daher die Funktion nochmals aufgerufen werden muss, oder ob keine weitere Seite mehr erkannt wurde und deshalb die Funktion für diese Datei nicht mehr aufzurufen ist.


Genaue Beschreibung der Funktion SCAN_PDF

Aufruf : retwert = SCAN_PDF( inputfile, width, length );


  1. Die Übergabeparameter sind:

    1. inputfile ist der Zeiger auf den ASCII-String, welcher den Namen der PDF-Datei enthält. Der Typ ist char *.

    2. width ist die Adresse der float-Variablen, in welche die Funktion die Breite der aktuellen Seite in mm schreibt. Der Typ ist float *.

    3. length ist die Adresse der float-Variablen, in welche die Funktion die Länge der aktuellen Seite in mm schreibt. Der Typ ist float *.

  2. Die Rückgabewerte vom Typ int sind:

SCAN_FAILURE

-1

inputfile kann nicht zum Lesen geöffnet werden.

SCAN_UNKNOWN

0

inputfile wurde nicht als PDF-Datei erkannt. Sie wurde geschlossen.

SCAN_NOSIZE

1

inputfile ist eine PDF-Datei, aber es ist keine Grösseninformation zu finden. Sie wurde geschlossen


SCAN_FRAME

2

Es wurde genau eine Seite in inputfile erkannt und die Grösse in *width und *length zurückgegeben. Die Datei wurde geschlossen.

SCAN_FRAME_MORE

3

Es wurde eine Seite in inputfile erkannt und deren Grösse in *width und *length zurückgegeben, aber es sind eventuell noch weitere Seiten vorhanden. Die Datei ist nach dem Aufruf noch offen.

SCAN_EOF

4

In inputfile wurde keine Seite mehr erkannt, d. h. in *width und *length wurde nichts mehr zurückgegeben. Die Datei wurde geschlossen.

Programmbeispiel:

Sie wollen den Papierbedarf für den Ausdruck des PDF-Files buch.pdf ermitteln. Jedes Blatt soll nur einseitig bedruckt werden. Daher berechnet Ihr Programm die Summe der Flächen aller aktuellen Seiten in buch.pdf.


#include <stdio.h>
#include "scan_pdf.h"

main()
{
   int retwert;         // Nimmt den Rückgabewert der Funktion SCAN_PDF auf.
   float breite;        // In diese Variable wird von SCAN_PDF die Breite der
                        // aktuellen Seite aus buch.pdf in mm geschrieben.

   float länge;         // In diese Variable wird von SCAN_PDF die Länge der
                        // aktuellen Seite aus buch.pdf in mm geschrieben.

   double gesamtfläche; // In dieser Variablen werden die Flächen aller Seiten
                        // aus buch.pdf aufsummiert.

   gesamtfläche = 0.;

   do
   {
      retwert = SCAN_PDF( "buch.pdf", &breite, &länge );

      if ( retwert == SCAN_FAILURE ) 
      {
         Fehlermeldung;
         return;
      }
      else if ( retwert == SCAN_UNKNOWN )
      {
         Fehlermeldung;
         return;
      }
      else if ( retwert == SCAN_NOSIZE )
      {
         Fehlermeldung;
         return;
      }
      else if ( retwert == SCAN_FRAME )
      {
         gesamtfläche = breite * länge;
         break;
      }
      else if ( retwert == SCAN_FRAME_MORE )
      gesamtfläche+= breite * länge ; 

   } while ( retwert != SCAN_EOF );

   printf("Die Gesamtfläche beträgt %f mm*mm\n", gesamtfläche);

}