gpt4 book ai didi

java - 使用java创建PDF

转载 作者:行者123 更新时间:2023-12-02 08:02:26 27 4
gpt4 key购买 nike

嗨,我正在使用 java 创建 pdf 文件。我需要有这样的输出:

t
h this is text 1
i this is text 2
s
i
s
h
t
t

这意味着表格外有一个以垂直形式显示的文本。我写了这样的代码:

PdfWriter.getInstance(document, new FileOutputStream("check.pdf"));
document.open();
Font cellFont = FontFactory.getFont(FontFactory.TIMES_BOLD, 6, Font.BOLD);
PdfPTable table = new PdfPTable(8);
table.getDefaultCell().setBorder(1);
table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER);
PdfPCell cell = new PdfPCell(new Phrase("This is the text 1", cellFont));
cell.setColspan(8);
cell.setBorder(0);
cell.setHorizontalAlignment(3);
table.addCell(cell);
cell = new PdfPCell(new Phrase("This is the text 2", cellFont));
cell.setColspan(8);
cell.setBorder(0);
cell.setHorizontalAlignment(3);
table.addCell(cell);

document.add(table);
document.close ();

输出如下:

this is text 1
this is text 2

谁能告诉我如何修改这段代码以获得我想要的输出

最佳答案

根据有限的信息,我不能完全理解您的需求。不管怎样,你几乎总能找到解决方法并实现你想要的。您需要的是 Rowspan,这不是一个有效的方法(出于正当的原因)。此行跨度可以通过在表格单元格内“嵌套”表格来实现。我编写了一个快速示例,如下所示:

String text1 = "This is the text 1";
String text2 = "This is the text 2";

Document document = new Document();

PdfWriter.getInstance(document, new FileOutputStream(fileName));
document.open();
Font cellFont = FontFactory.getFont(FontFactory.TIMES_BOLD, 14, Font.BOLD);

PdfPTable table = new PdfPTable(8);
table.getDefaultCell().setBorder(0);


PdfPTable nestedTable1 = new PdfPTable(1);
nestedTable1.getDefaultCell().setBorder(0);
nestedTable1.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER);
nestedTable1.getDefaultCell().setVerticalAlignment(Element.ALIGN_CENTER);

for(int i=0;i<text1.length();i++) {
PdfPCell nestedCell = new PdfPCell(new Phrase("" + text1.charAt(i), cellFont));
nestedCell.setBorder(0);
nestedTable1.addCell(nestedCell);
}

PdfPTable nestedTable2 = new PdfPTable(1);
nestedTable2.getDefaultCell().setBorder(0);
nestedTable2.getDefaultCell().setHorizontalAlignment(Element.ALIGN_LEFT);
nestedTable2.getDefaultCell().setVerticalAlignment(Element.ALIGN_CENTER);

PdfPCell nestedCell1 = new PdfPCell(new Phrase(text1, cellFont));
nestedCell1.setBorder(0);
PdfPCell nestedCell2 = new PdfPCell(new Phrase(text2, cellFont));
nestedCell2.setBorder(0);

nestedTable2.addCell(nestedCell1);
nestedTable2.addCell(nestedCell2);

PdfPCell cell1 = new PdfPCell(nestedTable1);
cell1.setBorder(0);
cell1.setColspan(1);

PdfPCell cell2 = new PdfPCell(nestedTable2);
cell2.setBorder(0);
cell2.setColspan(7);

table.addCell(cell1);
table.addCell(cell2);

document.add(table);
document.close ();

pdf 输出如下所示: enter image description here

关于java - 使用java创建PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8710439/

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