как установить заголовок в pdf в начале и как установить выравнивание по центру - PullRequest
0 голосов
/ 06 апреля 2020

Я надеюсь, что все в порядке в эти дни Благослови тебя !. На следующем рисунке я хочу установить заголовок моего pdf с библиотекой itextpdf ( версия 7.0.2 ), но в результате:

enter image description here

    String file = "C:/Users/User/Desktop/generator/Test.pdf";
    PdfDocument pdfDoc = new PdfDocument(new PdfWriter(file));
    Document doc = new Document(pdfDoc);
    float[] pointColumnWidths = {450, 200F};
    Table table = new Table(pointColumnWidths);

    Text text1 = new Text("BLABLA BLABLA");
    PdfFont font = PdfFontFactory.createFont(FontConstants.HELVETICA_BOLD);
    text1.setFont(font);
    text1.setFontSize(20);
    text1.setBackgroundColor(Color.BLUE, 170, 20, 170, 20);
    text1.setFontColor(Color.WHITE);
    Paragraph paragraph1 = new Paragraph();
    paragraph1.add(text1);
    doc.add(paragraph1);


    Cell c1 = new Cell();
    c1.add("BlaBla:");
    c1.setBorder(Border.NO_BORDER);
    c1.setTextAlignment(TextAlignment.LEFT);
    table.addCell(c1);


    Cell c2 = new Cell();
    String number = "45875454";
    c2.setBorder(Border.NO_BORDER);
    c2.add(number);
    c2.setTextAlignment(TextAlignment.LEFT);
    table.addCell(c2);

    Cell c3 = new Cell();
    c3.add("BlaBla:");
    c3.setBorder(Border.NO_BORDER);
    c3.setTextAlignment(TextAlignment.LEFT);
    table.addCell(c3);


    Cell c4 = new Cell();
    String date = "06.04.2020";
    c4.setBorder(Border.NO_BORDER);
    c4.add(date);
    c4.setTextAlignment(TextAlignment.LEFT);
    table.addCell(c4);

    Cell c5 = new Cell();
    c5.add("BlaBla:");
    c5.setBorder(Border.NO_BORDER);
    c5.setTextAlignment(TextAlignment.LEFT);
    table.addCell(c5);


    Cell c6 = new Cell();
    String index = "56";
    c6.setBorder(Border.NO_BORDER);
    c6.add(index);
    c6.setTextAlignment(TextAlignment.LEFT);
    table.addCell(c6);

    Cell c7 = new Cell();
    c7.add("BlaBla:");
    c7.setBorder(Border.NO_BORDER);
    c7.setTextAlignment(TextAlignment.LEFT);
    table.addCell(c7);


    Cell c8 = new Cell();
    String blaBla = "06.04.2020";
    c8.setBorder(Border.NO_BORDER);
    c8.add(blaBla);
    c8.setTextAlignment(TextAlignment.LEFT);
    table.addCell(c8);

    doc.add(table);

    doc.close();

1 Ответ

2 голосов
/ 06 апреля 2020
import com.itextpdf.text.Document;
import com.itextpdf.text.Element;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.pdf.ColumnText;
import com.itextpdf.text.pdf.PdfPageEventHelper;
import com.itextpdf.text.pdf.PdfWriter;

public class HeaderFooterPageEvent extends PdfPageEventHelper {

    public void onStartPage(PdfWriter writer, Document document) {
        ColumnText.showTextAligned(writer.getDirectContent(), Element.ALIGN_CENTER, new Phrase("Top Left"), 30, 800, 0);
        ColumnText.showTextAligned(writer.getDirectContent(), Element.ALIGN_CENTER, new Phrase("Top Right"), 550, 800, 0);
    }

    public void onEndPage(PdfWriter writer, Document document) {
        ColumnText.showTextAligned(writer.getDirectContent(), Element.ALIGN_CENTER, new Phrase("Bla Bla"), 110, 30, 0);
        ColumnText.showTextAligned(writer.getDirectContent(), Element.ALIGN_CENTER, new Phrase("page " + document.getPageNumber()), 550, 30, 0);
    }

}

iText предоставляет класс PdfPageEventHelper, который имеет различные методы событий, вызываемые при записи PDF. Чтобы добавить верхний и нижний колонтитулы, нам нужно создать класс, расширяющий PdfPageEventHelper и переопределяющий onStartPage и onEndPage методы. Зарегистрируйте этот класс в PdfWriter.

Создание класса событий HeaderFooterPageEvent Расширение PdfPageEventHelper Класс PdfPageEventHelper имеет различные методы событий для PDF. Он реализует PdfPageEvent интерфейс. Некоторые методы PdfPageEventHelper имеют следующий вид

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