gpt4 book ai didi

java - 如何使用 iText 在 (x,y) 位置的文档中将 PdfPTable 添加到 HTML 字符串?

转载 作者:行者123 更新时间:2023-11-30 03:13:39 28 4
gpt4 key购买 nike

我正在使用 iText 进行 html 到 pdf 的转换

我已经在使用具有以下内容代码的 HTMLWorker 类(已弃用):

    String htmlString = "<html><body> This is my Project <table width= '50%' border='0' align='left' cellpadding='0' cellspacing='0'><tr><td>{VERTICALTEXT}</td></tr></table></body></html>";

OutputStream file = new FileOutputStream(new File("C:\\Test.pdf"));
Document document = new Document();
PdfWriter.getInstance(document, file);
document.open();
HTMLWorker htmlWorker = new HTMLWorker(document);
htmlWorker.parse(new StringReader(htmlString ));
document.close();
file.close();
}

现在我想用一些字符串动态替换 {VERTICALTEXT}

所以我进一步添加了下面的代码:

PdfPTable table = null;
PdfPCell cell;
cell = new PdfPCell(new Phrase("My Vertical Text"));
cell.setRotation(90);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
table.addCell(cell);
String verticalLoc = table.toString(); //this variable should hold the text "My Vertical Text" in 90 degree rotated form.

HashMap<String, String> map = new HashMap<String, String>();
map.put("VERTICALTEXT", verticalLoc);

html = new String(buffer);

for (HashMap.Entry<String, String> e : map.entrySet())
{
String value = e.getValue() != null ? e.getValue():"";
html = html.replace("{" + e.getKey() + "}", value);
}

htmlWorker.parse(new StringReader(htmlStr));

在输出中:

{VERTICALTEXT} 替换为 com.itextpdf.text.pdf.PdfPTable@41d62bcO

期望的输出:

{VERTICALTEXT} 应替换为旋转 90 度形式的 My Vertical Text

最佳答案

这是想出并测试过的解决方案 -

Java文件相关代码:

static PdfWriter writer;
writer = PdfWriter.getInstance(document, new FileOutputStream(FILE));
document.open();
PdfPTable table = new PdfPTable(2);
PdfPCell cell;
cell = new PdfPCell(new Phrase("My Vertical Text"));
cell.setRotation(90);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
table.addCell(cell);
htmlWorker.parse(new StringReader(htmlStr));
table.setTotalWidth(400f);
table.writeSelectedRows( 0, -1, 80, 330, writer.getDirectContent());

因此方法 writeSelectedRows 的神奇之处在于将表格放置到 (x, y) 位置。

在哪里,

x = 80
y = 330

有关 writeSelectedRows 的完整详细信息.

这将帮助那些在 itext 定位方面面临同样问题的人。

关于java - 如何使用 iText 在 (x,y) 位置的文档中将 PdfPTable 添加到 HTML 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20516989/

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