如何使用iText为我的(pdf-)文本添加背景颜色以使用Java创建它

时间:2012-08-18 17:21:52

标签: java pdf layout itext background-color

首先:我对用于创建pdf的框架的了解并不是最好的,请在回答时牢记这一点。

我需要一个框架/库,我可以用java创建pdf文件,并且(重要的!)将文本放在某些x和y坐标处。经过大量的研究,我经历过,我可以通过iText实现这一点。

这是一个简单的代码片段,基本上用iText中的文本显示我正在做的事情。您只需将其复制到您的编程环境中,您只需要iText jar(可在此下载:http://sourceforge.net/projects/itext/files/latest/download?source=files

import java.io.FileOutputStream;

import com.itextpdf.text.Document;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfWriter;

public class PDFTesting {

public static void main(String[] args) {
    Document document = new Document();
    try {
        PdfWriter writer = PdfWriter.getInstance(document,
                new FileOutputStream("output.pdf"));
        document.open();
        PdfContentByte cb = writer.getDirectContent();

        int x = 100; 
        int y = 500; 

        String text = "Hello"; 

        // now we can place content elements on the page
        BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
        cb.saveState();
        cb.beginText();
        cb.moveText(x, y);
        cb.setFontAndSize(bf, 12);
        cb.showText(text);
        cb.endText();
        cb.restoreState();

    } catch (Exception e) {
    }

    document.close();
}
}

我添加了将我的数据源中的文本添加到此方法的可能性,并且它确实非常有用。结果对我来说非常有希望,因此我现在只剩下一项任务了:

我需要在文字中添加特定的背景颜色(不是字体颜色!),我正在移动并放置在上面显示的方法中。

我的研究没有向我提供任何有关此任务的初学友好信息,所以如果你能帮助我解决这个问题,我会非常高兴。

如果可能的话:你可以通过为添加的示例文本添加背景颜色的方式修改我的示例吗?我想我和其他人(将来可能正在阅读此主题的人同样的问题)将从中受益最多。

如果您需要更多信息或有其他建议,请随时与我联系。

感谢您的每一个回答,并认为您与我分享。

2 个答案:

答案 0 :(得分:3)

我找到了问题的解决方案。

Chunk textAsChunk = new Chunk(text, textFont);
textAsChunk.setBackground(new BaseColor(120, 200, 50));

ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, new Phrase(textAsChunk), x, y, 0);

您可以在一个块中定义文本(块只是最小的一段文本),并为此块提供文本和字体(还包括文本的大小)。在您的块上,您可以设置backgroundcolor,并且您将整体添加到Document中,并显示“showTextAligned”-Method。

x和y在这里指定坐标,cb代表PdfContentByte。

答案 1 :(得分:-1)

使用setBackgroundColor()方法

请在此处查看此示例:

http://www.kodejava.org/examples/837.html