2016-12-05 15 views
0

pdfファイルから特定のページを削除するために、このようなコードを使用しています。ITextでPDFページを削除するたびに新しい出力ハッシュが発生する

PdfReader reader = new PdfReader(src); 
reader.selectPages("1,2"); 
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest)); 
stamper.close(); 

は私の問題は、私が何かを必要とする、私はこれを実行するたび(同じ入力ファイル、同じページ)、出力ファイルは(MD = MessageDigest.getInstance(「SHA1」)を使用して)明確なハッシュを持っていることを

ですこのよう

inputFile.pdf (hash_A) 
selectPages("1,2") 
outputFile.pdf (hash_B) 

inputFile.pdf (hash_A) 
selectPages("1,2") 
outputFile.pdf (hash_B) 

が、私はこの

inputFile.pdf (hash_A) 
selectPages("1,2") 
outputFile.pdf (hash_B) 

inputFile.pdf (hash_A) 
selectPages("1,2") 
outputFile.pdf (hash_C) 

inputFile.pdf (hash_A) 
selectPages("1,2") 
outputFile.pdf (hash_D) 

コードを取得

public String quitarPagBlancasPDF(String origen, String destino, int blankPdfsize) { 
     try { 

      com.itextpdf.text.pdf.PdfReader r = new com.itextpdf.text.pdf.PdfReader(origen); 
      String paginas = ""; 
      boolean editado = false; 

      for (int i = 1; i <= r.getNumberOfPages(); i++) { 
       byte bContent[] = r.getPageContent(i); 
       if (bContent.length > blankPdfsize) { 
        paginas += String.valueOf(i) + ","; 
       } else { 
        editado = true; 
       } 

      } 

      if (editado) { 
       r.selectPages(paginas); 
       PdfStamper stamper = new PdfStamper(r, new FileOutputStream(destino)); 
       stamper.setFullCompression(); 

       stamper.close(); 
       stamper = null; 
       r = null; 
      } else { 
       r = null; 

       return "Sin Cambios"; 
      } 
     } catch (Exception e) { 
      return e.getMessage(); 
     } 
     return "OK"; 
    } 
+0

Pdfsには、ドキュメントが最後に変更された日時と一意のIDに関する情報が含まれています。両方の要素が常に異なるハッシュ値になります。 – mkl

答えて

0

Finalmentedecidíarmarのアンハッシュ詐欺エルcontenidoデCADApáginaデルPDFパラ版SIドスPDFの息子が

public static String getPdfSha(String origen, String metodo) { 
     try { 

      com.itextpdf.text.pdf.PdfReader r = new com.itextpdf.text.pdf.PdfReader(origen); 
      String Sha = ""; 

      for (int i = 1; i <= r.getNumberOfPages(); i++) { 
       byte bContent[] = r.getPageContent(i); 
       Sha = Sha + Arrays.toString(bContent); 
      } 
      Sha = encriptar(Sha, metodo); 
      return Sha; 

     } catch (Exception e) { 
      return ""; 
     } 
    } 

のpublic static String型encriptar(文字列TEXTO、文字列のalgoritmo){

String sha; 
try { 
    java.security.MessageDigest md = java.security.MessageDigest.getInstance(algoritmo); 
    byte[] hash = md.digest(texto.getBytes()); 
    java.util.Formatter formatter = new java.util.Formatter(); 
    for (byte b : hash) { 
     formatter.format("%02x", b); 
    } 
    sha = formatter.toString(); 
    formatter = null; 
    hash = null; 
    md = null; 

} catch (java.security.NoSuchAlgorithmException e) { 
    return ""; 

} 
return sha; 
をiguales

}

+0

** A **英語をお願いします。 ** B **あなたのハッシュは即時のページコンテンツの指示のみを考慮します。それはあなたの仕事に本当に十分ですか?それよりもはるかにpdfにあります。 – mkl

関連する問題