Adicionar formas de retângulo ao PDF em Java

Adicionar um contorno de retângulo

  1. Crie um novo documento PDF Document.
  2. Adicione um Page ao documento.
  3. Crie um Graph contêiner e adicione-o à página.
  4. Crie o Rectangle forma e configure sua geometria.
  5. Adicione o Rectangle para o Graph contêiner.
  6. Salve o PDF de saída Document.
public static void addRectangle(Path outputFile) {
    try (Document document = new Document()) {
        Page page = document.getPages().add();
        Graph graph = new Graph(400.0, 300.0);
        page.getParagraphs().add(graph);
        graph.setBorder(new BorderInfo(BorderSide.All, Color.getRed()));

        Rectangle rectangle = new Rectangle(20, 20, 350, 250);
        graph.getShapes().addItem(rectangle);

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

Preencher um retângulo com cor sólida ou degradê

Os exemplos de retângulo incluem:

  • createRectangleFilled para um preenchimento sólido com Color.getRed()
  • addDrawingWithGradientFill para um GradientAxialShading preencher

Usar transparência alfa

createRectangleWithAlphaColorChannel aplica cores translúcidas com Color.fromArgb(...) para que os retângulos sobrepostos permaneçam visíveis.

Controlar a ordem z dos retângulos

  1. Crie um novo documento PDF Document.
  2. Adicione um Page ao documento.
  3. Defina o necessário Page tamanho.
  4. Adicione o configurado Rectangle formas na página de destino com a ordem z necessária.
  5. Salve o PDF de saída Document.
public static void controlZOrderOfRectangle(Path outputFile) {
    try (Document document = new Document()) {
        Page page = document.getPages().add();
        page.setPageSize(375, 300);
        page.getPageInfo().getMargin().setLeft(0);
        page.getPageInfo().getMargin().setTop(0);

        addRectangleToPage(page, 50, 40, 60, 40, Color.getRed(), 2);
        addRectangleToPage(page, 20, 20, 30, 30, Color.getBlue(), 1);
        addRectangleToPage(page, 40, 40, 60, 30, Color.getGreen(), 0);

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