2016-03-30 14 views
2

私は現在docxからpdf、その後をpdfで暗号化しています。私のコードは以下の通りです:docxをPDFに変換すると同時に暗号化することはできますか?

//Convert 
    XWPFDocument document = new XWPFDocument(inStream); 
    PdfOptions options = PdfOptions.create(); 
    PdfConverter.getInstance().convert(document, outStream, options); 

    //Encrypt 
    PdfReader reader = new PdfReader("C:\\uploads\\Resume.pdf"); 
    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("C:\\uploads\\ResumeEncrypt.pdf")); 
    stamper.setEncryption("hello123".getBytes(), "hello".getBytes(), 
      PdfWriter.ALLOW_PRINTING, PdfWriter.ENCRYPTION_AES_128 | PdfWriter.DO_NOT_ENCRYPT_METADATA); 
    stamper.close(); 

    reader.close(); 

これで私は2つのファイルを取得しています。 2 files

しかし、私が唯一の希望 - 何が起こっている

が最初に私がResume.pdfにResume.docxに変換され、その後、これは一例である2つのファイル にその結果、ResumeEncrypt.pdfにResume.pdfを暗号化既に変換され暗号化されている1つのファイル。

これは私が何をしたいの例です - only 1 file

は変換し、暗号化し、単一のファイルを取得することが可能ですか?

+0

に基づかできmaaybe? –

+0

私はそれを行うことができますが、私はそれを行うより効率的な方法をしたい –

答えて

0

ByteArrayInputStreamを使用してみてください。pdfを変換してください。

私は数日前に同様のことをしました。 Base64をGzipに変換し、必要に応じてストリームのxmlに解凍して、tipのようなコードを与えることができます。

ですから、不要なファイルを削除することはできませんあなたはこのコード

//Convert Based64, unzip to xml in stream (strLista is list of Base64 bytes 
ByteArrayInputStream in = new ByteArrayInputStream(strLista.getBytes()); 
      try(InputStream reader = Base64.getMimeDecoder().wrap(in)){ 
      try (GZIPInputStream gis = new GZIPInputStream(reader)) { 
      try (ByteArrayOutputStream out = new ByteArrayOutputStream()){ 
      int readGis = 0; 
      while ((readGis = gis.read(buff)) > 0) 
       out.write(buff, 0, readGis); 
+0

それは動作しません、ありがとう –

関連する問題