gpt4 book ai didi

java - 使用 iText 在 Java 中生成 PDF。支持自由流动的文本

转载 作者:行者123 更新时间:2023-12-01 16:11:10 25 4
gpt4 key购买 nike

我们有需要由网络应用程序生成的具有以下性质的 pdf 模板:

示例段落:

亲爱的{customer.name},

您的律师 {customer.lawyer.name} 已就您的帐户 {customer.account.number} 的事宜与我们联系,请求立即关闭该帐户。

...

上面提到的 {...} 字段用于容纳作为占位符放入的各种 acro 字段,以便可以用数据填充它们。

但问题是 {customer.lawyer.name} 字段的长度可能不同,从 10 个字符到 50 个字符,

使用 iText,我们如何为上述模板生成 pdf,以便可以容纳不同长度的变量?甚至可以适本地环绕文本?

最佳答案

我使用 iText 列来布局字母。这是我工作中的一个例子。请注意,我只是将其输入到 Stack Overflow 中,尚未对其进行编译或测试。

想象一个文件,其中一行中的两个换行符表示一个段落,否则文本会被文本编辑器换行。下面的类有一个名为“generate”的方法,该方法读取文件并生成 US Letter 大小的 PDF,顶部和底部的边距为 1 英寸,每侧边距为 1 1/2 英寸。

/** Generates a letter. */
public class LetterGenerator
{
/** One inch is 72 points. */
private final static int INCH = 72;

/** Generate a letter. */
public void generate() throws DocumentException, IOException
{
BufferedReader in = new BufferedReader(new FileReader("letter.txt"));
Document document = new Document(PageSize.LETTER);
PdfWriter.getInstance(document, new FileOutputStream("letter.pdf"));
PdfContentByte cb = writer.getDirectContent();
ColumnText ct = new ColumnText(cb);
String para;
int spacingBefore = 0;
while ((para = in.readLine()) != null)
{
line = line.trim();
if (line.length() != 0)
{
// Shekhar, do your place-holder replacement here.
Paragraph p = new Paragraph(line);
p.setSpacingBefore(spacingBefore);
ct.addElement(p);
spacingBefore = 8;
}
}
ct.setSimpleColumn(INCH, INCH * 1.5f, 7.5f * INCH, 9.5f * INCH);
int status = ColumnText.START_COLUMN;
while ((status & ColumnText.NO_MORE_TEXT) == 0)
{
status = ct.go();
ct.setYLine(PageSize.LETTER.getHeight() - INCH);
ct.setSimpleColumn(INCH, INCH * 1.5f, 7.5f * INCH, 9.5f * INCH);
document.newPage();
}
document.close();
}
}

我一辈子都不记得为什么要重置 Y 线。

iText 是一个不错的库。我通过阅读 iText in Action 书中的教程学到了大部分关于它的知识。

http://developers.itextpdf.com/examples/

不幸的是,我从来没有抽出时间去买这本书。

关于java - 使用 iText 在 Java 中生成 PDF。支持自由流动的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1182422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com