Добавление фона в PDF на Java

Фоновые артефакты позволяют размещать визуальные элементы без содержания позади основного контента страницы без изменения логического текста документа.

Добавление фонового изображения в PDF

Используйте этот пример, когда страница должна отображать изображение в качестве фонового артефакта.

  1. Откройте исходный PDF в объекте Document и поток ввода изображения.
  2. Создайте BackgroundArtifact и назначьте поток изображения.
  3. Добавьте артефакт на целевую страницу и сохраните результирующий PDF.
public static void addBackgroundImageToPdf(Path inputFile, Path imageFile, Path outputFile) throws Exception {
    try (Document document = new Document(inputFile.toString());
         InputStream imageStream = Files.newInputStream(imageFile)) {
        BackgroundArtifact artifact = new BackgroundArtifact();
        artifact.setBackgroundImage(imageStream);
        document.getPages().get_Item(1).getArtifacts().add(artifact);
        document.save(outputFile.toString());
    }
}

Добавление фонового изображения с непрозрачностью

Этот пример размещает полупрозрачное фоновое изображение за содержимым страницы.

  1. Откройте исходный PDF в объекте Document и поток изображения.
  2. Создайте BackgroundArtifact, назначьте изображение и задайте непрозрачность.
  3. Добавьте артефакт на страницу и сохраните документ.
public static void addBackgroundImageWithOpacityToPdf(Path inputFile, Path imageFile, Path outputFile)
        throws Exception {
    try (Document document = new Document(inputFile.toString());
         InputStream imageStream = Files.newInputStream(imageFile)) {
        BackgroundArtifact artifact = new BackgroundArtifact();
        artifact.setBackgroundImage(imageStream);
        artifact.setOpacity(0.5);
        document.getPages().get_Item(1).getArtifacts().add(artifact);
        document.save(outputFile.toString());
    }
}

Добавление цвета фона в PDF

Используйте этот пример, когда страница должна использовать сплошной цвет фона вместо изображения.

  1. Откройте исходный PDF в объекте Document.
  2. Создайте BackgroundArtifact и задайте цвет фона.
  3. Добавьте артефакт на страницу и сохраните выходной файл.
public static void addBackgroundColorToPdf(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        BackgroundArtifact artifact = new BackgroundArtifact();
        artifact.setBackgroundColor(Color.getDarkKhaki().toRgb());
        document.getPages().get_Item(1).getArtifacts().add(artifact);
        document.save(outputFile.toString());
    }
}

Удаление артефактов фона

Используйте этот подход, когда существующие артефакты фона должны быть удалены со страницы.

  1. Откройте исходный PDF в объекте Document.
  2. Переберите коллекцию артефактов страницы в обратном порядке.
  3. Удалите артефакты, тип которых – пагинация, а подтип – фон, затем сохраните документ.
public static void removeBackground(Path inputFile, Path outputFile) {
    try (Document document = new Document(inputFile.toString())) {
        for (int i = document.getPages().get_Item(1).getArtifacts().size(); i >= 1; i--) {
            Artifact artifact = document.getPages().get_Item(1).getArtifacts().get_Item(i);
            if (artifact.getType() == Artifact.ArtifactType.Pagination
                    && artifact.getSubtype() == Artifact.ArtifactSubtype.Background) {
                document.getPages().get_Item(1).getArtifacts().delete(artifact);
            }
        }

        document.save(outputFile.toString());
    }
}