Извлечение информации об изображении и подписи

Извлечение изображения из поля подписи

Aspose.PDF for Java поддерживает возможность цифровой подписи PDF-файлов с использованием класса SignatureField, и при подписании документа вы также можете установить изображение для SignatureAppearance. Теперь этот API также предоставляет возможность извлечения информации о подписи, а также изображения, связанного с полем подписи.

Для того чтобы извлечь информацию о подписи, мы добавили метод ExtractImage в класс SignatureField. Пожалуйста, посмотрите на следующий фрагмент кода, который демонстрирует шаги извлечения изображения из объекта SignatureField:

public class ExampleExtractImageAndSignature {

    private static String _dataDir = "/home/aspose/pdf-examples/Samples/Secure-Sign/";

    public static void ExtractingImageFromSignatureField() {
        Document pdfDocument = new Document(_dataDir + "ExtractingImage.pdf");

        int i = 0;
        try {
            for (WidgetAnnotation field : pdfDocument.getForm()) {
                SignatureField sf = (SignatureField) field;
                if (sf != null) {
                    FileOutputStream output = new FileOutputStream(_dataDir + "im" + i + ".jpeg");
                    InputStream tempStream = sf.extractImage();
                    byte[] b = new byte[tempStream.available()];
                    tempStream.read(b);
                    output.write(b);
                    output.close();
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (pdfDocument != null)
                pdfDocument.dispose();
        }

    }

Заменить изображение подписи

Иногда может возникнуть необходимость заменить только изображение уже существующего поля подписи в PDF-файле. Чтобы выполнить это требование, сначала нам нужно найти поля формы внутри PDF-файла, определить поля подписи, получить размеры (прямоугольные размеры) поля подписи и затем наложить изображение с теми же размерами.

Извлечение информации о подписи

Aspose.PDF для Java поддерживает функцию цифровой подписи PDF-файлов с использованием класса SignatureField. В настоящее время мы также можем определить действительность сертификата, но не можем извлечь весь сертификат. Информация, которую можно извлечь, включает открытый ключ, отпечаток, издателя и т.д.

Для извлечения информации о подписи мы ввели метод ExtractCertificate в класс SignatureField. Пожалуйста, ознакомьтесь со следующим фрагментом кода, который демонстрирует шаги по извлечению сертификата из объекта SignatureField:

    public static void ExtractSignatureInformation() throws IOException {
        String input = _dataDir + "ExtractSignatureInfo.pdf";
        Document pdfDocument = new Document(input);

        for (WidgetAnnotation field : pdfDocument.getForm()) {
            SignatureField sf = (SignatureField) field;
            if (sf != null) {
                InputStream cerStream = sf.extractCertificate();
                if (cerStream != null) {

                    byte[] buffer = new byte[cerStream.available()];
                    cerStream.read(buffer);

                    File targetFile = new File(_dataDir+"targetFile.cer");
                    OutputStream outStream = new FileOutputStream(targetFile);
                    outStream.write(buffer);
                    outStream.close();
                }
            }
        }
    }
}