2016-03-21 9 views
0

Sie müssen den Offset und die Bytelänge jeder Seite in einer PDF-Datei ermitteln. Beispiel: Der Offset der ersten Seite ist 0 und die Länge ist die Bytelänge der Seite .Split-PDF mit Offset und Länge - IBM ONDEMAND (kombiniertes PDF)

Ich habe eine Anforderung zum Übergeben der Indexdatei für ein PDF an IBM OnDemand Tool, es ist ein PDF-Repository. Ich muss einzelne PDF-Dateien zusammenführen, den Versatz und die Länge jeder PDF-Datei berechnen, eine Indexdatei mit diesen beiden Parametern erstellen und sie an das Werkzeug übergeben.

Das Tool wird die Indexdatei verwenden, um die PDF-Datei (mehrere PDF-Dateien kombiniert in einzelne) basierend auf dem Offset und der Länge als Eigenschaften (Indexdatei) zu teilen.

Ich habe ITEXT verwendet, um den Anfang und das Ende der Seite mit Lesezeichen zu erhalten. Sie müssen den Offset und die Länge der Bytes für jede Seite berechnen.

Vorschlagen gibt es eine Möglichkeit, den Index (Anfang der Seite) und das Ende der Seite in Bytes zu erhalten.

Jede Hilfe wäre

+0

Ist es mir, oder ist diese Frage einfach nicht sinnvoll? Kannst du es bitte umformulieren? Es scheint, als würden Sie einige Annahmen über das PDF-Dateiformat treffen, die falsch sind. –

Antwort

0

Sie können nicht tun dies in keiner Weise gewürdigt werden. Bitte lesen Sie die PDF-Dateiformat-Spezifikation (hier unter anderem http://www.adobe.com/devnet/pdf/pdf_reference.html).

Eine PDF-Datei enthält "Objekte" und eine Seite hat eine Seitenbeschreibung in einem Stream-Objekt und kann (und wird meistens) verschiedene andere Objekte verwenden, die aller Wahrscheinlichkeit nach um die Datei verstreut sind.

Sie missverstehen, wie PDF-Dateien erstellt werden und Sie müssen verstehen, bevor Sie anfangen zu stolpern, um dies zu implementieren, oder Sie werden viel Zeit verschwenden.

0

Diese Frage muss im IBM Ondemand-Forum gestellt werden. Ich dachte, ich könnte Itext nutzen, um es zu knacken. Wie von David erwähnt, können wir diese Art unstrukturierter PDFs nicht mit Itext verarbeiten. Unten ist das Code-Snippet angegeben, um das Problem zu lösen.

Beide PDFs werden mit plain java zusammengeführt. Die zusammengeführte Datei enthält zwei EOF-, Kopf- und Nachspanninformationen.

Wenn Sie in Acrobat öffnen, werden die letzten Informationen zum Dokument angezeigt. Wenn wir die Länge und den Index an OnDemand übergeben, wird es die PDF teilen und wie erwartet angezeigt.

public static void main(String[] args) throws IOException { 
    String sourceFile1Path = "C:\\sample1.PDF"; 
    String sourceFile2Path = "C:\\sample1.PDF"; 

    String mergedFilePath = "C:\\merged.PDF"; 

    File[] files = new File[2]; 
    files[0] = new File(sourceFile1Path); 
    files[1] = new File(sourceFile2Path); 

    File mergedFile = new File(mergedFilePath); 
    for (File file : files) { 
     FileWriter fstream = null; 
     BufferedWriter out = null; 
     fstream = new FileWriter(mergedFile, true); 
     out = new BufferedWriter(fstream); 

     FileInputStream fis = new FileInputStream(file); 
     BufferedReader in = new BufferedReader(new InputStreamReader(fis)); 

     String aLine; 
     while ((aLine = in.readLine()) != null) { 
      out.write(aLine); 
      out.newLine(); 
     } 
     out.close(); 
     fstream.close(); 
     fis.close(); 
     in.close(); 

     System.out.println("File Length: " + file.getName() + " : " + new File(mergedFilePath).length()); 
    } 
}