2017-01-30 3 views
0

私はJavaではうまくいませんが、実際にはTalend StudioはPDF分割とマージをサポートしていませんでした。もう一つの解決策。java.lang.ArrayIndexOutOfBoundsException:0 at pdfsplitter.SplitPDFFile.main(SplitPDFFile.java:19)

私の状況を説明するには:ここでのタスクは、n-PDFファイルにnページでPDFを分割することです

を。 (各ページに1つずつ)。 その後、PDFファイルを別の固定PDFとマージする必要があります。

分割したいPDFは、「TJasperReportExec」を使ってTalendで自動的に作成され、PDFファイルの分割もサポートしていない(afaik)具体的なテンプレートで作成されます。

いくつかの研究の後、私はそのコードを見つけた:

package pdfsplitter; 

import java.io.FileOutputStream; 

import com.lowagie.text.Document; 
import com.lowagie.text.pdf.PdfCopy; 
import com.lowagie.text.pdf.PdfImportedPage; 
import com.lowagie.text.pdf.PdfReader; 

public class SplitPDFFile { 
/** 
* @param args 
*/ 
public static void main(String[] args) { 

    try { 
     String inFile = args[0].toLowerCase(); 
     System.out.println ("Reading " + inFile); 
     PdfReader reader = new PdfReader(inFile); 
     int n = reader.getNumberOfPages(); 
     System.out.println ("Number of pages : " + n); 
     int i = 0; 
     while (i < n) { 
      String outFile = inFile.substring(0, inFile.indexOf(".pdf")) 
       + "-" + String.format("%03d", i + 1) + ".pdf"; 
      System.out.println ("Writing " + outFile); 
      Document document = new Document(reader.getPageSizeWithRotation(1)); 
      PdfCopy writer = new PdfCopy(document, new FileOutputStream(outFile)); 
      document.open(); 
      PdfImportedPage page = writer.getImportedPage(reader, ++i); 
      writer.addPage(page); 
      document.close(); 
      writer.close(); 
     } 
    } 
    catch (Exception e) { 
     e.printStackTrace(); 
    } 

    /* example : 
     java SplitPDFFile d:\temp\x\tx.pdf 

     Reading d:\temp\x\tx.pdf 
     Number of pages : 3 
     Writing d:\temp\x\tx-001.pdf 
     Writing d:\temp\x\tx-002.pdf 
     Writing d:\temp\x\tx-003.pdf 
    */ 

} 
} 

ここでエラーが文字列の名前を定義した後、[]引数の値であるように思われます。

ソリューションを検索し、さまざまな方法で修正しようとすると、エラーは一度修正されませんでした。 いくつかのアドバイスや適切な解決策とのリンクが良いでしょう。事前に

おかげで、

Ulonis

+0

'引数[0]'このクラスの起動時に 'java'実行可能に与えられた最初のパラメータの値であり、1つを提供したのですか? – Aaron

+0

Javaコードを実行すると、実行時に引数を渡す必要があります。 args []には何もありませんので、配列は範囲外です。例えばこれを取る - http://stackoverflow.com/questions/890966/what-is-string-args-parameter-in-main-method-java – yashpandey

+0

今すぐ問題に答える。それでも大変ありがとうございました。 :) – Ulonis

答えて

0

は数分前に私の問題のための解決策を見つけました。アーロンのように& yashpandeyは既に言っています。分割する価値はありませんでした(この場合はpdfファイルはありません)。ここ

私のソリューションは、次のとおりです。

public static void main(String[] args) { 

     try { 
      String s = "C:\\Users\\User\\PDFFile.pdf"; 
      String inFile = s.toLowerCase(); 
      System.out.println ("Reading " + inFile); 
      PdfReader reader = new PdfReader(inFile); 

私は[0]引数を削除し、このファイルにハードリンクを持つ別の文字列を作成しました。この場合も、このジョブはサーバー上で自動的に開始され、このファイルの名前は毎回同じである可能性があるため可能です。通常はリンクを取得するためにここでいくつかのソフトコーディングが必要ですそれは動作し、それは何をするかを行います。

ありがとうございます。私が自分のために解決策を見つけなかったなら、私はあなたのコメントの後にそれを得ました。

Ulonis

関連する問題