package sign_pdf ; import java.io.*; import java.security.*; import java.security.cert.Certificate; import com.lowagie.text.*; import com.lowagie.text.pdf.*; /** * * @author Work Post BILLE */ public class Sign_pdf { /** * Nom du document PDF généré non signé */ static String fname = ("HelloWorld.pdf") ; /** * Nom du document PDF généré signé */ static String fnameS = "HelloWorld_sign.pdf" ; /** * @param args the command line arguments */ public static void main(String[] args) { // TODO code application logic here try { Sign_pdf.buildPDF() ; Sign_pdf.signPdf() ; } catch(Exception e) { } } public static void buildPDF() { // Creation du document Document document = new Document(); try { // Creation du "writer" vers le doc // directement vers un fichier PdfWriter.getInstance(document, new FileOutputStream(fname)); // Ouverture du document document.open(); // Ecriture des datas document.add(new Paragraph("Hello World")); } catch (DocumentException de) { System.err.println(de.getMessage()); } catch (IOException ioe) { System.err.println(ioe.getMessage()); } // Fermeture du document document.close();} public static final boolean signPdf() throws IOException, DocumentException, Exception { // Vous devez preciser ici le chemin d'acces a votre clef pkcs12 String fileKey = "michael.p12" ; // et ici sa "passPhrase" String fileKeyPassword = "fossouo" ; try { // Creation d'un KeyStore KeyStore ks = KeyStore.getInstance("pkcs12"); // Chargement du certificat p12 dans el magasin ks.load(new FileInputStream(fileKey), fileKeyPassword.toCharArray()); String alias = (String)ks.aliases().nextElement(); // Recupération de la clef privée PrivateKey key = (PrivateKey)ks.getKey(alias, fileKeyPassword.toCharArray()); // et de la chaine de certificats Certificate[] chain = ks.getCertificateChain(alias); // Lecture du document source PdfReader pdfReader = new PdfReader((new File(fname)).getAbsolutePath()); File outputFile = new File(fnameS); // Creation du tampon de signature PdfStamper pdfStamper; pdfStamper = PdfStamper.createSignature(pdfReader, null, '\0', outputFile); PdfSignatureAppearance sap = pdfStamper.getSignatureAppearance(); sap.setCrypto(key, chain, null, PdfSignatureAppearance.SELF_SIGNED); sap.setReason("Test SignPDF berthou.mc"); sap.setLocation(""); // Position du tampon sur la page (ici en bas a gauche page 1) sap.setVisibleSignature(new Rectangle(10, 10, 50, 30), 1, "sign_rbl"); pdfStamper.setFormFlattening(true); pdfStamper.close(); return true; } catch (Exception key) { throw new Exception(key); } } }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question