瑞士 QR 碼也稱為瑞士 QR 法案。它的開發是為了自動化數字支付。我們可以輕鬆地將觸發付款所需的所有必要付款信息編碼到瑞士二維碼中。瑞士二維碼中間有一個瑞士十字。在本文中,我們將學習如何使用 Java 生成瑞士二維碼。此外,我們還將學習如何以編程方式解碼和讀取瑞士二維碼中的支付信息。
本文應涵蓋以下主題:
用於生成和讀取瑞士二維碼的 Java API
為了生成和讀取瑞士 QR 碼,我們將使用 Aspose.BarCode for Java API。它提供 SwissQRBill 和 SwissQRCodetext 類,提供各種屬性以處理瑞士二維碼。 SwissQRBill 類支持獲取或設置賬單和支付數據,例如帳戶信息、金額、貨幣和債權人詳細信息。 SwissQRCodetext 類允許對嵌入瑞士二維碼中的 SwissQRBill 信息進行編碼和解碼。
API 提供了 ComplexBarcodeGenerator 類來生成複雜條碼的圖像,例如瑞士 QR 碼。 API 的 BarCodeReader 類允許讀取指定 DecodeType 的條碼。 API的BarCodeResult類存儲了識別到的條碼數據,如條碼類型、條碼文本等。此外,它是一個功能豐富的 API,可讓您生成、掃描和讀取各種條碼符號。
請 下載 API 的 JAR 或在基於 Maven 的 Java 應用程序中添加以下 pom.xml 配置。
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>http://repository.aspose.com/repo/</url>
</repository>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-barcode</artifactId>
<version>22.5</version>
</dependency>
在 Java 中生成瑞士二維碼
我們可以按照以下步驟生成瑞士二維碼:
- 創建 SwissQRCodetext 類的實例。
- 設置各種 SwissQRBill 屬性,例如版本、帳戶、金額、貨幣、參考等。
- 初始化 Address 類對象並設置債權人和債務人詳細信息。
- 之後,使用 SwissQRCodetext 對象創建 ComplexBarcodeGenerator 類的實例。
- 最後,調用 save() 方法將圖像保存在給定的文件路徑中。
以下代碼示例展示瞭如何使用 Java 生成瑞士二維碼。
// 此代碼示例演示如何生成瑞士二維碼
// 創建瑞士二維碼賬單
SwissQRCodetext swissQRCode = new SwissQRCodetext();
swissQRCode.getBill().setVersion(QrBillStandardVersion.V2_0);
swissQRCode.getBill().setAccount("CH4431999123000889012");
swissQRCode.getBill().setAmount(1000.25);
swissQRCode.getBill().setCurrency("CHF");
swissQRCode.getBill().setReference("210000000003139471430009017");
// 債權人地址
Address creditorAddress = new Address();
creditorAddress.setName("Muster & Söhne");
creditorAddress.setStreet("Musterstrasse");
creditorAddress.setHouseNo("12b");
creditorAddress.setPostalCode("8200");
creditorAddress.setTown("Zürich");
creditorAddress.setCountryCode("CH");
swissQRCode.getBill().setCreditor(creditorAddress);
// 債務人地址
Address debtorAddress = new Address();
debtorAddress.setName("Muster AG");
debtorAddress.setStreet("Musterstrasse");
debtorAddress.setHouseNo("1");
debtorAddress.setPostalCode("3030");
debtorAddress.setTown("Bern");
debtorAddress.setCountryCode("CH");
swissQRCode.getBill().setDebtor(debtorAddress);
// 生成瑞士二維碼賬單
ComplexBarcodeGenerator generator = new ComplexBarcodeGenerator(swissQRCode);
// 保存條形碼圖像
generator.save("SwissQRBill.png");
在 Java 中自定義瑞士二維碼
我們可以按照以下步驟自定義瑞士二維碼的外觀:
- 創建 SwissQRCodetext 類的實例。
- 設置各種 SwissQRBill 屬性,例如版本、帳戶、金額、貨幣、參考等。
- 初始化 Address 類對象並設置債權人和債務人詳細信息。
- 使用 SwissQRCodetext 對象創建 ComplexBarcodeGenerator 類的實例。
- 之後,設置各種條碼參數,如圖像寬度、編碼、背景顏色、分辨率、邊框等。
- 最後調用save()方法生成代碼。它以圖像文件路徑和 BarCodeImageFormat 作為參數。
以下代碼示例展示瞭如何使用 Java 自定義瑞士二維碼。
// 此代碼示例演示如何自定義瑞士二維碼的外觀
// 創建瑞士二維碼賬單
SwissQRCodetext swissQRCode = new SwissQRCodetext();
swissQRCode.getBill().setVersion(QrBillStandardVersion.V2_0);
swissQRCode.getBill().setAccount("CH4431999123000889012");
swissQRCode.getBill().setAmount(1000.25);
swissQRCode.getBill().setCurrency("CHF");
swissQRCode.getBill().setReference("210000000003139471430009017");
// 債權人地址
Address creditorAddress = new Address();
creditorAddress.setName("Muster & Söhne");
creditorAddress.setStreet("Musterstrasse");
creditorAddress.setHouseNo("12b");
creditorAddress.setPostalCode("8200");
creditorAddress.setTown("Zürich");
creditorAddress.setCountryCode("CH");
swissQRCode.getBill().setCreditor(creditorAddress);
// 債務人地址
Address debtorAddress = new Address();
debtorAddress.setName("Muster AG");
debtorAddress.setStreet("Musterstrasse");
debtorAddress.setHouseNo("1");
debtorAddress.setPostalCode("3030");
debtorAddress.setTown("Bern");
debtorAddress.setCountryCode("CH");
swissQRCode.getBill().setDebtor(debtorAddress);
// 生成瑞士二維碼賬單
ComplexBarcodeGenerator generator = new ComplexBarcodeGenerator(swissQRCode);
// 設置圖像大小
generator.getParameters().getBarcode().getXDimension().setPixels(4);
// 設置編碼
generator.getParameters().getBarcode().getQR().setQrEncodeMode(QREncodeMode.ECI_ENCODING);
generator.getParameters().getBarcode().getQR().setQrECIEncoding(ECIEncodings.UTF8);
// 設置背景顏色
generator.getParameters().setBackColor(Color.RED);
// 設置圖像分辨率
generator.getParameters().setResolution(300);
// 設置邊框
generator.getParameters().getBorder().getColor().brighter();
generator.getParameters().getBorder().setDashStyle(BorderDashStyle.SOLID);
generator.getParameters().getBorder().setColor(Color.BLUE);
generator.getParameters().getBorder().setVisible(true);
generator.getParameters().getBorder().getWidth().setPoint(4);
// 將條碼圖像另存為 JPEG
generator.save("SwissQRBill.jpg", BarCodeImageFormat.JPEG);
在 Java 中讀取瑞士二維碼
我們可以按照以下步驟從圖像中讀取條形碼:
- 首先,使用 BarCodeReader 類加載圖像。
- 使用 readBarCodes() 方法在 BarCodeResult 類對像中獲取識別結果。
- 遍歷結果並使用 tryDecodeSwissQR() 方法解碼瑞士二維碼。
- 最後,讀取 SwissQRCode 文本並顯示數據。
以下代碼示例展示瞭如何使用 Java 從圖像中讀取瑞士二維碼。
// 此代碼示例演示如何檢測、解碼和讀取瑞士二維碼
// 識別瑞士二維碼
BarCodeReader reader = new BarCodeReader("SwissQRBill.png", DecodeType.QR);
for (BarCodeResult barcodeResult : reader.readBarCodes())
{
// 嘗試解碼瑞士二維碼
SwissQRCodetext swissResult = ComplexCodetextReader.tryDecodeSwissQR(barcodeResult.getCodeText());
if (null != swissResult)
{
System.out.println("Version: " + swissResult.getBill().getVersion());
System.out.println("Account: " + swissResult.getBill().getAccount());
System.out.println("Amount: " + swissResult.getBill().getAmount());
System.out.println("Currency: " + swissResult.getBill().getCurrency());
System.out.println("Reference: " + swissResult.getBill().getReference());
System.out.println("Creditor Name: " + swissResult.getBill().getCreditor().getName());
System.out.println("Creditor Street: " + swissResult.getBill().getCreditor().getStreet());
System.out.println("Creditor House: " + swissResult.getBill().getCreditor().getHouseNo());
System.out.println("Creditor Postal Code: " + swissResult.getBill().getCreditor().getPostalCode());
System.out.println("Creditor Town: " + swissResult.getBill().getCreditor().getTown());
System.out.println("Creditor Country: " + swissResult.getBill().getCreditor().getCountryCode());
System.out.println("Debtor Name: " + swissResult.getBill().getDebtor().getName());
System.out.println("Debtor Street: " + swissResult.getBill().getDebtor().getStreet());
System.out.println("Debtor House: " + swissResult.getBill().getDebtor().getHouseNo());
System.out.println("Debtor Postal Code: " + swissResult.getBill().getDebtor().getPostalCode());
System.out.println("Debtor Town: " + swissResult.getBill().getDebtor().getTown());
System.out.println("Debtor Country: " + swissResult.getBill().getDebtor().getCountryCode());
}
}
Version: V2_0
Account: CH4431999123000889012
Amount: 1000.25
Currency: CHF
Reference: 210000000003139471430009017
Creditor Name: Muster & Söhne
Creditor Street: Musterstrasse
Creditor House: 12b
Creditor Postal Code: 8200
Creditor Town: Zürich
Creditor Country: CH
Debtor Name: Muster AG
Debtor Street: Musterstrasse
Debtor House: 1
Debtor Postal Code: 3030
Debtor Town: Bern
Debtor Country: CH
獲得免費許可證
您可以 獲得免費的臨時許可證 來試用該庫,而沒有評估限制。
結論
在本文中,我們學習瞭如何:
- 以編程方式生成 Swiss QR Bill 圖像;
- 設置二維碼圖片大小和分辨率;
- 設置二維碼的邊框和背景色;
- 從圖像中檢測瑞士二維碼;
- 從 Java 中的 Swiss QR Code 讀取支付細節。
此外,您可以使用文檔了解更多關於 Aspose.BarCode for Java API 的信息。如有任何歧義,請隨時在論壇上與我們聯繫。