gpt4 book ai didi

java - 使用 iText XMLWorker 对齐 PdfPTable 单元格内的文本

转载 作者:行者123 更新时间:2023-11-30 02:37:29 26 4
gpt4 key购买 nike

我尝试使用以下代码调整 PdfPTable 单元格内的文本:

                    PdfPTable pTable = new PdfPTable(1);
pTable.setWidthPercentage(98f);
pTable.setSpacingBefore(10f);
pTable.setHorizontalAlignment(Element.ALIGN_JUSTIFIED_ALL);

String content=getContent();

list =XMLWorkerHelper.parseToElementList(content);
for (Element element : list) {
cell = new PdfPCell();
cell.setHorizontalAlignment(PdfPCell.ALIGN_JUSTIFIED_ALL);
cell.setVerticalAlignment(PdfPCell.ALIGN_JUSTIFIED_ALL);
cell.setNoWrap(false);
cell.setBorderWidth(0);
cell.addElement(element);
pTable.addCell(cell);
}
pTable.setSplitLate(false);
paragraph.add(pTable);

但是文本是左对齐的。我成功地使用 Paragraph 对象而不是表格,但我需要在表格中显示文本。

最佳答案

.NET,但可以轻松转换为 Java...

既然你正在解析 [X]HTML并使用 XMLWorkerHelper ,对齐文本的一个简单方法是使用 overloaded parseXHtml method并设置CSS塑造自己的风格。 HTML 示例:

<html><head>
<title>Test HTML</title>
<style type='text/css'>
td {
border:1px solid #eaeaea;
padding: 4px;
text-align: right;
font-size: 1.4em;
}
</style>
</head><body>
<table width='50%'><tr>
<td>
but I can not see justification of text.
I tried using only paragraph without using table,
and it does justification but I need to display
things in table
</td></tr></table>
</body></html>

解析代码:

// CSS specificity selector: apply style below without changing existing styles
string css = "tr td { text-align: justify; }";

using (var memoryStream = new MemoryStream())
{
using (var document = new Document())
{
PdfWriter writer = PdfWriter.GetInstance(
document, memoryStream
);
document.Open();
using (var htmlStream = new MemoryStream(Encoding.UTF8.GetBytes(html)))
{
using (var cssStream = new MemoryStream(Encoding.UTF8.GetBytes(css)))
{
XMLWorkerHelper.GetInstance().ParseXHtml(
writer, document, htmlStream, cssStream
);
}
}
}
File.WriteAllBytes(OUTPUT, memoryStream.ToArray());
}

请注意XMLWorkerHelper足够聪明,可以应用 CSS Specificity调用 ParseXHtml() 时样式正确:

  1. 维护 <style> 中指定的样式.
  2. 更改文本对齐方式 rightjustify .

输出PDF:

enter image description here

关于java - 使用 iText XMLWorker 对齐 PdfPTable 单元格内的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42674940/

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