Как добавить штрих‑код в 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‑приложения. Большинство современных систем справляются с этим без проблем, но проверьте следующее:
- Проверьте версию JDK — выполните
java -version; нужна Java 8 или новее. - Инструмент сборки — Maven или Gradle (мы покажем обе конфигурации).
- 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);
}
}
}
Зачем это нужно: Когда в продакшне что‑то ломается (а это случается), детальные логи позволяют быстро определить причину без доступа к оригинальной среде.
Стратегия тестирования
Перед релизом проверьте следующие сценарии:
- Граничные случаи — пустые строки, максимальная длина текста, специальные символы
- Разные типы PDF — сканированные документы, текстовые PDF, зашифрованные PDF
- Одновременное использование — несколько потоков одновременно подписывают документы
- Восстановление после ошибок — что происходит при нехватке места на диске или блокировке файлов?
Пример автоматизированного теста:
@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» для очередей обработки.
Вопросы масштабирования
При обработке тысяч документов в день:
- Очереди — используйте RabbitMQ, Kafka или аналогичные системы для управления нагрузкой.
- Горизонтальное масштабирование — запустите несколько экземпляров сервиса подписи.
- Кеширование — кешируйте часто используемые конфигурации, чтобы снизить накладные расходы инициализации.
- Мониторинг — отслеживайте время обработки, частоту ошибок и использование ресурсов.
Пример масштабируемой архитектуры:
[Upload Service] → [Queue] → [Multiple Signing Workers] → [Storage]
Каждый рабочий процесс подписи работает независимо, позволяя масштабировать систему в зависимости от нагрузки.
Что дальше? Расширяем возможности подписи документов
Вы освоили подписи‑штрих‑коды — теперь можно идти дальше. Следующие шаги включают изучение более сложных типов подписей, интеграцию сервисов верификации и автоматизацию сквозных процессов, охватывающих разные форматы документов и бизнес‑системы.
Рассмотрите добавление QR‑кодов для мобильных данных, цифровых сертификатов для юридически значимых электронных подписей и изображений‑подписей для фирменного стиля. Комбинация этих методов с штрих‑кодами даёт многослойный подход к безопасности, удовлетворяющий как машинные, так и человеческие способы проверки.
Ресурсы
- Выпуски GroupDocs.Signature
- Документация GroupDocs.Signature Java
- Документация GroupDocs.Signature Java (дублирование для полноты)
- Полная API‑документация
- Подробная API‑документация (дублирование для полноты)
- Последние выпуски (дублирование для полноты)
- Купить лицензию GroupDocs
- Начать тестировать сейчас
- Запросить оценочную лицензию
- Форум поддержки GroupDocs
- Форум GroupDocs
Заключение
Теперь у вас есть всё необходимое для добавления подписи‑штрих‑кода в PDF на Java. Подведём ключевые выводы:
- Настройка — установите GroupDocs.Signature через Maven, Gradle или ручную загрузку.
- Реализация — инициализируйте
Signature, настройтеBarcodeOptions, задайте позицию и сохраните подписанный файл. - Выбор штрих‑кода — Code128 для алфавитно‑цифровых данных, Code39 для только цифр, QR для мобильных сценариев.
- Устранение проблем — решайте ошибки путей, размеры, ограничения памяти и кодирования.
- Готовность к продакшну — защищайте лицензии, проверяйте входные файлы, мониторьте память и ведите подробные логи.
Почему это важно: Подписи‑штрих‑коды превращают ручные процессы в автоматизированные, проверяемые системы. Будь то обработка счетов, управление контрактами или отслеживание цепочки поставок, такой подход масштабируется без проблем, сохраняя высокий уровень безопасности.
Следующие шаги
- Скачайте GroupDocs.Signature и настройте тестовый проект.
- Запустите примеры с вашими PDF.
- Поэкспериментируйте с разными типами штрих‑кодов, чтобы подобрать оптимальный для вашего процесса.
- Исследуйте продвинутые возможности: 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);