Разрыв между текстом и штрих-кодом с iText - PullRequest
0 голосов
/ 27 июня 2018

Я генерирую Barcode128 с библиотекой iText-2.1.3. Это код, который я использую:

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 голосов
/ 27 июня 2018

Не уверен, доступен ли он в используемой вами версии iText, но, по крайней мере, в iText 5 у вас есть возможность установить «интервал после» в пунктах. Это будет именно то, что вам нужно, то есть вы указываете фиксированное пространство под абзацем, и любые элементы, которые вы добавляете в документ после этого абзаца, будут идти под этим пробелом.

p.setSpacingAfter(x)

Где x - это необходимое вам пространство в пользовательских единицах или «точках».

...