Den*_*sMP 5 java digital-signature pdfbox
我正在使用pdfbox示例签名CreateVisableSignature,我希望代码将签名的图像写入第三页上名为"ApplicantSignature"的签名字段.
有人可以提供一个线索,说明为什么它会在第一页的左上角写下签名吗?
这是代码:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
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();
Run Code Online (Sandbox Code Playgroud)
我试过了:
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();
Run Code Online (Sandbox Code Playgroud)
请参阅 SignPDF() 中的 CreateVisibleSignature.java 中的这一行(不包含在您的问题中,但属于您提到的 PDFBox 中的示例代码的一部分):
// options.setPage(signatureProperties.getPage());
Run Code Online (Sandbox Code Playgroud)
删除“//”,签名将出现在第 3 页上。
重新定位,更改这部分代码
xAxis(0).yAxis(0)
Run Code Online (Sandbox Code Playgroud)
到其他坐标,例如:
xAxis(100).yAxis(715)
Run Code Online (Sandbox Code Playgroud)
现在关于问题中的哪个代码是正确的问题 - 最后一个是:
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();
Run Code Online (Sandbox Code Playgroud)
PDVisibleSignDesigner中的3是选择页面的大小。第二个3是存储页码以供稍后使用。这里的页码是从 1 开始的。
| 归档时间: |
|
| 查看次数: |
1279 次 |
| 最近记录: |