Sto lavorando con la firma di esempio pdfbox CreateVisableSignature e vorrei che il codice scrivesse l'immagine della firma in un campo firma chiamato "ApplicantSignature" sulla terza pagina.Come posso ottenere PDVisibleSigProperties per scrivere la firma sulla pagina 3 nella casella della firma
Qualcuno può dare un indizio sul motivo per cui scrive la firma nell'angolo in alto a sinistra della prima pagina?
Ecco il codice:
public static void main(String[] args) throws KeyStoreException,
NoSuchAlgorithmException, CertificateException,
FileNotFoundException, IOException, COSVisitorException,
SignatureException {
if (args.length != 4) {
usage();
System.exit(1);
} else {
File ksFile = new File(args[0]);
KeyStore keystore = KeyStore.getInstance("PKCS12", provider);
char[] pin = args[1].toCharArray();
keystore.load(new FileInputStream(ksFile), pin);
File document = new File(args[2]);
CreateVisibleSignature signing = new CreateVisibleSignature(
keystore, pin.clone());
String jpgFile = CreateVisibleSignature.convertPngToJpeg(args[3]);
FileInputStream image = new FileInputStream(jpgFile);
PDVisibleSignDesigner visibleSig = new PDVisibleSignDesigner(
args[2], image, 1);
visibleSig.xAxis(0).yAxis(0).zoom(-75)
.signatureFieldName("ApplicantSignature");
PDVisibleSigProperties signatureProperties = new PDVisibleSigProperties();
signatureProperties.signerName("name").signerLocation("location")
.signatureReason("Security").preferredSize(0).page(3)
.visualSignEnabled(true).setPdVisibleSignature(visibleSig)
.buildSignature();
signing.signPDF(document, signatureProperties);
}
}
Ho anche provato:
PDVisibleSignDesigner visibleSig = new PDVisibleSignDesigner(
args[2], image, 3);
visibleSig.xAxis(0).yAxis(0).zoom(-75)
.signatureFieldName("ApplicantSignature");
PDVisibleSigProperties signatureProperties = new PDVisibleSigProperties();
signatureProperties.signerName("name").signerLocation("location")
.signatureReason("Security").preferredSize(0).page(1)
.visualSignEnabled(true).setPdVisibleSignature(visibleSig)
.buildSignature();
e ho provato:
PDVisibleSignDesigner visibleSig = new PDVisibleSignDesigner(
args[2], image, 3);
visibleSig.xAxis(0).yAxis(0).zoom(-75)
.signatureFieldName("ApplicantSignature");
PDVisibleSigProperties signatureProperties = new PDVisibleSigProperties();
signatureProperties.signerName("name").signerLocation("location")
.signatureReason("Security").preferredSize(0).page(3)
.visualSignEnabled(true).setPdVisibleSignature(visibleSig)
.buildSignature();
Questo è dove voglio la firma per andare avanti la terza pagina.
Questo è dove sta andando sulla prima pagina.
Questi sono i nomi dei campi nel modulo.
È [questo (http://www.ors.od.nih.gov/ser/dpsac/bgchecks/Documents/hhs-745.pdf)](http://www.ors.od.nih.gov /ser/dpsac/bgchecks/Documents/hhs-745.pdf) il tuo modulo? Se lo è, allora ** A ** il campo firma per la firma del richiedente ha il nome 'topmostSubform [0] .Page3 [0] .SignatureField1 [0]', non 'ApplicantSignature', e ** B ** il modulo è un modulo ibrido di AcroForm/XFA che può complicare un po 'le cose. In caso contrario, fornire la versione del modulo per l'analisi e la riproduzione del problema. – mkl
@mkl se vuole davvero firmare quel documento allora non funzionerà affatto con PDFBox. Quel documento ha permessi/UR3, che non supportiamo. Il documento viene firmato, ma viene visualizzato un messaggio di errore che le proprietà estese vengono perse. –
@TilmanHausherr Temo che ci sia più spazio nel codice che crea la firma visibile. L'OP in particolare usa 'signatureFieldName (" ApplicantSignature ")' sperando che questo imposti il nome (** T ** value) del campo del modulo di firma. Nel codice vedo solo che il valore è usato per impostare il nome (** Nome ** valore) in un dizionario delle firme. Inoltre non vedo alcun codice per l'utilizzo di un campo modulo firma vuota esistente; ma penso che sia esattamente ciò che l'OP vuole fare, firmare il campo firma vuoto che assume per avere il nome 'ApplicantSignature'. – mkl