2016-03-30 28 views
2

Şu anda pdf, pdf şifrelemek için docx dönüştürüyorum. İşte benim kodum:Ayrıca, aynı zamanda şifreleyerek docx'i PDF'ye dönüştürebilir miyim?

//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(); 

Bunu yaparak 2 dosya alıyorum.

Ne oluyor ilk ben Resume.pdf için Resume.docx dönüştürülür, sonra 2 dosya Bu kadar sonuçlanan ResumeEncrypt.pdf için Resume.pdf şifreli örnektir - 2 files

Ama sadece istiyorum bir dosya, zaten dönüştürülmüş ve şifrelenmiş. only 1 file

o dönüştürme ve şifreleme sonra tek bir dosya almak mümkün mü -

Bu ne istiyorum örnektir?

+0

istenmeyen dosya silinemez? –

+0

Bunu yapabilirim ama daha verimli bir şekilde yapmak istiyorum –

cevap

0

ByteArrayInputStream kullanmayı deneyin, pdf dönüştürün.

Birkaç gün önce benzer bir şey yaptım. Base64'ü Gzip'e dönüştürün ve isterseniz ipucu gibi bir kod vermenizi isterseniz xml akışında sıkıştırın.

Yani bu kodu dayandırabilirsiniz maaybe

//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

çalışmıyor, teşekkürler –