【问题标题】:Add Background Image and Add Text on the Image添加背景图像并在图像上添加文本
【发布时间】:2013-07-29 02:34:52
【问题描述】:

我是 iText 库的新手。我的要求是我的 Servlet 将创建一个标记表(PDF)。它将图像添加到文档的完整页面,并在文档图像的特定位置添加文本。

请帮忙?

【问题讨论】:

  • 本书iText in Action — 2nd Edition 是任何使用iText 的人的绝佳资源。您还可以在该网站上找到本书中所有示例的来源。此外,您可以在publisher's site 上找到 2 个重要的示例章节免费下载。
  • 这是我的函数private static void addContent(PdfContentByte canvas, PdfContentByte text, Document document) { Image img = Image.getInstance("07.png"); img.scaleToFit(PageSize.A4.height(), PageSize.A4.width()); img.setAbsolutePosition(1, 1); canvas.addImage(img); canvas.saveState(); canvas.setCMYKColorFill(0x00, 0x00, 0x00, 0x80); BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.EMBEDDED); text.beginText(); text.setFontAndSize(bf, 18); text.lineTo(1, 1); text.showText("This is Test"); text.endText(); document.add(img);}
  • 图像已加载,但我无法在特定位置设置文本

标签: java servlets pdf-generation itext


【解决方案1】:

不清楚参数text 是关于什么的。也许您选择了图片下方的直接内容,但这不是主要问题。

您一定阅读过一些文档,因为您使用的是beginText()setFontAndSize()showText()endText(),但您没有很好地阅读文档,因为:

(1) 您首先使用 lineTo() 而不使用 moveTo(),然后使用 stroke()。换句话说:您正在创建一条从未绘制过的奇怪路径。

(2) 您使用showText(),但我没有看到您在任何地方为文本定义坐标。你的 setTextMatrix() 方法发生了什么?

(3) 你是新手,但不要使用简单的代码,例如:

ColumnText.showTextAligned(canvas, Element.ALIGN_LEFT,
    new Phrase("This is a test"), 100, 100, 0);

似乎你想在学会走路之前就能够跑步。

另外:您可能使用的是旧版本的 iText,因为您没有提到在文本块中使用非法语句 lineTo() 时会引发异常。您不能在 beginText()/endText() 序列中使用 lineTo()

请按照 mkl 给出的建议,先阅读文档。

【讨论】:

    猜你喜欢
    • 2021-05-22
    • 2015-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-13
    • 1970-01-01
    • 1970-01-01
    • 2011-02-25
    相关资源
    最近更新 更多