Mit iText ein PDF signieren -> gruselig

Sixty

Mitglied
Hallo,

ich signiere mit iText ein PDF. Manchmal funktioniert es und manchmal kommt eine Fehlermeldung:

Code:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException
	at java.lang.System.arraycopy(Native Method)
	at com.itextpdf.text.pdf.PdfStamper.close(PdfStamper.java:209)
	at Pdf_Sign.sign_pdf(Pdf_Sign.java:77)
	at Pdf_Sign.main(Pdf_Sign.java:252)

Kann mir da wer weiterhelfen :confused:

Gruß
 
Moin,

Hallo,
ich signiere mit iText ein PDF. Manchmal funktioniert es und manchmal kommt eine Fehlermeldung:
Code:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException
    at java.lang.System.arraycopy(Native Method)
    at com.itextpdf.text.pdf.PdfStamper.close(PdfStamper.java:209)
    at Pdf_Sign.sign_pdf(Pdf_Sign.java:77)
    at Pdf_Sign.main(Pdf_Sign.java:252)
Kann mir da wer weiterhelfen :confused:
Gruß

für alle, die nicht so gerne googeln :
http://www.dpunkt.de/java/Referenz/Das_Paket_java.lang/4.html :p

Sagt eigentlich alles ... aber wie pizza schon schrieb:
ohne die entsprechende Codestelle kann Dir keiner helfen ... ;-]

Gruß
Klaus
 
Hier das "try-catch" wo er meckert.

Code:
try {
			reader = new PdfReader("/Users/anton/fop/work/ResultXML2PDF.pdf");  // Pfad Mac
			KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
			ks.load(new FileInputStream("/Users/anton/fop/work/anton.jks"), "blub"
					.toCharArray());
			PrivateKey key = (PrivateKey) ks.getKey("anton", "blub"
					.toCharArray());
			Certificate[] chain = ks.getCertificateChain("anton");
			FileOutputStream os = new FileOutputStream(
					"/Users/anton/fop/work/Signed_PDF.pdf");												
			PdfStamper stamper = PdfStamper.createSignature(reader, os, '\0');

			PdfSignatureAppearance appearance = stamper
					.getSignatureAppearance();
			appearance.setCrypto(key, chain, null,
					PdfSignatureAppearance.SELF_SIGNED);
			appearance.setReason("Double signed.");
			appearance.setLocation("anton");									
			int anzahl_seiten = reader.getNumberOfPages(); 
			
			
			// Signatur setzen
			appearance.setVisibleSignature(new Rectangle(450f, 60f, 650f, 80f),
					anzahl_seiten, "secondsig");                                                 
			stamper.close();
		} catch (Exception e) {
			e.printStackTrace();
		}

Ich meine es liegt am stamper.
(!) Google hat mir nicht geholfen.

Danke
 
Mhm,
ich kann auf den ersten Blick in deinen Codezeilen keinen Fehler entdecken. Ich nehme mal an, das Pdf_Sign deine Klasse ist, vielleicht kannst du mal zeigen, was in Zeile 77 genau steht.

Grüße
Peter
 
Moin Peter,

in Zeile 77 steht:

Code:
stamper.close();

Entweder es klappt ohne Exception,
es klappt auch wenn er eine Exception wirft und
manchmal klappt es nicht.

Gruß
 
Hi,
welche Adobeversion und welche IText-Version benutzt du denn?

Hier ist ein ähnliches Problem beschrieben, scheint da ein IText-Bug zu sein.

Grüße
Peter
 
Danke für die Antworten!

ich benutze iText-5.0.1 (aktuellste Version) und Adobe Reader 9.

Die Signatur ist intern im PDF.
 
Ok habs,


statt:
Code:
appearance.setCrypto(key, chain, null, PdfSignatureAppearance.SELF_SIGNED);

->>

Code:
appearance.setCrypto(key, chain, null, PdfSignatureAppearance.WINCER_SIGNED);



aber danke für die Hilfe :p
 
Zurück