Utwórz PDF Data Matrix z kodem kreskowym HIBC w Javie
Jeśli tworzysz oprogramowanie do logistyki farmaceutycznej lub opieki zdrowotnej, prawdopodobnie natknąłeś się na problemy związane z papierowym śledzeniem, utraconymi podpisami i koszmarami audytowymi. Tworzenie PDF Data Matrix, który zawiera kod kreskowy HIBC LIC, rozwiązuje te problemy, zapewniając niezmienny, maszynowo odczytywalny ślad, który przetrwa drukowanie, skanowanie i przegląd regulacyjny. W tym samouczku zobaczysz dokładnie, jak dodać obsługę PDF z kodem QR, a także formaty Aztec i Data Matrix, używając GroupDocs.Signature for Java.
Szybkie odpowiedzi
- Jaką bibliotekę obsługuje kody kreskowe HIBC w Javie? GroupDocs.Signature for Java.
- Jaki format kodu kreskowego jest najbardziej kompaktowy? Data Matrix – idealny dla małych etykiet.
- Czy mogę dodać zarówno QR, jak i Data Matrix do tego samego PDF? Tak, wystarczy utworzyć osobne
QrCodeSignOptions. - Czy potrzebuję połączenia internetowego w czasie działania? Nie, biblioteka działa w pełni offline po instalacji.
- Jaką wersję Javy zaleca się? Java 11+ dla wydajności klasy produkcyjnej.
Co to jest podpisywanie PDF kodem kreskowym HIBC?
Klasa Signature w GroupDocs.Signature for Java reprezentuje dokument PDF i udostępnia metody do osadzania kodów kreskowych HIBC jako podpisów cyfrowych. Podpisując PDF kodem kreskowym HIBC, tworzysz weryfikowalny, niezmienny zapis, który może być skanowany w dowolnym punkcie łańcucha dostaw.
Dlaczego używać razem Data Matrix i kodów QR?
GroupDocs.Signature obsługuje ponad 50 formatów wejściowych i wyjściowych i może przetwarzać wielostronicowe PDF‑y bez ładowania całego pliku do pamięci. Używanie Data Matrix dla gęstych, małych etykiet oraz QR dla większych dokumentów zapewnia najlepszy balans czytelności, pojemności danych (do 4 296 znaków dla QR) i efektywności wykorzystania przestrzeni druku.
Wymagania wstępne
- JDK 11 lub wyższy (Java 8 działa, ale Java 11+ jest zalecana dla optymalnej wydajności).
- IDE takie jak IntelliJ IDEA, Eclipse lub VS Code z rozszerzeniami Java.
- Maven lub Gradle do zarządzania zależnościami (przykłady poniżej).
- Przykładowy PDF (np.
sample.pdf) do przetestowania implementacji. - Ważna licencja GroupDocs.Signature (bezpłatna wersja próbna do rozwoju, płatna licencja do produkcji).
Konfiguracja GroupDocs.Signature dla Javy
Konfiguracja Maven
Add the dependency to your pom.xml:
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-signature</artifactId>
<version>23.12</version>
</dependency>
Konfiguracja Gradle
For Gradle projects, add this to your build.gradle:
implementation 'com.groupdocs:groupdocs-signature:23.12'
Opcja bezpośredniego pobrania
Możesz również pobrać plik JAR bezpośrednio z GroupDocs.Signature for Java releases i dodać go ręcznie do ścieżki klas swojego projektu. To podejście sprawdza się dobrze w środowiskach o ograniczonym dostępie do sieci.
Uzyskanie licencji
Poproś o bezpłatną wersję próbną lub tymczasową licencję od GroupDocs, aby usunąć znaki wodne i odblokować wszystkie funkcje. Wdrożenia produkcyjne wymagają zakupionej licencji.
Podstawowa inicjalizacja
Klasa Signature jest punktem wejścia dla wszystkich operacji podpisywania. Ładuje PDF, nakłada kod kreskowy i zapisuje podpisany plik.
import com.groupdocs.signature.Signature;
class InitializeSignature {
public static void main(String[] args) {
Signature signature = new Signature("sample.pdf");
// Proceed with signing operations...
}
}
Jak utworzyć PDF Data Matrix z kodem kreskowym HIBC?
Załaduj swój źródłowy PDF, skonfiguruj obiekt QrCodeSignOptions dla formatu Data Matrix i wywołaj sign() – to wszystko, czego potrzebujesz, aby osadzić zgodny kod kreskowy HIBC Data Matrix. Poniższe kroki przeprowadzą Cię przez dokładny wymagany kod. QrCodeSignOptions definiuje ustawienia podpisu kodu kreskowego, takie jak typ, zawartość, rozmiar i pozycja.
- Importuj wymagane klasy – zapewniają dostęp do silnika podpisu i opcji Data Matrix.
import com.groupdocs.signature.Signature;
import com.groupdocs.signature.options.sign.QrCodeSignOptions;
import com.groupdocs.signature.domain.qrcodes.QrCodeTypes;
- Utwórz obiekt
Signaturez bezwzględnymi ścieżkami do plików źródłowego i docelowego.
String sourceFilePath = "YOUR_DOCUMENT_DIRECTORY";
String destinFilePath = "YOUR_OUTPUT_DIRECTORY/SignWithHIBCLICQR.pdf";
final Signature signature = new Signature(sourceFilePath);
- Skonfiguruj opcje Data Matrix – ustaw ciąg HIBC, wybierz
QrCodeTypes.HIBCLICDataMatrixi określ współrzędne położenia.QrCodeTypeswymienia obsługiwane formaty kodów kreskowych dla podpisów HIBC.
QrCodeSignOptions hibcLic_QR = new QrCodeSignOptions("A123PROD30917/75#422011907#GP293", QrCodeTypes.HIBCLICQR);
hibcLic_QR.setLeft(1); // Set the position from left
hibcLic_QR.setTop(1); // Set the position from top
hibcLic_QR.setReturnContent(true); // Return content after signing
hibcLic_QR.setReturnContentType(FileType.PNG); // Specify return content type as PNG
- Zastosuj podpis do PDF.
signature.sign(destinFilePath, hibcLic_QR);
- Zwolnij zasoby, aby zwolnić uchwyty plików i uniknąć wycieków pamięci.
finally {
if (signature != null) signature.dispose();
}
Kompletny działający przykład
Oto pełny przepływ w jednym bloku (placeholdery reprezentują dokładny kod, który wkleisz z wcześniejszych fragmentów):
import com.groupdocs.signature.Signature;
import com.groupdocs.signature.options.sign.QrCodeSignOptions;
import com.groupdocs.signature.domain.qrcodes.QrCodeTypes;
public class HibcQrSigning {
public static void main(String[] args) {
String sourceFilePath = "sample.pdf";
String destinFilePath = "output/SignWithHIBCLICQR.pdf";
Signature signature = null;
try {
signature = new Signature(sourceFilePath);
QrCodeSignOptions hibcLic_QR = new QrCodeSignOptions(
"A123PROD30917/75#422011907#GP293",
QrCodeTypes.HIBCLICQR
);
hibcLic_QR.setLeft(1);
hibcLic_QR.setTop(1);
hibcLic_QR.setReturnContent(true);
hibcLic_QR.setReturnContentType(FileType.PNG);
signature.sign(destinFilePath, hibcLic_QR);
System.out.println("PDF signed successfully with HIBC QR code");
} catch (Exception e) {
System.err.println("Error signing PDF: " + e.getMessage());
e.printStackTrace();
} finally {
if (signature != null) signature.dispose();
}
}
}
Bezpośrednia odpowiedź (40–70 słów)
Aby utworzyć PDF Data Matrix, utwórz instancję Signature z Twoim źródłowym PDF, ustaw QrCodeSignOptions na QrCodeTypes.HIBCLICDataMatrix i podaj prawidłowo sformatowany ciąg HIBC, a następnie wywołaj signature.sign(outputPath, options). Biblioteka zapisuje podpisany PDF w miejscu docelowym, zachowując układ i osadzając kod kreskowy jako niezmienny podpis.
Jak dodać QR code PDF przy użyciu GroupDocs.Signature?
Załaduj PDF, skonfiguruj QrCodeSignOptions dla formatu QR i wywołaj sign(). Ten dwuliniowy wzorzec działa dla dowolnego rozmiaru PDF i automatycznie skalowuje obraz QR dla optymalnej czytelności. QrCodeSignOptions konfiguruje podpis kodu QR, w tym jego zawartość i właściwości wizualne. Pozycjonuje kod na podstawie ustawionych współrzędnych, zapewniając, że nie nakłada się na istniejącą treść i pozostaje skanowalny po wydrukowaniu.
- Importuj klasy specyficzne dla QR
QrCodeSignOptions hibcLic_AZ = new QrCodeSignOptions("A123PROD30917/75#422011907#GP293", QrCodeTypes.HIBCLICAztec);
hibcLic_AZ.setLeft(1); // Set the position from left
hibcLic_AZ.setTop(200); // Set the position from top
hibcLic_AZ.setReturnContent(true); // Return content after signing
hibcLic_AZ.setReturnContentType(FileType.PNG); // Specify return content type as PNG
- Utwórz i skonfiguruj opcje QR – zwróć uwagę na użycie
QrCodeTypes.HIBCLICQR.
signature.sign(destinFilePath, hibcLic_AZ);
- Podpisz dokument
QrCodeSignOptions hibcLic_DM = new QrCodeSignOptions("A123PROD30917/75#422011907#GP293", QrCodeTypes.HIBCLICDataMatrix);
hibcLic_DM.setLeft(1); // Set the position from left
hibcLic_DM.setTop(400); // Set the position from top
hibcLic_DM.setReturnContent(true); // Return content after signing
hibcLic_DM.setReturnContentType(FileType.PNG); // Specify return content type as PNG
Bezpośrednia odpowiedź: Użyj
QrCodeTypes.HIBCLICQRwQrCodeSignOptions, ustaw ciąg zawartości HIBC, pozycjonuj kod za pomocąsetLeft()isetTop(), a następnie wywołajsignature.sign(outputPath, options). Kod QR zostaje natychmiast osadzony, gotowy do przechwycenia przez smartfon lub skaner.
Częste błędy do uniknięcia
1. Zapomnienie o zwolnieniu zasobów
Błędny:
Signature signature = new Signature("sample.pdf");
signature.sign(destinFilePath, options);
// Oops, no dispose() call
Poprawka: Owiń użycie Signature w blok try‑with‑resources lub wywołaj close() w bloku finally.
2. Używanie nieprawidłowych ciągów formatu HIBC
Błędny: Używanie ogólnych ciągów jak “12345”.
Poprawka: Postępuj zgodnie ze standardem HIBCC (np. A123PROD30917/75#422011907#GP293). Zweryfikuj przy użyciu HIBCC online validator.
3. Hard‑kodowanie ścieżek plików
Błędny:
String sourceFilePath = "C:/Users/John/Documents/test.pdf";
Poprawka: Przechowuj ścieżki w pliku konfiguracyjnym lub zmiennej środowiskowej i odczytuj je w czasie działania.
4. Ignorowanie konfliktów pozycji kodu kreskowego
Umieszczaj kody kreskowe z dala od istniejącego tekstu lub podpisów. Używaj współrzędnych PDF (pochodzenie w lewym dolnym rogu) i testuj na wydrukowanej próbce.
5. Brak testów na rzeczywistych skanerach
Wydrukuj podpisany PDF i zeskanuj go przy użyciu dokładnie tego sprzętu, który jest używany w Twoim procesie. Zweryfikuj czytelność przy różnych jakościach druku.
Praktyczne zastosowania w opiece zdrowotnej
| Scenariusz | Zalecany kod kreskowy | Dlaczego pasuje |
|---|---|---|
| Dystrybucja farmaceutyczna | QR Code | Wysoka pojemność danych, szeroko skanowany przez smartfony. |
| Zarządzanie zapasami | Data Matrix | Mały rozmiar, idealny dla gęstych etykiet półkowych. |
| Zgodność regulacyjna (FDA 21 CFR Part 11) | QR + Data Matrix | Podwójny format zapewnia redundancję i możliwość audytu. |
| Śledzenie wyrobów medycznych | Aztec Code | Kompaktowy rozmiar działa na opakowaniach o ograniczonej przestrzeni. |
Rozważania dotyczące wydajności i najlepsze praktyki
Wzorzec przetwarzania wsadowego
List<String> filesToSign = getFileList();
for (String filePath : filesToSign) {
Signature signature = null;
try {
signature = new Signature(filePath);
// Sign and save
} finally {
if (signature != null) signature.dispose();
}
}
- Utwórz nową instancję
Signaturedla każdego pliku, aby utrzymać niskie zużycie pamięci. - Użyj stałej puli wątków (
Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors() - 1)) do przetwarzania równoległego, ale monitoruj rozmiar sterty, ponieważ każdaSignaturetrzyma pełny PDF w pamięci.
Aktualizuj biblioteki
Wydania GroupDocs zwiększają prędkość przetwarzania nawet o 20 % i dodają nowe funkcje zgodności HIBC. Planuj kwartalne kontrole zależności.
Buforowanie szablonów
Załaduj szablon PDF raz, sklonuj go dla każdej wariacji kodu kreskowego i podpisz klony. To zmniejsza I/O i przyspiesza przepływy pracy o dużej objętości.
Najczęściej zadawane pytania
Q: Czy GroupDocs.Signature może podpisywać typy plików inne niż PDF?
A: Tak, obsługuje również DOCX, XLSX, PPTX, PNG, JPEG i TIFF przy użyciu tego samego API do podpisywania kodów kreskowych.
Q: Jak rozwiązać problemy z błędami „Invalid barcode content”?
A: Zweryfikuj, czy Twój ciąg HIBC spełnia dokładną składnię HIBCC, użyj walidatora online i upewnij się, że używasz właściwej stałej QrCodeTypes dla wybranego formatu.
Q: Jaka jest maksymalna pojemność danych dla każdego formatu HIBC?
A: QR ≈ 4 296 znaków alfanumerycznych, Aztec ≈ 3 832 numerycznych / 3 067 alfanumerycznych, Data Matrix ≈ 3 116 numerycznych / 2 335 alfanumerycznych. Trzymaj kody poniżej 200 znaków dla optymalnej niezawodności skanowania.
Q: Czy można osadzić wiele typów kodów kreskowych w jednym PDF?
A: Oczywiście. Utwórz osobne obiekty QrCodeSignOptions z różnymi pozycjami i wywołaj signature.sign() dla każdego. Upewnij się tylko, że się nie nakładają.
Q: Czy potrzebuję połączenia internetowego do podpisywania w czasie działania?
A: Nie. Po umieszczeniu JAR-a w ścieżce klas i aktywacji licencji wszystkie operacje są wykonywane lokalnie.
Dodatkowe zasoby
- Dokumentacja GroupDocs.Signature for Java
- Przewodnik po API
- Najnowsze pobrania wersji
- Zakup licencji
- Uzyskaj bezpłatną wersję próbną
- Poproś o tymczasową licencję
- Forum GroupDocs
Ostatnia aktualizacja: 2026-05-16
Testowano z: GroupDocs.Signature 23.12 for Java
Autor: GroupDocs
signature.sign(destinFilePath, hibcLic_DM);