import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.Date; import java.util.TimeZone; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import org.apache.cxf.common.util.Base64Utility; public class PDF_Alchemy_Upload { private static final String ACCESS_KEY_ID="xxxxxxxxxxxxxxxxxxxx"; private static final String SECRET_ACCESS_KEY="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; private static final String HMAC_SHA1="HMACSHA1"; // Uploads a single file to PDF Alchemy. private static void uploadFile(File file) { System.out.print("Uploading '"+file.getName()+"': "); try { // Generate the HMAC-SHA1 signature. SimpleDateFormat dateFormat=new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss 'GMT'"); dateFormat.setTimeZone(TimeZone.getTimeZone("GMT")); String date=dateFormat.format(new Date()); String request='/'+ACCESS_KEY_ID+"/inqueue/"+URLEncoder.encode(file.getName(),"UTF-8"); String clearText="PUT\n"+ACCESS_KEY_ID+'\n'+date+'\n'+request; Mac mac = Mac.getInstance(HMAC_SHA1); mac.init(new SecretKeySpec(SECRET_ACCESS_KEY.getBytes(),HMAC_SHA1)); String signature=Base64Utility.encode(mac.doFinal(clearText.getBytes())); // Set up the PDF Alchemy upload request. HttpURLConnection conn=(HttpURLConnection)((new URL("http://www.pdfalchemy.com"+request)).openConnection()); conn.setDoOutput(true); conn.setRequestMethod("PUT"); conn.setRequestProperty("date",date); conn.setRequestProperty("X-PDF-Alchemy-Signature",signature); // Send the file data to PDF Alchemy. FileInputStream fileStream=new FileInputStream(file); OutputStream outStream=conn.getOutputStream(); byte buffer[]=new byte[10*1024]; int bytesRead; while ((bytesRead=fileStream.read(buffer))>=0) outStream.write(buffer,0,bytesRead); outStream.close(); fileStream.close(); // Read the response (the PDF Alchemy document ID XML). BufferedReader reader=new BufferedReader(new InputStreamReader(conn.getInputStream())); String line; while ((line=reader.readLine())!=null) System.out.println(line); reader.close(); } catch (Exception e) { System.out.println(e.toString()); } } // Uploads all convertable files from a single directory, to PDF Alchemy. private static void uploadFilesInDir(File dir) { for (File file : dir.listFiles()) if ((file.getName().endsWith(".doc"))||(file.getName().endsWith(".docx"))|| (file.getName().endsWith(".rtf"))||(file.getName().endsWith(".txt"))) uploadFile(file); } public static void main(String[] args) { for (String arg : args) { File file=new File(arg); if (file.isDirectory()) uploadFilesInDir(file); else uploadFile(file); } } }