2016-04-12 6 views
0

ジャスパーから2つのPDFを生成します。これらの2つのPDFをハッシュすると、さまざまな時に作成されたコンテンツと同じコンテンツを持っているため、正しい結果が得られます。 しかし、これら2つのPDFをPDF/Aに変換すると、sha1のハッシュ値は等しくなります。2つのPDFからのSHA1ダイジェストは異なっていますが、PDF/Aに変換したときには同じです

誰かがこの問題を私に助けてくれますか?これはどのように可能ですか?

EDIT:

private static final String OUTPUT_FORMAT = "fi_pdfa"; 

    public void convert(String exeFullPath, String inputFile, 
        String outputFile, String fontDirectory) { 
    String[] execParams = new String[4]; 

    execParams[0] = exeFullPath; 

    execParams[1] = "\"inputpath_u=" + base64Encode(inputFile) + "\""; 
    execParams[2] = "\"outputpath_u=" + base64Encode(outputFile) + "\""; 
    execParams[3] = "\"outputid=" + OUTPUT_FORMAT + "\""; 

    // execParams[1] = "inputpath_u=\"" + base64Encode(inputFile) + "\""; 
    // execParams[2] = "outputpath_u=\"" + base64Encode(outputFile) + "\""; 
    // execParams[3] = "outputid=" + OUTPUT_FORMAT; 
    // execParams[4] = "fontdirectory=\"" + fontDirectory + "\""; 

    Runtime runtime = Runtime.getRuntime(); 
    Process process = null; 
    ExportStatusCode statusCode = null; 
    ExportShutdownHook shutdownHook = null; 
    try { 
     process = runtime.exec(execParams); 


     // Install a shutdown hook to perform cleanup if we're interrupted. 
     shutdownHook = new ExportShutdownHook(process); 
     runtime.addShutdownHook(shutdownHook); 

     process.waitFor(); 
     InputStream is = process.getInputStream(); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 

     String line = null; 
     while ((line = reader.readLine()) != null) 
      System.out.println(line); 
     reader.close(); 
     runtime.removeShutdownHook(shutdownHook); 
     shutdownHook.finished(); 

     statusCode = new ExportStatusCode(process.exitValue()); 
    } catch (IOException ex) { 
     log.error(ex); 
     if (shutdownHook != null) { 
      runtime.removeShutdownHook(shutdownHook); 
      shutdownHook.finished(); 
     } 
     statusCode = ExportStatusCode.SCCERR_JAVA_IO_ERROR; 
    } catch (InterruptedException ex) { 
     log.error(ex); 
     runtime.removeShutdownHook(shutdownHook); 
     shutdownHook.finished(); 
     process.destroy(); 
     statusCode = ExportStatusCode.SCCERR_JAVA_INTERRUPTED; 
    } 
} 
+1

変換方法を見てみましょう。 –

+0

私はOracle OutsideInを使用しています... –

+0

あなたの実際のコードを見ずに、私はあなたがしたことを推測し始めるつもりです。あなたは主な方法を宣言しましたか? –

答えて

0

説明に基づいて、私はそれがPDF/Aコンバータ使用されていると同じようにそんなにあなたのコードに問題があるとは思いません。

タイムスタンプを使用する必要がある、または示唆するPDF機能がいくつかあります(デジタル署名、注釈、PieceInfo辞書など)。一意の識別子を使用する必要がある、または示唆する機能がいくつかあります。

PDFプロデューサは、ファイル識別子(トレーラ辞書の配列に格納されている)を生成することを強く推奨します。そのため、残りのファイルが同じように作成されても、トレーラ辞書のIDエントリは一意で、異なるファイルのハッシュ値...これは、ID配列がPDF Converterによって生成されていないか、または識別子の生成に欠陥があることを強く示します。これは、Hex Viewerで2つのPDFを開き、ファイルの最後までスクロールすることで確認できます。

免責事項:いつでも、私はOutsideIn製品の技術サポートを提供しました。

関連する問題