Spire.PDF for Android via Java 10.8.7 现已正式发布。 该版本支持使用 SHA-256、SHA-512 等算法的证书进行签名,并支持在转换(PDF 转 Word、OFD 转 PDF 等)时通过进度回调获取转换进度。 此外,还调整了 OfdConverter 的命名空间。详情如下。
新功能:
- 支持使用 SHA-256/SHA-512 等算法的证书进行签名。
- 支持在转换(PDF 转 Word、OFD 转 PDF 等)时通过进度回调获取转换进度。
PdfDocument doc = new PdfDocument();
// 从磁盘加载文件
doc.loadFromFile(inputFile);
// 加载用于签名的 X509 证书
PdfPKCS7Formatter formatter = new PdfPKCS7Formatter(new PdfCertificate(inputFile_pfx, "e-iceblue"), false);
// 使用已加载的文档和证书创建 PdfOrdinarySignatureMaker 实例
PdfOrdinarySignatureMaker signatureMaker = new PdfOrdinarySignatureMaker(doc, formatter);
// 创建 PdfCustomSignatureAppearance 实例,作为签名外观
IPdfSignatureAppearance signatureAppearance = new PdfCustomSignatureAppearance();
// 使用指定的名称和自定义外观进行签名
signatureMaker.makeSignature("Signature", signatureAppearance);
for (HashAlgorithmType hashAlg : HashAlgorithmType.values()) {
if ("SM3".equalsIgnoreCase(hashAlg.name()))
{
continue;
}
// 设置当前哈希算法
formatter.getProperties().setHashAlgorithm(hashAlg);
String filePath = outputFile + "AddImageSignature_" + hashAlg.name() + ".pdf";
doc.saveToFile(filePath, FileFormat.PDF);
}
doc.close();
}
public static class PdfCustomSignatureAppearance implements IPdfSignatureAppearance {
public void generate(PdfCanvas pdfCanvas) {
int fontSize = 10;
PdfTrueTypeFont font = new PdfTrueTypeFont("Arial", 0,10, true);
float lineHeight = fontSize;
pdfCanvas.drawString("AAAAAAAAAAA", font, PdfBrushes.getRed(), 0, 0);
pdfCanvas.drawImage(PdfImage.fromFile(ExStoragePath + "data/E-logo.png"), 20, 0);
}
}
// 保存 PDF 文档时注册进度通知器
PdfDocument pdf = new PdfDocument();
pdf.loadFromFile(inputFile);
pdf.registerProgressNotifier(new CustomProgressNotifier(outputFile_T));
pdf.saveToFile(outputFile, FileFormat.XPS);
pdf.dispose();
// 将 PDF 转换为 Word 时注册进度通知器
PdfToWordConverter converter = new PdfToWordConverter(inputFile);
converter.registerProgressNotifier(new CustomProgressNotifier(outputFile_T));
converter.saveToDocx(outputFile);
// 将 OFD 转换为 PDF 时注册进度通知器
OfdConverter ofdConverter = new OfdConverter(inputFile);
ofdConverter.registerProgressNotifier(new CustomProgressNotifier(outputFile_T));
ofdConverter.toPdf(outputFile);
// 自定义进度通知器,以百分比形式接收转换进度
public class CustomProgressNotifier implements IProgressNotifier {
private String outputFile;
private StringBuilder str = new StringBuilder();
public CustomProgressNotifier(String outputFile) {
this.outputFile = outputFile;
}
@Override
public void notify(float progress) {
str.append("Progress: ").append(progress).append("%\n");
try {
Files.writeString(Paths.get(outputFile), str.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
调整:
- 将 OfdConverter 的命名空间从 com.spire.pdf.conversion 调整为 com.spire.additions.Ofd。
获取 Spire.PDF for Android via Java 10.8.7 请点击:
https://www.e-iceblue.cn/Downloads/pdf-for-android-via-java.html







