【发布时间】:2021-08-12 08:39:12
【问题描述】:
我在使用 itext7 时有一个问题。我想通过生成二维码来生成pdf。 正常创建没有问题。但是,我想调整 QR 点的大小。 我不想减小 QR 码的整体大小,我只想减小其中的点的大小。 目前只能调整二维码的整体大小。
public class PdfTest {
public static final String DEST = "D:\\output.pdf";
public static final String SRC = "D:\\202106003196.pdf";
static PdfDocument mPdfDocument;
public static void main(String[] args) {
try {
File file = new File(DEST);
file.getParentFile().mkdirs();
FontProgramFactory.registerFont("D:\\font\\MAISONNEUEEXT-MEDIUM.OTF", "MAISONNEUEEXT-MEDIUM");
PdfFont mPdfFont_MAISONNEUEEX_MEDIUM = PdfFontFactory.createRegisteredFont("MAISONNEUEEXT-MEDIUM");
mPdfDocument = new PdfDocument(new PdfReader(SRC), new PdfWriter(DEST));
Document mDocument = new Document(mPdfDocument);
// QR
addQR("HTTP://QR.TEST.COM/0123456", mPdfDocument, 1, 25, 50);
PdfPage pdfPage = mPdfDocument.getPage(1);
Rectangle pageSize = pdfPage.getPageSize();
Rectangle[] mRectangle = {new Rectangle(0, 10, pageSize.getRight(), 50)};
mDocument.setRenderer(new ColumnDocumentRenderer(mDocument, mRectangle));
mDocument.close();
mPdfDocument.close();
} catch (Exception e) {
e.printStackTrace();
}
}
private static void addQR(String mQRCode, PdfDocument mPdfDocument, int mPage, float mX, float mY) {
PdfPage mPdfPage = mPdfDocument.getPage(mPage);
BarcodeQRCode mBarcodeQRCode;
Map<EncodeHintType, Object> mHints = new HashMap<>();
mHints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);
mHints.put(EncodeHintType.MIN_VERSION_NR, 2);
mBarcodeQRCode = new BarcodeQRCode(mQRCode, mHints);
PdfCanvas over = new PdfCanvas(mPdfPage);
mBarcodeQRCode.placeBarcode(over, ColorConstants.RED, 0.5f);
}
}
【问题讨论】:
-
您好,您共享了一个方法声明。如何(使用哪些参数)调用此方法来重现问题?
-
@AlexeySubach 你好,我修改了上面的源码。我带回了完整的源代码。上面的源代码不会产生错误。我想要的是减小二维码中点的大小。