我想对齐Chunk
左侧和右侧。此外,每个Chunk
都有不同的格式,您可以在图片中看到。
我尝试以下代码:
Chunk invoiceid = new Chunk("Invoice ID: ", font9BoldDARK_GRAY);
Chunk invoiceidvalue = new Chunk("value from database", font10NoramlBlack);
Chunk inoicdate = new Chunk("Invoice Date: ", font9BoldDARK_GRAY);
Chunk inoicedatevalue = new Chunk(new SimpleDateFormat("MMMM dd yyyy").format(new Date()), font10NoramlBlack);// get From database
Paragraph invoiceParagraph = new Paragraph();
invoiceParagraph.setTabSettings(new TabSettings(325f));
invoiceParagraph.add(invoiceid);
invoiceParagraph.add(invoiceidvalue);
invoiceParagraph1.add(Chunk.TABBING);
invoiceParagraph1.add(inoicdate1);
invoiceParagraph1.add(inoicedatevalue1);
invoiceParagraph1.setAlignment(Element.ALIGN_JUSTIFIED);
pdfdocument.add(invoiceParagraph1);
答案 0 :(得分:1)
正确的方法是使用iText 7.阅读构建基块教程的chapter 3,了解如何创建如下所示的PDF:
实现这一目标的代码非常简单:
public void createPdf(String dest) throws IOException {
// create a low-level document
PdfDocument pdf = new PdfDocument(new PdfWriter(dest));
// create a high-level document
Document document = new Document(pdf);
// create a TabStop array
List<TabStop> tabstops = new ArrayList<TabStop>();
// don't forget to make a tab stop that aligns to the right
tabstops.add(new TabStop(325, TabAlignment.RIGHT));
// add paragraphs with Tab objects to the high-level document
document.add(new Paragraph().addTabStops(tabstops)
.add("Text to the left").add(new Tab()).add("Text to the right"));
document.add(new Paragraph().addTabStops(tabstops)
.add("ABCD").add(new Tab()).add("EFGH"));
document.add(new Paragraph().addTabStops(tabstops)
.add("01234").add(new Tab()).add("56789"));
document.add(new Paragraph().addTabStops(tabstops)
.add("iText 5 is old").add(new Tab()).add("iText 7 is new"));
// close the document
document.close();
}
在你说我不认识代码之前,让我告诉你你是对的:iText完全被重写了。现在,代码更易于创建,更易于阅读。
更新:您使用的是免费用户不再支持的旧版iText 5版本(仅适用于付费客户)。正如2009年的书&#34; iText in Action - Second Edition&#34;中所述,您创建了glue
,如下所示:
Chunk glue = new Chunk(new VerticalPositionMark())
然后你在这个Paragraph
中使用了这个胶水:
Paragraph p = new Paragraph();
p.add("Text to the left");
p.add(glue);
p.add("Text to the right");
这样,您确实可以避免在iText 5中使用标签。
答案 1 :(得分:0)
这对我有用:
class Test {
private:
static int count;
static Test* arr;
public:
int num;
Test() {}
Test(int val) : num(val) {
arr[count] = *this;
count++;
}
~Test() {
delete[] arr;
}
void print() {
for (int a = 0; a <= count - 1; a++) {
std::cout << arr[a].num << std::endl;
}
}
};
int Test::count = 0;
Test* Test::arr = new Test[2];
int main(int argc, char** argv) {
Test t1(10);
Test t2(20);
t2.print();
return 0;
}