Как я могу добавить цвет фона в мой PDF с помощью iText 7?

Я просто хочу добавить цвет к фону PDF, который я создаю с этой библиотекой.

Я хочу, чтобы мои страницы имели цвет фона или даже картинку. Документация у меня закружилась голова.

Почему так трудно достичь с этой библиотекой? Нужно ли читать книгу, просто чтобы понять, как пользоваться библиотекой? Я бы предпочел купить книгу, чтобы выучить новый язык программирования.

2 ответа

Решение

Нет однозначного ответа онлайн или в их "примерах", но мне удалось найти похожий вопрос о наличии различных цветов фона страницы в файле PDF здесь.

На мой взгляд, решение слишком сложное. Это просто цвет фона.

В любом случае, вот решение для тех, у кого может быть та же проблема, что и у меня:

//Class that creates the PDF
public class PdfCreator {

//Helper class so we can add colour to our pages when we call it from outer class
private static class PageBackgroundsEvent implements IEventHandler {
    @Override
    public void handleEvent(Event event) {
        PdfDocumentEvent docEvent = (PdfDocumentEvent) event;
        PdfPage page = docEvent.getPage();

        PdfCanvas canvas = new PdfCanvas(page);
        Rectangle rect = page.getPageSize();
        //I used custom rgb for Color
        Color bgColour = new DeviceRgb(255, 204, 204);
        canvas  .saveState()
                .setFillColor(bgColour)
                .rectangle(rect.getLeft(), rect.getBottom(), rect.getWidth(), rect.getHeight())
                .fillStroke()
                .restoreState();
        }
    }

    //PATH_OF_FILE is the path that the PDF will be created at.
    String filename = PATH_OF_FILE + "/myFile.pdf";
    OutputStream outputStream = new FileOutputStream(new File(filename));
    PdfWriter writer = new PdfWriter(outputStream);
    PdfDocument pdfDoc = new PdfDocument(writer);
    pdfDoc.addEventHandler(PdfDocumentEvent.START_PAGE, new PageBackgroundsEvent());
    PageSize pageSize = pdfDoc.getDefaultPageSize();
    Document document = new Document(pdfDoc, pageSize);
    document.close();
}

Фоновые изображения можно добавлять так же! Смотрите эту ссылку

чтобы установить фоновое изображение:

      pdfDoc.addEventHandler(PdfDocumentEvent.END_PAGE, event -> {
    new PdfCanvas(((PdfDocumentEvent)event).getPage())
       .addImageAt(ImageFactory.create("filename.png"), 50f, 50f, true);
});
Другие вопросы по тегам