gpt4 book ai didi

java - 如何让 PDVisibleSigProperties 将第 3 页上的签名写入签名框

转载 作者:搜寻专家 更新时间:2023-10-31 20:33:29 32 4
gpt4 key购买 nike

我正在使用 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);
}
}

我也试过:

    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();

我试过:

    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();

这是我希望签名在第三页上的位置。 This is where I want the signature to go on the third page.

这是它在第一页上的位置。 This is where it is going on the first page.

这些是表单中的字段名称。 This shows the field names.

最佳答案

请参阅 CreateVisibleSignature.java 中的这一行,在 signPDF() 中(未包含在您的问题中,但您提到的 PDFBox 中的示例代码的一部分):

// options.setPage(signatureProperties.getPage());

删除“//”,签名出现在第 3 页。

重新定位,更改这部分代码

xAxis(0).yAxis(0)

到其他坐标,例如这些:

xAxis(100).yAxis(715)

现在关于问题中哪个代码是正确的 - 最后一个是:

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();

PDVisibleSignDesigner中的3是选择页面的大小。第二个 3 用于存储页码以备后用。此处页码从 1 开始。

关于java - 如何让 PDVisibleSigProperties 将第 3 页上的签名写入签名框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31571055/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com