1 50 package com.lowagie.tools.plugins; 51 52 import java.io.File; 53 import java.io.FileOutputStream; 54 55 import javax.swing.JInternalFrame; 56 import javax.swing.JOptionPane; 57 58 import com.lowagie.text.pdf.PdfEncryptor; 59 import com.lowagie.text.pdf.PdfReader; 60 import com.lowagie.text.pdf.PdfWriter; 61 import com.lowagie.tools.arguments.BitsetArgument; 62 import com.lowagie.tools.arguments.FileArgument; 63 import com.lowagie.tools.arguments.OptionArgument; 64 import com.lowagie.tools.arguments.PdfFilter; 65 import com.lowagie.tools.arguments.ToolArgument; 66 67 70 public class Encrypt extends AbstractTool { 71 private final static int PERMISSIONS[] = { 72 PdfWriter.AllowPrinting, 73 PdfWriter.AllowModifyContents, 74 PdfWriter.AllowCopy, 75 PdfWriter.AllowModifyAnnotations, 76 PdfWriter.AllowFillIn, 77 PdfWriter.AllowScreenReaders, 78 PdfWriter.AllowAssembly, 79 PdfWriter.AllowDegradedPrinting}; 80 private final static String PERMISSION_OPTIONS[] = { 81 "AllowPrinting", 82 "AllowModifyContents", 83 "AllowCopy", 84 "AllowModifyAnnotations", 85 "AllowFillIn (128 bit only)", 86 "AllowScreenReaders (128 bit only)", 87 "AllowAssembly (128 bit only)", 88 "AllowDegradedPrinting (128 bit only)" 89 }; 90 91 92 95 public Encrypt() { 96 arguments.add(new FileArgument(this, "srcfile", "The file you want to encrypt", false, new PdfFilter())); 97 arguments.add(new FileArgument(this, "destfile", "The file to which the encrypted PDF has to be written", true, new PdfFilter())); 98 arguments.add(new ToolArgument(this, "userpassword", "The userpassword you want to add to the PDF file", String.class.getName())); 99 arguments.add(new ToolArgument(this, "ownerpassword", "The ownerpassword you want to add to the PDF file", String.class.getName())); 100 arguments.add(new BitsetArgument(this, "permissions", "Permissions on the file", PERMISSION_OPTIONS)); 101 OptionArgument oa = new OptionArgument(this, "strength", "Strength of the encryption"); 102 oa.addOption("40 bit encryption", "40"); 103 oa.addOption("128 bit encryption", "128"); 104 arguments.add(oa); 105 } 106 107 110 protected void createFrame() { 111 internalFrame = new JInternalFrame("Encrypt", true, true, true); 112 internalFrame.setSize(300, 80); 113 internalFrame.setJMenuBar(getMenubar()); 114 } 115 116 119 public void execute() { 120 try { 121 if (getValue("srcfile") == null) throw new InstantiationException("You need to choose a sourcefile"); 122 if (getValue("destfile") == null) throw new InstantiationException("You need to choose a destination file"); 123 int permissions = 0; 124 String p = (String)getValue("permissions"); 125 if (p != null) { 126 for (int k = 0; k < p.length(); ++k) { 127 permissions |= (p.charAt(k) == '0' ? 0 : PERMISSIONS[k]); 128 } 129 } 130 byte[] userpassword = null; 131 if (getValue("userpassword") != null) { 132 userpassword = ((String)getValue("userpassword")).getBytes(); 133 } 134 byte[] ownerpassword = null; 135 if (getValue("ownerpassword") != null) { 136 userpassword = ((String)getValue("ownerpassword")).getBytes(); 137 } 138 PdfReader reader = new PdfReader(((File)getValue("srcfile")).getAbsolutePath()); 139 PdfEncryptor.encrypt( 140 reader, 141 new FileOutputStream((File)getValue("destfile")), 142 userpassword, 143 ownerpassword, 144 permissions, 145 "128".equals(getValue("strength")) 146 ); 147 } 148 catch(Exception e) { 149 JOptionPane.showMessageDialog(internalFrame, 150 e.getMessage(), 151 e.getClass().getName(), 152 JOptionPane.ERROR_MESSAGE); 153 System.err.println(e.getMessage()); 154 } 155 } 156 157 160 public void valueHasChanged(ToolArgument arg) { 161 if (internalFrame == null) { 162 return; 164 } 165 } 167 168 172 public static void main(String[] args) { 173 Encrypt tool = new Encrypt(); 174 if (args.length < 2) { 175 System.err.println(tool.getUsage()); 176 } 177 tool.setArguments(args); 178 tool.execute(); 179 } 180 181 184 protected File getDestPathPDF() throws InstantiationException { 185 return (File)getValue("destfile"); 186 } 187 188 } 189 | Popular Tags |