Как поместить iText LIST в абсолютную позицию с определенным шрифтом и выравниванием? - PullRequest
0 голосов
/ 10 июня 2018
public void printTextOnAbsolutePosition(String teks, PdfWriter writer, Rectangle rectangle, boolean useAscender) throws Exception {
    Font fontParagraf = new Font(Font.FontFamily.HELVETICA, 10, Font.NORMAL);
    rectangle.setBorder(Rectangle.BOX);
    rectangle.setBorderColor(BaseColor.RED);
    rectangle.setBorderWidth(0.0f);
    PdfContentByte cb = writer.getDirectContent();
    cb.rectangle(rectangle);

    Paragraph para = new Paragraph(teks, fontParagraf);
    ColumnText columnText = new ColumnText(cb);
    columnText.setSimpleColumn(rectangle);
    columnText.setUseAscender(useAscender);
    columnText.addText(para);

    columnText.setAlignment(3);
    columnText.setLeading(10);
    columnText.go();
}

Мы можем использовать вышеуказанный код для печати текста с iText на абсолютной позиции.Но как мы можем добиться того же с List?Кроме того, как отформатировать текст списка, чтобы он использовал определенный шрифт и выравнивание текста?

1 Ответ

0 голосов
/ 10 июня 2018
public void putBulletOnAbsolutePosition(String yourText, PdfWriter writer, Float koorX, Float koorY, Float lebarX, Float lebarY) throws Exception {
    List listToBeShown = createListWithBulletImageAndFormatedFont(yourText);

    // ... (the same) ...

    columnText.addElement(listToBeShown);
    columnText.go();
}

Метод по сути тот же.Просматривая документацию, мы обнаруживаем, что вместо использования .addtext в ColumnText мы используем .addElement, который принимает Paragraph, List, PdfPTable и Image.

Что касается форматирования текста списка, нам просто нужносделать paragraf в качестве входных данных для списка (и не использовать columnText.setAlignment() для установки выравнивания).

public List createListWithBulletImageAndFormatedFont(String yourText) throws Exception {
    Image bulletImage = Image.getInstance("src/main/resources/japoimages/bullet_blue_japo.gif");
    bulletImage.scaleAbsolute(10, 8);
    bulletImage.setScaleToFitHeight(false);

    List myList = new List();
    myList.setListSymbol(new Chunk(Image.getInstance(bulletImage), 0, 0));

    String[] yourListContent = yourText.split("__");
    Font fontList = new Font(Font.FontFamily.HELVETICA, 10, Font.NORMAL);

    for (int i=0; i < yourListContent.length; i++) {
        Paragraph para = new Paragraph(yourListContent[i], fontList);
        para.setAlignment(Element.ALIGN_JUSTIFIED);
        myList.add(new ListItem(para));
    }
    return myList;
}

Приведенные выше коды будут печатать маркированный список (с использованием изображения) в любом месте, которое мы хотим.

public void putBulletnAbsolutePosition (String dest) throws Exception {
    Document document = new Document(PageSize.A5, 30,30, 60, 40);
    PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(dest));
    document.open();

    String myText = "ONE__TWO__THREE__FOUR";
    putBulletOnAbsolutePosition(myText, writer, 140f, 350f, 300f, 200f);

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