有一个带边框的PageEvent也为整个页面应用背景颜色,但是当此PageEvent应用了“ createPDF”的内容时,它会隐藏。
public class BlackBorder extends PdfPageEventHelper {
@Override
public void onEndPage(PdfWriter writer, Document document) {
PdfContentByte canvas = writer.getDirectContent();
Rectangle rect = document.getPageSize();
rect.setBackgroundColor(new BaseColor(234,234,234,0));
rect.setBorder(Rectangle.BOX);
rect.setBorderWidth(10);
rect.setBorderColor(BaseColor.BLACK);
rect.setUseVariableBorders(true);
canvas.rectangle(rect);
}
}
//Method of createPDF.
public void createPdf(String filename) throws IOException, DocumentException {
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(filename));
BlackBorder event_border = new BlackBorder();
writer.setPageEvent(event_border);
document.open();
Chunk chunk = new Chunk(String.valueOf(FileCounter)+"No"+String.valueOf(FileCounter));
chunk.setTextRenderMode(PdfContentByte.TEXT_RENDER_MODE_FILL_STROKE, 0.3f, BaseColor.CYAN);
document.add(chunk);
document.close();
}
如果我删除rect.setBackgroundColor(new BaseColor(234,234,234,0))
块将可见。我也尝试过背景事件,如:
public class Background extends PdfPageEventHelper {
@Override
public void onEndPage(PdfWriter writer, Document document) {
PdfContentByte canvas = writer.getDirectContent();
Rectangle rect = document.getPageSize();
rect.setBackgroundColor(new BaseColor(234,234,234,0));
canvas.rectangle(rect);
}
}
并添加
Background event = new Background();
writer.setPageEvent(event);
在createPdf方法中,但应用无法生成任何PDF文件!
如果您链接我如何拥有多个PageEvent(如具有水印,hearer-footer,背景等),这将非常有必要。我尝试了其中的一些,但我认为它们相互覆盖。
谢谢..
矩形覆盖了内容,因为您是用这种方式编写的。
如果要在现有内容下添加不透明矩形,请替换:
PdfContentByte canvas = writer.getDirectContent();
和:
PdfContentByte canvas = writer.getDirectContentUnder();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句