Как выровнять текст по вертикали в pdf с помощью iText7 Java - PullRequest
0 голосов
/ 17 марта 2020

Я пытаюсь создать этикетки со штрих-кодом в системе java pos, которую я создал. В настоящее время у меня есть такие этикетки:

enter image description here

, но теперь мне нужно изменить дизайн этикетки со штрих-кодом, чтобы распечатать его. Мне нужен такой дизайн:

enter image description here

У нашего принтера есть бумага с двумя наклейками на строку, поэтому нам нужно сгенерировать PDF с двумя столбцами таблицы, в каждом столбце одна метка. Я имею в виду что-то вроде этого:

enter image description here

У меня есть две функции, которые создали PDF. Я ранее создавал изображение штрих-кода с другой библиотекой:

        public static Cell createImageCell(String path, String text1, String text2) throws MalformedURLException 
    {
          Image img = new Image(ImageDataFactory.create(path));
          img.setWidth(UnitValue.createPercentValue(100));
          img.setHeight(UnitValue.createPercentValue(100));
          Cell cell = new Cell();
          Paragraph p1 = new Paragraph(text1);
          Paragraph p2 = new Paragraph(text2);

          cell.add(p1); //Here is the article details
          cell.add(img); //here is the barcode image
          cell.add(p2); //here is the barcode number

          p1.setTextAlignment(TextAlignment.LEFT).setPadding(0).setFontSize(6).setMarginTop(0).setMarginBottom(0).setMarginLeft(0).setMarginRight(5);
          p2.setTextAlignment(TextAlignment.LEFT).setVerticalAlignment(VerticalAlignment.TOP).setPadding(0).setFontSize(6).setMarginTop(0).setMarginBottom(0).setMarginLeft(0).setMarginRight(5);
          cell.setHeight(70);
          cell.setBorder(null).setVerticalAlignment(VerticalAlignment.TOP).setMarginTop(0).setMarginBottom(0).setMarginLeft(0).setMarginRight(5).setPaddingBottom(0);

          return cell;
    }






    public void manipulatePdf(String dest, String []codigo_BARRA, String []codigo_sistema, String []detalle, String []color, int [] cantidades) throws Exception 
    {

    PdfDocument pdfDoc = new PdfDocument(new PdfWriter(dest));
    PageSize pagesize = new PageSize(148, 742);
    Document doc = new Document(pdfDoc, PageSize.A8.rotate());

    int tabla1Alto =0;

    Table table = new Table(UnitValue.createPercentArray(2)).useAllAvailableWidth();

       int cantidades_stock = 0;

       for(int i=0; i<codigo_BARRA.length; i++)
        {
            cantidades_stock = cantidades[i];

            for(int j=0; j<cantidades_stock; j++)
            {               
            tabla1Alto = (50 * 2) + tabla1Alto;
            table.setHeight(tabla1Alto);
            String InfoArt = "ARTICLE: "+codigo_sistema[i] +" "+ detalle[i]+" COLOR: "+color[i];
            String IMG = System.getProperty("user.home")+"\\SYSTEM_POS\\PRIVATE_PICTURES_ARTICLES\\BARCODES\\BarCode_"+ codigo_BARRA[i] +".png";                     
            //table.addCell(createTextCell());
            table.addCell(createImageCell(IMG, InfoArt, codigo_BARRA[i])).setMarginRight(1);
            //table.addCell(createTextCell2(codigo_BARRA[i]));                               
            }
        }

    PageSize pagesize2 = new PageSize(148, tabla1Alto);
    Document doc2 = new Document(pdfDoc, PageSize.A8.rotate());
    doc2.setMargins(1, 1, 1, 1);
    doc2.add(table);
    doc2.close();

    }

Я использую эту библиотеку для генерации изображения штрих-кода:

 -----> barbecue 1.5 beta version

import java.io.File;
import java.io.FileOutputStream;
import net.sourceforge.barbecue.Barcode;
import net.sourceforge.barbecue.BarcodeException;
import net.sourceforge.barbecue.BarcodeFactory;
import net.sourceforge.barbecue.BarcodeImageHandler;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import net.sourceforge.jbarcodebean.JBarcodeBean;
import net.sourceforge.jbarcodebean.model.Interleaved25;

Я использую эту библиотеку для создания PDF с метками

-----> iText 7

import com.itextpdf.io.image.ImageDataFactory;
import com.itextpdf.kernel.geom.PageSize;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.borders.Border;
import com.itextpdf.layout.element.Cell;
import com.itextpdf.layout.element.Image;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.element.Table;
import com.itextpdf.layout.property.HorizontalAlignment;
import com.itextpdf.layout.property.TextAlignment;
import com.itextpdf.layout.property.UnitValue;
import com.itextpdf.layout.property.VerticalAlignment;

import com.itextpdf.test.annotations.type.SampleTest;
import java.io.FileNotFoundException;

import java.net.MalformedURLException;
import java.util.logging.Level;
import java.util.logging.Logger;

Как можно создать два столбца в таблице с изображением штрих-кода и текстом по вертикали?

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