簡體   English   中英

iTextSharp和QR Code尺寸

[英]iTextSharp and QR Code sizing

我正在嘗試使用iTextSharp創建帶有QR碼的PDF。 我遇到的問題是QR碼的大小會根據我傳遞給它的內容而變化。 說我有以下代碼:

var val = "SER K250102 PNO 1011555-001 WGT 296.00 UNT LB";
//val = "SER K237706 PNO 1017401-001EJ08 WGT 365.00 UNT LB";

var barcode = new BarcodeQRCode(val, 100, 100, null);

var content = stamper.GetOverContent(1);

var image = barcode.GetImage();image.ScaleToFitHeight = false;
image.SetAbsolutePosition(100f, 100f);
image.SetDpi(600, 600);
content.AddImage(image);

如果我將第一個“ val”變量傳遞給BarcodeQRCode(),則二維碼是一個大小; 但是,如果我傳入第二個“ val”變量(注釋掉,它僅具有4個附加字符),則QR碼的大小會明顯變小。 請注意,我要傳遞固定的高度和寬度,並且要設置絕對位置。

當我說qr代碼較小時,我的意思是總體高度/寬度似乎相同,但是代碼本身的邊距要厚得多,因此代碼本身也較小。 有點像HTML,其中CSS元素的寬度可能為100px,由90px的內容+ 10px的邊距組成。 在這里,“內容”(qr碼)在縮小,空白(周圍的空白)在增加。

奇怪的是,如果我在“ val”變量中添加更多文本,則QR碼的大小會增加!

甚至更陌生,當我調試並觀看上述每種情況的圖像變量時,其屬性都是相同的:相同的硬件,比例等。

有沒有其他人經歷過這種波動的規模? 解決了嗎? 我是否缺少某些設置或對qr代碼呈現方式的誤解?

謝謝湯姆

我在尺寸上遇到了同樣的問題,因此我使用不同的寬度和高度檢查了源代碼。

所以我發現,直到特殊尺寸和更大的填充量都一樣。 因此,我在兩種尺寸上都使用318,以獲得最佳分辨率。

我正在使用itextpdf-5.5.6.jar(但我認為這是相對的事情)。 我在QRCodeWriter.class找到了解決方案,尤其是在renderResult()方法中。

例如,第一個差異在105/106之間,下一個在158/159之間,依此類推。 通過這種方式,leftPadding是30 / 8、34 / 12,依此類推。 訣竅是“多個”變量和基於qrCode版本的inputWidth。

版本將通過Encoder.classinitQRCode()方法計算得出

“ numInputBytes”-121“ ErrorCorrectionLevel”-M“模式”-Mode.BYTE

因此,在我的情況下,它是版本7,inputWidth是(17 + 4 *版本= 45)。

根據您的評論,我寫了一些更多的信息。

我使用Jaspersoft® Studio創建發票。 在類中,代碼看起來像這樣-> java.awt.Image qrCode = new BarcodeQRCode(qrCodeDataString, 318, 318, hints).createAwtImage(Color.BLUE, Color.WHITE); 變量hintsERROR_CORRECTIONCHARACTER_SET的選項,發票上有一個74px * 74px的圖像正方形。 因此,所有qrcode看起來都是相同的,無論該字符串包含60個字符還是160個字符。

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM