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

Posted

技术标签:

【中文标题】如何使用 iText 为我的 (pdf-) 文本添加背景颜色以使用 Java 创建它【英文标题】:How can I add a background color to my (pdf-) text using iText to create it with Java 【发布时间】:2012-08-14 18:42:44 【问题描述】:

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

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

这是一个简单的代码 sn-p,它基本上显示了我现在正在用 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();


我增加了将我的数据源中的文本添加到此方法的可能性,它确实工作得很好。结果对我来说看起来很有希望,所以目前我只剩下一项任务:

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

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

如果可能:您能否修改我的示例,为添加的示例文本添加背景颜色?我猜我和其他人(将来可能会阅读此主题的人)同样的问题)将从中受益最多。

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

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

【问题讨论】:

【参考方案1】:

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

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

您在一个块中定义您的文本(块只是最小的一段文本),并为这个块提供您的文本以及字体(其中还包括文本的大小)。在您的块上,您可以设置背景颜色,总体而言,您将使用显示的“showTextAligned”方法将其添加到文档中。

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

【讨论】:

【参考方案2】:

使用setBackgroundColor()方法

在此处查看此示例:

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

【讨论】:

如何在上面显示的代码中使用 setBackgroundColor() 方法?刚刚尝试了这个例子,它看起来像这样只能与表格一起使用?我还没有使用表格。这是否意味着我需要一种不同的方式来在我的 pdf 中定位文本,或者我也可以在我的代码中使用这种方法?在此示例中,我看不到如何将文本放置在特定的 x 和 y 坐标处。请检查我给定的代码示例。不过,感谢您的建议。 添加答案时不要链接到外部代码。如果链接因任何原因过期,那么它就会成为一个问题......

以上是关于如何使用 iText 为我的 (pdf-) 文本添加背景颜色以使用 Java 创建它的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 iText 7 使下划线文本可访问

如何将背景颜色添加到GridView的最后一行

如何运用Java组件itext生成pdf

如何运用Java组件itext生成pdf

如何使用iText返回PDF

如何使用 iText7 检测 PDF 中的 fontawesome 图标