Почему я не могу изменить размер QR-кода в iText7? - PullRequest
1 голос
/ 28 мая 2020

Как изменить размер QR-кода?

            using (iText.Kernel.Pdf.PdfReader _pdf_reader = 
                new iText.Kernel.Pdf.PdfReader("tmp/example.pdf"))
            {
                using (iText.Kernel.Pdf.PdfDocument pdfDoc = new iText.Kernel.Pdf.PdfDocument(_pdf_reader, new iText.Kernel.Pdf.PdfWriter("tmp/output.pdf").SetSmartMode(true)))
                {
                    BarcodeQRCode qrc = new BarcodeQRCode("https://google.com");

                    PdfFormXObject xObject = qrc.CreateFormXObject(ColorConstants.BLACK, pdfDoc);

                    float _w = pdfDoc.GetPage(1).GetPageSize().GetWidth();
                    float _h = pdfDoc.GetPage(1).GetPageSize().GetHeight();
                    PdfCanvas canvas = new PdfCanvas(pdfDoc.GetPage(1));
                    canvas.SaveState();
                    canvas.SetFillColor(ColorConstants.LIGHT_GRAY);
                    //canvas.Rectangle(_w - 90, _h - 90, 100, 100);
                    canvas.Fill();
                    canvas.RestoreState();
                    canvas.AddXObject(xObject, _w - qrc.GetBarcodeSize().GetWidth(), _h - qrc.GetBarcodeSize().GetHeight());
                }
            }

Я пытаюсь:

 qrc.GetBarcodeSize().GetHeight();
 qrc.GetBarcodeSize().GetWidth();

он возвращает 33

Я пытаюсь установить высоту и ширину на 100, как ниже:

 qrc.GetBarcodeSize().SetHeight(100);
 qrc.GetBarcodeSize().SetWidth(100);

, а затем снова проверьте размер, но он продолжает возвращать 33, это ошибка? или я что-то пропустил?

помогите пожалуйста

спасибо Дон

1 Ответ

0 голосов
/ 01 июня 2020

Я пытаюсь установить высоту и ширину на 100, как показано ниже:

На самом деле, вы не можете изменить сторону QrCode таким образом. Фактически, QR-код представляет собой сетку n * n, где n зависит от некоторых параметров, таких как версия QR-кода и уровень исправления ошибок. При генерации iText использует самую маленькую версию, которая может соответствовать содержимому. В вашем случае это версия 4 (33 * 33).

Самый простой способ изменить размер QrCode в документе - использовать версию метода createFormXObject, которая принимает параметр moduleSide.

float moduleSize = 100/qrc.GetBarcodeSize().GetHeight();    
qrc.createFormXObject(foreground, moduleSize, document)

Размер модуля здесь - размер ячейки сетки штрих-кода (по умолчанию 1).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...