使用iText的文本和条形码之间的间隙

时间:2018-06-27 09:43:28

标签: java itext barcode

我正在使用库iText-2.1.3生成Barcode128。这是我正在使用的代码:

private void createBarcode(String kodDokumentu, String idSadowka, String projekt) throws IOException, DocumentException
    {
        File barcodePdf = new File(pathToPdf);
        Files.deleteIfExists(barcodePdf.toPath());
        Document document = new Document();
        Rectangle size = new Rectangle(151,60);
        document.setMargins(5, 1, -6, 0);
        document.setPageSize(size);
        FileOutputStream fos = new FileOutputStream(pathToPdf);
        PdfWriter writer = PdfWriter.getInstance(document, fos);

        document.open();
        PdfContentByte cb = writer.getDirectContent();
        Barcode barcode128 = new Barcode128();
        barcode128.setBarHeight(40);
        barcode128.setX(1.04f);
        barcode128.setCode("VL#"+kodDokumentu.toUpperCase());
        barcode128.setCodeType(Barcode.CODE128);
        Image code128Image = barcode128.createImageWithBarcode(cb, null, null);
        Font code = new Font(FontFamily.TIMES_ROMAN, 8, Font.NORMAL, BaseColor.BLACK);
        Paragraph p = new Paragraph("ID: "+idSadowka+",   Projekt: "+projekt.substring(0, 2), code);
        document.add(p);
        document.add(code128Image);
        document.close();
        fos.close();
    }

我想尽可能地缩小h(看一下图片),最好是h=0.01,因为我想为ID: xxxxx, Projekt: xx保留更多的空间以使其更大而且更容易被人阅读。 首先,我使用(底部条形码)字体大小8,然后(上部条形码)尝试将字体大小更改为10,但是当我这样做时,h比以前大。我知道字体大小与条形码和上面的文本之间的间隙有关,但是是否可以使用更大的字体大小并将该间隙设置得很小?

enter image description here

1 个答案:

答案 0 :(得分:2)

不确定所使用的iText版本是否可用,但至少在iText 5上,您可以选择在“段落”上设置“之后的间距”。正是您所需要的,即您在段落下指定了一个固定的空格,在该段落之后添加到文档中的任何元素都将在该空格下。

p.setSpacingAfter(x)

其中x是您需要的空间,以用户单位或“点”为单位。