2016-12-22 2 views
0

Я пытаюсь добавить цвет фона на страницу. У меня есть размер страницы A4 с краем 1/3 дюйма сверху, слева, справа от страницы. нижний край - 1 дюйм.Как добавить цвет фона страницы itext 5 без поля

Rectangle a4 = PageSize.A4; 
a4.setBackgroundColor(BaseColor.CYAN); 
Document document = new Document(a4,24,24,24,72); 

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

ответ

1

Для этого вам необходимо использовать PdfPageEvent. Посмотрите на ответ на этот вопрос: Change the color of pdf pages alternatively using iText pdf in java

В этом примере мы создадим цветной фон, который охватывает всю страницу:

public class Background extends PdfPageEventHelper { 
    @Override 
    public void onEndPage(PdfWriter writer, Document document) { 
     int pagenumber = writer.getPageNumber(); 
     if (pagenumber % 2 == 1 && pagenumber != 1) 
      return; 
     PdfContentByte canvas = writer.getDirectContentUnder(); 
     Rectangle rect = document.getPageSize(); 
     canvas.setColorFill(pagenumber < 3 ? BaseColor.BLUE : BaseColor.LIGHT_GRAY); 
     canvas.rectangle(rect.getLeft(), rect.getBottom(), rect.getWidth(), rect.getHeight()); 
     canvas.fill(); 
    } 
} 

Теперь давайте адаптировать этот пример:

public class Background extends PdfPageEventHelper { 
    @Override 
    public void onEndPage(PdfWriter writer, Document document) { 
     PdfContentByte canvas = writer.getDirectContentUnder(); 
     Rectangle rect = document.getPageSize(); 
     canvas.setColorFill(BaseColor.BLUE); 
     canvas.rectangle(rect.getLeft() + 36, rect.getBottom() + 36, rect.getWidth() - 72, rect.getHeight() - 72); 
     canvas.fill(); 
    } 
} 

Изменив параметры метода rectangle(), мы представили пометку на 36 единиц пользователей на каждой стороне.

Очевидно, что вам нужно объявить событие страницы в PdfWriter:

PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(filename)); 
Background event = new Background(); 
writer.setPageEvent(event); 
+0

Спасибо, что решить мою проблему – Harshal

Смежные вопросы