Прямоугольник iText с черным шрифтом - PullRequest
0 голосов
/ 16 февраля 2019

Я пытаюсь создать прямоугольник в iText, который имеет цвет фона и текст.

Если я запускаю код как есть, я получаю текст, но не цвет фона.Вызов canvas.fillStroke () заполняет цвет фона, но не отображает текст.

Как получить цвет фона и шрифт?

public void createPdf() {

    try(ByteArrayOutputStream os = new ByteArrayOutputStream()) {

        try(PdfWriter writer = new PdfWriter(os)) {
            try(PdfDocument pdf = new PdfDocument(writer)) {
                try (Document document = new Document(pdf)) {
                    PdfPage page = pdf.addNewPage();
                    PageSize ps = pdf.getDefaultPageSize();


                    Text green = new Text("This text is green. ")
                            .setFontColor(new DeviceRgb(27,255,0));

                    Paragraph p = new Paragraph("This is the text added in the rectangle.");
                    p.add(green);

                    PdfCanvas canvas = new PdfCanvas(pdf.getFirstPage());
                    Color orange = new DeviceRgb(255, 100, 20);
                    canvas.setFillColor(orange);

                    Rectangle rect = new Rectangle(1f,ps.getHeight()-101f,ps.getWidth()-1f,100f );

                    new Canvas(canvas, pdf, rect)
                            .add(p);
                    canvas.rectangle(rect);
                   // canvas.fillStroke();

                }
            }
        }
        Files.write(new File("C:\\users\\tim\\file.pdf").toPath(), os.toByteArray(), StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING);

    }  catch(IOException e) {
        throw new RuntimeException(e);
    }
}

1 Ответ

0 голосов
/ 16 февраля 2019

Благодаря комментарию от mkl

Все, что мне нужно было сделать, это сначала заполнить прямоугольник, а затем добавить абзац после

   public void createPdf() {

    try(ByteArrayOutputStream os = new ByteArrayOutputStream()) {

        try(PdfWriter writer = new PdfWriter(os)) {
            try(PdfDocument pdf = new PdfDocument(writer)) {
                try (Document document = new Document(pdf)) {
                    PdfPage page = pdf.addNewPage();
                    PageSize ps = pdf.getDefaultPageSize();


                    Text green = new Text("This text is green. ")
                            .setFontColor(new DeviceRgb(27,255,0));

                    Paragraph p = new Paragraph("This is the text added in the rectangle.");
                    p.add(green);

                    PdfCanvas canvas = new PdfCanvas(pdf.getFirstPage());
                    Color orange = new DeviceRgb(255, 100, 20);
                    canvas.setFillColor(orange);

                    Rectangle rect = new Rectangle(1f,ps.getHeight()-101f,ps.getWidth()-1f,100f );

                    Canvas rectangleCanvas = new Canvas(canvas, pdf, rect);
                    canvas.rectangle(rect);
                    canvas.fillStroke();
                    rectangleCanvas.add(p);
                }
            }
        }
        Files.write(new File("C:\\users\\tim\\file.pdf").toPath(), os.toByteArray(), StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING);

    }  catch(IOException e) {
        throw new RuntimeException(e);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...