Как добавить штрих‑код в PDF Java - Полное руководство 2025 с GroupDocs.Signature

Введение

Когда‑нибудь вам нужно было автоматизировать подпись документов для сотен PDF, только чтобы понять, что ручные подписи просто не масштабируются? Вы не одиноки. Многие разработчики сталкиваются с задачей защиты документов программно, сохраняя возможность их проверки. Как добавить штрих‑код подписи решает эту проблему идеально: они машинно‑читаемы, обнаруживают попытки подделки и легко интегрируются в автоматизированные рабочие процессы. Независимо от того, создаёте ли вы систему выставления счетов, платформу управления контрактами или решение для отслеживания документов, добавление штрих‑кодов в PDF на Java даёт вам и безопасность, и автоматизацию.

В этом руководстве вы узнаете, как добавить подписи‑штрих‑коды в PDF‑документы с помощью GroupDocs.Signature для Java — надёжной библиотеки, которая берёт на себя всю тяжёлую работу. Мы охватим всё: от базовой настройки до готовых к продакшну лучших практик, включая устранение распространённых проблем, с которыми вы можете столкнуться.

Что вы освоите

  • Настройка GroupDocs.Signature в вашем Java‑проекте (Maven, Gradle или ручная загрузка)
  • Добавление подписи‑штрих‑кода в PDF всего несколькими строками кода
  • Выбор подходящего типа штрих‑кода для вашего сценария
  • Решение типовых проблем реализации
  • Оптимизация производительности при массовой обработке документов

Давайте пройдём процесс шаг за шагом, чтобы вы могли начать безопасно и эффективно подписывать PDF‑файлы.

Быстрые ответы

  • Какая библиотека добавляет штрих‑коды в PDF на Java? GroupDocs.Signature для Java.
  • Сколько строк кода требуется для базового штрих‑кода? Всего две строки после инициализации объекта Signature.
  • Какой тип штрих‑кода подходит для алфавитно‑цифровых данных? Code128 — самый универсальный.
  • Можно ли обработать более 100 PDF в пакете? Да — переиспользуйте экземпляры Signature и ставьте задачи в очередь.
  • Нужна ли платная лицензия для продакшна? Для продакшн‑использования требуется постоянная лицензия; доступна бесплатная пробная версия для оценки.

Как добавить штрих‑код в PDF на Java

Добавление штрих‑кода в PDF — это трёхшаговый процесс: инициализировать документ, настроить штрих‑код и сохранить подписанный файл. Загрузите ваш PDF с помощью new Signature("input.pdf"), задайте текст и тип штрих‑кода, укажите позицию на странице, затем вызовите sign(outputPath). Этот шаблон работает для любого формата штрих‑кода, поддерживаемого GroupDocs.Signature.

Предварительные требования

Прежде чем погрузиться в код, убедитесь, что у вас есть всё необходимое:

Что вам понадобится

Обязательные библиотеки и инструменты

  • GroupDocs.Signature для Java (версия 23.12 или новее) — поддерживает 50+ форматов ввода и вывода, включая PDF, DOCX, XLSX, PPTX, HTML и распространённые типы изображений.
  • JDK 8 или выше
  • IDE, например IntelliJ IDEA или Eclipse (подойдёт любой текстовый редактор)
  • Базовые знания Java (классы, методы и основы объектно‑ориентированного программирования)

Системные требования

  • Минимум 2 ГБ ОЗУ (рекомендовано 4 ГБ для больших PDF)
  • ~50 МБ дискового пространства для библиотеки и её транзитивных зависимостей

Требования к настройке окружения

Ваша среда разработки должна поддерживать Java‑приложения. Большинство современных систем справляются с этим без проблем, но проверьте следующее:

  1. Проверьте версию JDK — выполните java -version; нужна Java 8 или новее.
  2. Инструмент сборки — Maven или Gradle (мы покажем обе конфигурации).
  3. PDF‑образцы — подготовьте тестовый PDF для проверки примеров кода.

Всё готово? Отлично — приступаем к настройке библиотеки.

Как настроить GroupDocs.Signature для Java?

Настройка GroupDocs.Signature проста: добавьте библиотеку в систему сборки, получите лицензию и инициализируйте основной класс Signature. Процесс обычно занимает меньше минуты и позволяет сразу начинать подписывать PDF, независимо от того, используете ли вы Maven, Gradle или ручную загрузку JAR‑файла.

Загрузите библиотеку в проект одним из трёх способов ниже, после чего вы будете готовы к подписанию PDF.

GroupDocs.Signature можно добавить через Maven, Gradle или ручную загрузку JAR. Все три подхода подтягивают одинаковые ядра, так что выбирайте тот, который лучше вписывается в ваш CI/CD‑конвейер. Maven‑координаты библиотеки: com.groupdocs:groupdocs-signature:23.12. Использование Maven гарантирует автоматическое получение последнего совместимого патча.

Вариант 1: Конфигурация Maven

Если вы используете Maven, добавьте эту зависимость в файл pom.xml:

<dependency>
    <groupId>com.groupdocs</groupId>
    <artifactId>groupdocs-signature</artifactId>
    <version>23.12</version>
</dependency>

Maven автоматически скачает библиотеку и её зависимости при сборке проекта. Это самый простой способ для большинства Java‑разработчиков.

Вариант 2: Настройка Gradle

Для пользователей Gradle добавьте эту строку в файл build.gradle:

implementation 'com.groupdocs:groupdocs-signature:23.12'

Gradle сам разрешит зависимости, что упрощает поддержание проекта в актуальном состоянии.

Вариант 3: Ручная загрузка

Хотите полный контроль? Скачайте JAR напрямую с GroupDocs.Signature releases и добавьте его в classpath проекта. Такой подход удобен в средах без доступа к интернету или при необходимости точного контроля версии.

Получение лицензии

GroupDocs.Signature предлагает гибкие варианты лицензирования:

  • Бесплатная пробная версия — идеально для тестирования функций и оценки библиотеки. Кредитная карта не требуется.
  • Временная лицензия — нужно больше времени? Закажите временную лицензию для полного доступа к функциям во время пробного периода.
  • Покупка — готовы к продакшну? Приобретите постоянную лицензию для неограниченного использования.

Pro Tip: Начните с бесплатной пробной версии, чтобы убедиться, что библиотека подходит под ваши задачи, прежде чем покупать.

Базовая инициализация (первые строки кода)

Класс Signature — ядро GroupDocs.Signature, представляющее документ для подписи. После установки пакета импортируйте пространство имён и создайте объект Signature, передав путь к файлу в конструктор.

Signature signature = new Signature("YOUR_DOCUMENT_DIRECTORY/sample.pdf");

Что происходит? Объект Signature загружает PDF в память и подготавливает его к любой операции подписи. Замените "YOUR_DOCUMENT_DIRECTORY/sample.pdf" реальным путём к вашему PDF; поддерживаются как абсолютные, так и относительные пути.

Пошагово: Добавление подписи‑штрих‑кода в ваш PDF

Теперь к главному — добавим подпись‑штрих‑код в PDF. Процесс удивительно прост, но понимание каждого шага поможет адаптировать его под ваши нужды.

Полный разбор реализации

Шаг 1: Инициализация объекта Signature

Сначала создайте экземпляр Signature, указывая PDF, который нужно подписать:

Signature signature = new Signature(filePath);

Почему это важно: Этот объект управляет состоянием документа и предоставляет доступ ко всем операциям подписи. По сути, это открытие PDF в режиме редактирования, готового к изменениям.

Шаг 2: Настройка параметров штрих‑кода

Далее задайте параметры подписи‑штрих‑кода. Здесь вы определяете, что будет содержать ваш штрих‑код и как он будет закодирован:

BarcodeSignOptions options = new BarcodeSignOptions("JohnSmith");
options.setEncodeType(BarcodeTypes.Code128);

Класс BarcodeOptions определяет визуальные и данные свойства подписи‑штрих‑кода, такие как текст, тип, размер и цвет.

Разберём подробнее

  • "JohnSmith" — текст, закодированный в штрих‑коде. Это может быть имя, идентификатор, код транзакции или любая строка, которую нужно вложить.
  • setEncodeType(BarcodeTypes.Code128) задаёт формат штрих‑кода. Code128 универсален — поддерживает буквы, цифры и специальные символы, что делает его идеальным для большинства бизнес‑приложений.

Пример из реального мира: При подписании счетов вы можете использовать "INV-" + invoiceNumber, чтобы создать уникальный сканируемый идентификатор для каждого документа.

Шаг 3: Позиционирование штрих‑кода

Определите, где штрих‑код будет размещён в PDF:

options.setLeft(100); // X-coordinate (pixels from left edge)
options.setTop(100);  // Y-coordinate (pixels from top edge)

Понимание позиционирования

  • Координаты считаются от верхнего‑левого угла страницы (0,0).
  • setLeft(100) смещает штрих‑код на 100 пикселей вправо.
  • setTop(100) смещает его на 100 пикселей вниз.

Pro tip: Для профессиональных документов размещайте штрих‑коды в фиксированных местах — нижний‑правый угол или шапка работают хорошо. Это упрощает сканирование и не мешает основному содержимому.

Шаг 4: Подписание документа

Наконец, примените подпись и сохраните результат:

signature.sign(outputFilePath, options);

Что происходит за кулисами: GroupDocs.Signature встраивает штрих‑код в ваш PDF как векторную графику, обеспечивая идеальное масштабирование при любом уровне зума. Исходный документ остаётся нетронутым — создаётся новая подписанная версия.

Важно: outputFilePath должен отличаться от входного файла. Перезапись исходного PDF во время его открытия может вызвать ошибки.

Полный рабочий пример

Вот всё вместе в одном чистом методе:

public void signPdfWithBarcode(String inputPath, String outputPath) {
    // Initialize signature object
    Signature signature = new Signature(inputPath);
    
    // Configure barcode options
    BarcodeSignOptions options = new BarcodeSignOptions("JohnSmith");
    options.setEncodeType(BarcodeTypes.Code128);
    options.setLeft(100);
    options.setTop(100);
    
    // Sign and save
    signature.sign(outputPath, options);
}

Вы можете вызывать этот метод каждый раз, когда нужно подписать PDF — просто, переиспользуемо и готово к продакшну.

Выбор правильного типа штрих‑кода для ваших нужд

Не все штрих‑коды одинаковы. GroupDocs.Signature поддерживает несколько форматов, и выбор зависит от того, что вы кодируете и какие сканеры используют.

Расшифровка популярных типов штрих‑кодов

Code128 (пример выше)

  • Лучше всего для: алфавитно‑цифровых данных, общих бизнес‑задач
  • Вместимость: до 128 символов
  • Почему использовать: большинство сканеров поддерживают его; подходит для сложных данных, таких как коды продуктов или идентификаторы
  • Когда избегать: если нужны только цифры, проще использовать Code39

Code39

  • Лучше всего для: только цифры, простые системы отслеживания
  • Вместимость: меньше, чем у Code128
  • Почему использовать: проще реализовать, если кодируются лишь цифры
  • Когда избегать: если нужны буквы или специальные символы

QR Code (альтернатива)

  • Лучше всего для: больших объёмов данных, URL‑кодов, мобильного сканирования
  • Вместимость: до 3 KB данных
  • Почему использовать: смартфоны сканируют без специального оборудования
  • Когда избегать: если требуется совместимость с традиционными сканерами штрих‑кодов

Как переключать типы штрих‑кодов

Хотите использовать Code39? Достаточно изменить одну строку:

options.setEncodeType(BarcodeTypes.Code39);

Остальной код остаётся без изменений. Такая гибкость позволяет экспериментировать и находить оптимальный вариант для вашего оборудования и требований к данным.

Руководство по выбору

  • Нужно кодировать имена или смешанные данные? → Code128
  • Только цифры? → Code39
  • Требуется сканирование смартфоном? → Рассмотрите QR‑коды (GroupDocs тоже поддерживает)
  • Работа с международными стандартами? → Проверьте, какой формат используют в вашей отрасли

Реальные сценарии: Когда добавлять штрих‑коды в PDF

Понимание когда использовать подписи‑штрих‑коды помогает эффективно применять эту технологию. Ниже перечислены типичные случаи, где разработчики внедряют данное решение:

1. Автоматизированные рабочие процессы подписания контрактов

Проблема: Юридические отделы обрабатывают сотни контрактов в месяц. Ручные подписи создают узкие места.
Решение: Добавьте подписи‑штрих‑коды, кодирующие идентификаторы контрактов, даты и информацию о подписантах. Система управления документами может проверять контракты, сканируя штрих‑код — без участия человека.
Почему работает: Штрих‑коды обнаруживают попытки подделки; изменение PDF нарушает связь штрих‑кода, делая подделку очевидной.

2. Отслеживание и проверка счетов

Проблема: Бухгалтерия должна быстро сопоставлять бумажные счета с цифровыми записями.
Решение: Внедрите номера счетов и идентификаторы поставщиков в штрих‑коды. При получении счета сканируйте штрих‑код, чтобы мгновенно открыть соответствующую запись в базе.
Бонус: Сокращает ошибки ручного ввода, характерные для обработки счетов.

3. Сертификат подлинности документов

Проблема: Учреждения образования, государственные органы и сертификационные органы нуждаются в проверяемом доказательстве подлинности документов.
Решение: Генерируйте уникальные штрих‑коды, связывающие документ с базой проверки. Любой может отсканировать штрих‑код и подтвердить легитимность документа.
Реальный пример: Многие университеты используют такой подход для цифровых дипломов, позволяя работодателям мгновенно проверять квалификацию.

4. Документация в производстве и цепочке поставок

Проблема: Необходимо отслеживать сертификаты происхождения, отчёты о качестве и транспортные документы по всей цепочке поставок.
Решение: PDF‑документы с подписью‑штрих‑кодом, кодирующие номера партий, метки времени и контрольные точки качества. Сканеры на каждом этапе автоматически проверяют подлинность документа.

Возможные интеграции

Эти PDF‑файлы с штрих‑кодами без проблем работают с:

  • Системами управления документами (SharePoint, Alfresco)
  • ERP‑платформами
  • CRM‑инструментами
  • Автоматизированными движками рабочих процессов

Главное преимущество? Штрих‑коды соединяют цифровые системы и физическую работу с документами, делая автоматизацию надёжнее.

Распространённые проблемы и их решения

Даже простые реализации могут столкнуться с трудностями. Ниже перечислены типичные проблемы и проверенные способы их устранения.

Проблема 1: «File Not Found» или ошибки пути

Симптомы: Код бросает FileNotFoundException или аналогичные ошибки.

Типичные причины

  • Относительные пути ломаются при запуске из разных каталогов
  • Опечатки в пути к файлу
  • Недостаточные права доступа к файлу

Решение

// Use absolute paths for reliability
String absolutePath = new File("sample.pdf").getAbsolutePath();

// Or verify the file exists before processing
File pdfFile = new File(filePath);
if (!pdfFile.exists()) {
    throw new IllegalArgumentException("PDF not found at: " + filePath);
}

Pro tip: Во время разработки выводите пути в консоль, чтобы убедиться, что они корректны: System.out.println("Processing: " + absolutePath);

Проблема 2: Штрих‑код слишком маленький или обрезается

Симптомы: Штрих‑код отображается, но нечитаем или частично виден.

Что происходит: Стандартные размеры не учитывают разные размеры страниц PDF или DPI.

Решение

// Adjust barcode dimensions
options.setWidth(200);  // Width in pixels
options.setHeight(50);  // Height in pixels

// Ensure positioning keeps it on the page
options.setLeft(50);    // Leave margin from edges
options.setTop(50);

Совет по тестированию: Сгенерируйте тестовый PDF и попробуйте отсканировать штрих‑код реальным сканером. Если сканирование ненадёжно, увеличьте размер.

Проблема 3: Проблемы с памятью при больших PDF

Симптомы: OutOfMemoryError или замедление при обработке крупных документов.

Почему так: Библиотека загружает PDF в память. Файлы более 50 МБ могут превышать стандартные настройки JVM.

Решение

// Increase JVM heap size when running your application
// Add to your JVM arguments: -Xmx2G

// In code, dispose of objects when done
try (Signature signature = new Signature(filePath)) {
    signature.sign(outputPath, options);
} // Auto-closes and releases memory

Альтернатива: Обрабатывайте документы пакетами, а не загружайте их все сразу.

Проблема 4: Ошибки кодирования при специальных символах

Симптомы: Исключение при кодировании текста со специальными символами или эмодзи.

Корень проблемы: Выбранный тип штрих‑кода (например, Code128) не поддерживает все Unicode‑символы.

Решение

// Sanitize input before encoding
String safeText = input.replaceAll("[^A-Za-z0-9]", "");
options.setText(safeText);

// Or switch to a format that supports more characters
// (though this may reduce scanner compatibility)

Best practice: Для максимальной совместимости используйте только алфавитно‑цифровые символы.

Проблема 5: Подписанный PDF не открывается или сообщает о повреждении

Симптомы: Выходной PDF выглядит повреждённым или не открывается в просмотрщиках.

Вероятные причины

  • Запись в тот же файл, из которого читается
  • Недостаток места на диске
  • Прерывание записи (программа завершилась преждевременно)

Решение

// Always write to a different file
String outputPath = inputPath.replace(".pdf", "_signed.pdf");

// Verify the write completed successfully
File output = new File(outputPath);
if (output.length() == 0) {
    throw new IOException("Output PDF is empty - signing failed");
}

Подход к отладке: Сначала проверьте, открывается ли исходный PDF без подписи. Если он уже повреждён, подпись его не исправит.

Лучшие практики для продакшн‑окружения

Переход от разработки к продакшну требует внимания к деталям, которые могут показаться незначительными, но предотвращают серьёзные проблемы в дальнейшем.

Соображения по безопасности

1. Защита файлов лицензий
Не храните ключи лицензий в исходном коде. Используйте переменные окружения или безопасные системы конфигурации:

// Good: Load from environment
String licenseKey = System.getenv("GROUPDOCS_LICENSE");

// Bad: Hardcoded (never do this)
// String licenseKey = "ABC123...";

2. Проверка входных файлов
Никогда не доверяйте PDF, загруженным пользователями, без проверки:

public boolean isValidPdf(String filePath) {
    try {
        // Attempt to open the file
        Signature signature = new Signature(filePath);
        signature.dispose();
        return true;
    } catch (Exception e) {
        // File is corrupted or not a valid PDF
        return false;
    }
}

3. Санитизация данных штрих‑кода
Если пользовательский ввод попадает в штрих‑код, обязательно санитизируйте его, чтобы избежать атак внедрения или проблем с кодированием:

String sanitizedText = userInput
    .replaceAll("[^A-Za-z0-9\\s-]", "")  // Allow only safe characters
    .trim()
    .substring(0, Math.min(50, userInput.length()));  // Limit length

Советы по оптимизации производительности

1. Переиспользуйте объекты Signature, когда это возможно
Создание новых экземпляров Signature дорого стоит. В сценариях пакетной обработки:

// Good for batch processing
try (Signature signature = new Signature(templatePath)) {
    for (String dataItem : dataList) {
        BarcodeSignOptions options = new BarcodeSignOptions(dataItem);
        signature.sign(getOutputPath(dataItem), options);
    }
}

2. Мониторинг использования памяти
Для приложений с высоким объёмом запросов внедрите мониторинг памяти:

Runtime runtime = Runtime.getRuntime();
long usedMemory = runtime.totalMemory() - runtime.freeMemory();
System.out.println("Memory used: " + (usedMemory / 1024 / 1024) + " MB");

Если потребление памяти постоянно растёт, вероятно, есть утечка (объекты не освобождаются).

3. Оптимизация ввода‑вывода файлов
При обработке множества документов группируйте операции ввода‑вывода:

// Process files in chunks of 100 to avoid overwhelming the system
List<String> files = getAllPdfFiles();
int batchSize = 100;

for (int i = 0; i < files.size(); i += batchSize) {
    List<String> batch = files.subList(i, Math.min(i + batchSize, files.size()));
    processBatch(batch);
    System.gc(); // Suggest garbage collection between batches
}

Логирование и обработка ошибок

Внедрите подробное логирование для отладки в продакшне:

import java.util.logging.*;

public class PdfSigner {
    private static final Logger logger = Logger.getLogger(PdfSigner.class.getName());
    
    public void signDocument(String input, String output) {
        try {
            logger.info("Starting signature process for: " + input);
            Signature signature = new Signature(input);
            
            // Your signing logic here
            
            logger.info("Successfully signed: " + output);
        } catch (Exception e) {
            logger.severe("Failed to sign document: " + e.getMessage());
            throw new RuntimeException("Signing failed", e);
        }
    }
}

Зачем это нужно: Когда в продакшне что‑то ломается (а это случается), детальные логи позволяют быстро определить причину без доступа к оригинальной среде.

Стратегия тестирования

Перед релизом проверьте следующие сценарии:

  1. Граничные случаи — пустые строки, максимальная длина текста, специальные символы
  2. Разные типы PDF — сканированные документы, текстовые PDF, зашифрованные PDF
  3. Одновременное использование — несколько потоков одновременно подписывают документы
  4. Восстановление после ошибок — что происходит при нехватке места на диске или блокировке файлов?

Пример автоматизированного теста:

@Test
public void testBarcodeSigningWithEmptyText() {
    assertThrows(IllegalArgumentException.class, () -> {
        BarcodeSignOptions options = new BarcodeSignOptions("");
        // Should fail gracefully, not crash
    });
}

Производительность: чего ожидать в реальном использовании

Понимание характеристик производительности помогает ставить реалистичные цели и планировать ёмкость системы.

Типичные времена обработки

На основе тестов GroupDocs.Signature на стандартном оборудовании (Intel i5, 8 GB RAM):

  • Один PDF (<5 MB): 500‑800 мс на одну подпись
  • Большой PDF (20‑50 MB): 2‑4 секунды на одну подпись
  • Пакетная обработка (100 документов): ~60‑90 секунд в сумме

Факторы, влияющие на скорость

  • Сложность PDF (больше изображений/шрифтов — медленнее)
  • Размер и сложность штрих‑кода
  • Скорость диска (SSD заметно быстрее)
  • Доступный объём ОЗУ (больше памяти — меньше подкачки)

Советы по управлению памятью

Сборщик мусора Java обычно справляется сам, но вы можете помочь ему:

// Use try-with-resources for automatic cleanup
try (Signature signature = new Signature(filePath)) {
    signature.sign(outputPath, options);
} // Automatically disposes resources

Для длительно работающих приложений следите за тенденциями использования кучи:

  • Если потребление постоянно растёт, вероятно, объекты не освобождаются.
  • Профилируйте приложение с помощью VisualVM, чтобы найти утечки.
  • Рассмотрите паттерн «circuit‑breaker» для очередей обработки.

Вопросы масштабирования

При обработке тысяч документов в день:

  1. Очереди — используйте RabbitMQ, Kafka или аналогичные системы для управления нагрузкой.
  2. Горизонтальное масштабирование — запустите несколько экземпляров сервиса подписи.
  3. Кеширование — кешируйте часто используемые конфигурации, чтобы снизить накладные расходы инициализации.
  4. Мониторинг — отслеживайте время обработки, частоту ошибок и использование ресурсов.

Пример масштабируемой архитектуры:

[Upload Service] → [Queue] → [Multiple Signing Workers] → [Storage]

Каждый рабочий процесс подписи работает независимо, позволяя масштабировать систему в зависимости от нагрузки.

Что дальше? Расширяем возможности подписи документов

Вы освоили подписи‑штрих‑коды — теперь можно идти дальше. Следующие шаги включают изучение более сложных типов подписей, интеграцию сервисов верификации и автоматизацию сквозных процессов, охватывающих разные форматы документов и бизнес‑системы.

Рассмотрите добавление QR‑кодов для мобильных данных, цифровых сертификатов для юридически значимых электронных подписей и изображений‑подписей для фирменного стиля. Комбинация этих методов с штрих‑кодами даёт многослойный подход к безопасности, удовлетворяющий как машинные, так и человеческие способы проверки.

Ресурсы

Заключение

Теперь у вас есть всё необходимое для добавления подписи‑штрих‑кода в PDF на Java. Подведём ключевые выводы:

  • Настройка — установите GroupDocs.Signature через Maven, Gradle или ручную загрузку.
  • Реализация — инициализируйте Signature, настройте BarcodeOptions, задайте позицию и сохраните подписанный файл.
  • Выбор штрих‑кода — Code128 для алфавитно‑цифровых данных, Code39 для только цифр, QR для мобильных сценариев.
  • Устранение проблем — решайте ошибки путей, размеры, ограничения памяти и кодирования.
  • Готовность к продакшну — защищайте лицензии, проверяйте входные файлы, мониторьте память и ведите подробные логи.

Почему это важно: Подписи‑штрих‑коды превращают ручные процессы в автоматизированные, проверяемые системы. Будь то обработка счетов, управление контрактами или отслеживание цепочки поставок, такой подход масштабируется без проблем, сохраняя высокий уровень безопасности.

Следующие шаги

  1. Скачайте GroupDocs.Signature и настройте тестовый проект.
  2. Запустите примеры с вашими PDF.
  3. Поэкспериментируйте с разными типами штрих‑кодов, чтобы подобрать оптимальный для вашего процесса.
  4. Исследуйте продвинутые возможности: QR‑коды, цифровые подписи, API‑верификации.

Готовы внедрять в проект? Начните с бесплатной пробной версии, убедитесь в пригодности решения, а затем масштабируйте с постоянной лицензией. Большинство команд видят измеримый ROI уже через несколько недель автоматизации.


Последнее обновление: 2026-06-06
Тестировано с: GroupDocs.Signature 23.12 для Java
Автор: GroupDocs

QrCodeSignOptions qrOptions = new QrCodeSignOptions("https://yourcompany.com/verify/doc123");
qrOptions.setEncodeType(QRCodeTypes.QR);
// Uses PKI certificates for cryptographic verification
DigitalSignOptions digitalOptions = new DigitalSignOptions("certificate.pfx");
ImageSignOptions imageOptions = new ImageSignOptions("signature.png");
VerificationResult result = signature.verify(verifyOptions);
if (result.isValid()) {
    System.out.println("Signature verified successfully");
}
// Sign with both barcode and image
signature.sign(outputPath, barcodeOptions, imageOptions);

Связанные руководства