2016-03-30 16 views
2

Ich konvertiere derzeit docx zu pdf, dann verschlüsseln die pdf. Hier ist mein Code:Kann ich docx in PDF konvertieren und gleichzeitig verschlüsseln?

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

Dadurch bekomme ich 2 Dateien.

Was passiert ist zunächst konvertiert ich die Resume.docx zu Resume.pdf, dann verschlüsselt die Resume.pdf zu ResumeEncrypt.pdf, was zu 2 Dateien Dies ist das Beispiel - 2 files

Aber ich will nur eine Datei, die bereits konvertiert und verschlüsselt ist.

Dies ist das Beispiel dafür, was ich will - only 1 file

Ist es möglich, eine einzelne Datei nach der Konvertierung und die Verschlüsselung zu bekommen?

+0

stützen kann, kann man nicht die unerwünschte Datei löschen? –

+0

Ich kann das tun, aber ich will einen effizienteren Weg, es zu tun –

Antwort

0

Verwenden Sie ByteArrayInputStream, geben Sie PDF konvertieren.

Ich habe etwas ähnliches vor ein paar Tagen gemacht. Konvertiere Base64 nach Gzip und entpacke es zu XML im Stream, wenn du willst, kann ich dir den Code wie tip geben.

So maaybe Sie auf diesen Code

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

es funktioniert nicht, danke –

Verwandte Themen