为了账号安全,请及时绑定邮箱和手机立即绑定

带有黑色字体的 iText 矩形

带有黑色字体的 iText 矩形

慕沐林林 2022-06-23 10:47:27
我正在尝试在 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 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

我所要做的就是先填充矩形,然后在后面添加段落


   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);

    }

}


查看完整回答
反对 回复 2022-06-23
  • 1 回答
  • 0 关注
  • 116 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号