java: create pdf using itextpdf 2.1.7 or 5.2.1 or 7.2.1 Library

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
/**
 * 版权所有 2022 涂聚文有限公司
 * 许可信息查看:
 * 描述:
 * IDE:IntelliJ IDEA 2021.2.3
 * 数据库:MSSQL Server 2019
 * OS:windows 10 x64
 * 历史版本: JDK 14.02
 * 2022-1-12 创建者 geovindu
 * 2022-1-15 添加 Lambda
 * 2022-1-15 修改:date
 * 接口类 mssql-jdbc-9.4.1.jre16.jar.
 *
 * 2022-1-15 修改者:Geovin Du
 * 生成API帮助文档的指令:
 *javadoc - -encoding Utf-8 -d apidoc iTextHelper.java
 https://mvnrepository.com/artifact/com.itextpdf
 https://mvnrepository.com/artifact/com.lowagie/itext/2.1.7
 https://mvnrepository.com/artifact/com.lowagie/itext/4.2.1
 
 https://sourceforge.net/projects/itext/
 https://github.com/itext
 
 java write stringbuilder to file
 http://guava-libraries.googlecode.com/
 https://github.com/google/guava
 Files.write(stringBuilder, file, Charsets.UTF_8)
 
 http://commons.apache.org/io/
 You could use the Apache Commons IO library, which gives you FileUtils:
 
 FileUtils.writeStringToFile(file, stringBuilder.toString(), Charset.forName("UTF-8"))
 
 
 https://github.com/weiyeh/iText-4.2.0
 https://github.com/ymasory/iText-4.2.0
 https://mvnrepository.com/artifact/com.itextpdf/html2pdf
 http://www.java2s.com/Code/Jar/i/Downloaditextpdf541jar.htm
 http://www.java2s.com/Code/Jar/i/Downloaditextrtf215jar.htm
 https://mvnrepository.com/artifact/com.lowagie/itext-rtf/2.1.7
 http://www.java2s.com/Code/Jar/i/Downloaditextasian217jar.htm
 
 https://mvnrepository.com/artifact/com.itextpdf/itext-asian/5.2.0
 https://mvnrepository.com/artifact/com.itextpdf
 https://mvnrepository.com/artifact/com.itextpdf.tool
 http://www.java2s.com/Code/Jar/i/itext.htm
  
 * */
 
 
package Geovin.Common;
 
import java.awt.Color;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/*
5.4.1
import com.itextpdf.io.*;
import com.itextpdf.pdfa.*;
import com.itextpdf.test.*;
import com.itextpdf.commons.*;
import com.itextpdf.pdfa.PdfADocument;
import com.itextpdf.barcodes.*;
import com.itextpdf.svg.*;
import com.itextpdf.forms.*;
import com.itextpdf.kernel.*;
import com.itextpdf.layout.*;
import com.itextpdf.layout.font.*;
import com.itextpdf.styledxmlparser.*;
import com.itextpdf.signatures.*;
import com.itextpdf.text.*;
 
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.Image;
 
import com.itextpdf.text.Phrase;
import com.itextpdf.text.Header;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.ColumnText;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.text.pdf.TextField;
import com.itextpdf.text.*;
*/
 
 
import Geovin.Model.Person;
import com.lowagie.text.BadElementException;
import com.lowagie.text.Cell;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Element;
import com.lowagie.text.Font;
import com.lowagie.text.PageSize;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Phrase;
import com.lowagie.text.Table;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfWriter;
import com.lowagie.tools.*;
import com.lowagie.text.pdf.fonts.*;
 
/**
 *itext-rtf 2.1.7
 * itextasian 2.1.7
 *itextpdf 2.1.7
 * @author geovindu
 * @version 1.0
 * */
 
public class iTextHelper {
 
 
 
    /**
     *
     *
     *
     * */
    public  void Create() throws DocumentException, IOException
    {
        // 创建Document对象(页面的大小为A4,左、右、上、下的页边距为10)
        Document document = new Document(PageSize.A4, 10, 10, 10, 10);
        // 建立书写器
        PdfWriter.getInstance(document, new FileOutputStream("src/geovindu.PDF"));
        // 设置相关的参数
        setParameters(document, "开发者测试", "涂聚文测试", "测试 开发者 调试", "geovindu", "geovindu");
        // 打开文档
        document.open();
        // 使用iTextAsian.jar中的字体
        BaseFont baseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
        Font font = new Font(baseFont);
 
        List<Person> personList = new ArrayList<Person>();
        // 循环添加对象
        for (int i = 0; i < 5; i++) {
            Person user = new Person();
            user.setLastName("geovindu:"+i);
            user.setFirstName("开发者测试"+i);
            user.setSex("测试"+i);
            personList.add(user);
        }
 
        Table table = setTable(personList);
        document.add(new Paragraph("用户信息如下:",setFont()));
        document.add(table);
 
        // 关闭文档
        document.close();
    }
 
 
     /**
      *
      *
      * */
     public Table setTable(List<Person> personList) throws BadElementException{
        //创建一个有3列的表格
        Table table = new Table(3);
        table.setBorderWidth(1);
        table.setBorderColor(new Color(0, 0, 255));
        table.setPadding(5);
        table.setSpacing(5);
        // 创建表头
        Cell cell1 = setTableHeader("姓");
        Cell cell2 = setTableHeader("名");
        Cell cell3 = setTableHeader("性别");
        table.addCell(cell1);
        table.addCell(cell2);
        table.addCell(cell3);
        // 添加此代码后每页都会显示表头
        table.endHeaders();
 
 
        for (int i = 0; i < personList.size(); i++) {
            Cell celli1 = setTableHeader(personList.get(i).getLastName());
            Cell celli2 = setTableHeader(personList.get(i).getFirstName());
            Cell celli3 = setTableHeader(personList.get(i).getSex());
            table.addCell(celli1);
            table.addCell(celli2);
            table.addCell(celli3);
        }
 
        return table;
 
    }
 
    /**
     * itextasian 2.1.7
     *
     * */
    public  Font setFont(){
        BaseFont baseFont = null;
        try {
            baseFont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
        } catch (DocumentException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        Font font = new Font(baseFont, 8, Font.NORMAL,Color.BLUE);
        return font;
    }
    /**
     * 设置cell
     * @param name
     * @return
     * @throws BadElementException
     */
    public  Cell setTableHeader(String name) throws BadElementException {
 
        Cell cell = new Cell(new Phrase(name, setFont()));
        //单元格水平对齐方式
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        //单元格垂直对齐方式
        cell.setVerticalAlignment(Element.ALIGN_CENTER);
       //        cell.setHeader(true);
        //cell.setBackgroundColor(Color.RED);
        return cell;
 
    }
    /**
     * 设置相关参数
     * @param document
     * @return
     */
    public  Document setParameters(Document document,String title,String subject,String keywords,String author,
                                         String creator){
        // 设置标题
        document.addTitle(title);
        // 设置主题
        document.addSubject(subject);
        // 设置作者
        document.addKeywords(keywords);
        // 设置作者
        document.addAuthor(author);
        // 设置创建者
        document.addCreator(creator);
        // 设置生产者
        document.addProducer();
        // 设置创建日期
        document.addCreationDate();
 
        return document;
    }
 
 
 
 
}

  

https://api.itextpdf.com/iText5/java/5.5.9/

5.2.0

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
/**
 * 版权所有 2022 涂聚文有限公司
 * 许可信息查看:
 * 描述:
 * IDE:IntelliJ IDEA 2021.2.3
 * 数据库:MSSQL Server 2019
 * OS:windows 10 x64
 * 历史版本: JDK 14.02
 * 2022-1-12 创建者 geovindu
 * 2022-1-15 添加 Lambda
 * 2022-1-15 修改:date
 * 接口类 mssql-jdbc-9.4.1.jre16.jar.
 *
 * 2022-1-15 修改者:Geovin Du
 * 生成API帮助文档的指令:
 *javadoc - -encoding Utf-8 -d apidoc DuiTextPdfHelper.java
 *
 *
 https://mvnrepository.com/artifact/com.itextpdf
 https://mvnrepository.com/artifact/com.lowagie/itext/2.1.7
 https://mvnrepository.com/artifact/com.lowagie/itext/4.2.1
 
 https://sourceforge.net/projects/itext/
 https://github.com/itext
 
 java write stringbuilder to file
 http://guava-libraries.googlecode.com/
 https://github.com/google/guava
 Files.write(stringBuilder, file, Charsets.UTF_8)
 
 http://commons.apache.org/io/
 You could use the Apache Commons IO library, which gives you FileUtils:
 
 FileUtils.writeStringToFile(file, stringBuilder.toString(), Charset.forName("UTF-8"))
 
 
 https://github.com/weiyeh/iText-4.2.0
 https://github.com/ymasory/iText-4.2.0
 https://mvnrepository.com/artifact/com.itextpdf/html2pdf
 http://www.java2s.com/Code/Jar/i/Downloaditextpdf541jar.htm
 http://www.java2s.com/Code/Jar/i/Downloaditextrtf215jar.htm
 https://mvnrepository.com/artifact/com.lowagie/itext-rtf/2.1.7
 http://www.java2s.com/Code/Jar/i/Downloaditextasian217jar.htm
 https://mvnrepository.com/artifact/com.lowagie/itext
 https://mvnrepository.com/artifact/com.itextpdf/itext-asian/5.2.0
 https://mvnrepository.com/artifact/com.itextpdf
 https://mvnrepository.com/artifact/com.itextpdf.tool
 http://www.java2s.com/Code/Jar/i/itext.htm
 https://www.vogella.com/tutorials/JavaPDF/article.html
 * */
 
 
package Geovin.Common;
 
import java.awt.Color;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
 
import com.itextpdf.io.*;
import com.itextpdf.pdfa.*;
import com.itextpdf.test.*;
import com.itextpdf.pdfa.PdfADocument;
import com.itextpdf.barcodes.*;
import com.itextpdf.svg.*;
import com.itextpdf.forms.*;
import com.itextpdf.kernel.*;
import com.itextpdf.layout.*;
import com.itextpdf.layout.font.*;
import com.itextpdf.styledxmlparser.*;
import com.itextpdf.signatures.*;
import com.itextpdf.text.*;
 
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.Image;
 
import com.itextpdf.text.Phrase;
import com.itextpdf.text.Header;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.ColumnText;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.text.pdf.TextField;
 
 
import com.itextpdf.text.Anchor;
import com.itextpdf.text.BadElementException;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Chapter;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.List;
import com.itextpdf.text.ListItem;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.Section;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
 
 
/**
 * iText 5.2.0
 * @author geovindu
 * @version 1.0
 *
 *
 *
 * */
public class DuiTextPdfHelper {
 
    private static String FILE = "src/geovinduPdf.pdf";
    private static Font catFont = new Font(Font.FontFamily.TIMES_ROMAN, 18,
            Font.BOLD);
    private static Font redFont = new Font(Font.FontFamily.TIMES_ROMAN, 12,
            Font.NORMAL, BaseColor.RED);
    private static Font subFont = new Font(Font.FontFamily.TIMES_ROMAN, 16,
            Font.BOLD);
    private static Font smallBold = new Font(Font.FontFamily.TIMES_ROMAN, 12,
            Font.BOLD);
 
    public static void CreatePdf()
    {
        try {
            Document document = new Document();
            PdfWriter.getInstance(document, new FileOutputStream(FILE));
            document.open();
            addMetaData(document);
            addTitlePage(document);
            addContent(document);
            document.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    // iText allows to add metadata to the PDF which can be viewed in your Adobe
    // Reader
    // under File -> Properties
    private static void addMetaData(Document document) {
        document.addTitle("My first PDF");
        document.addSubject("Using iText");
        document.addKeywords("Java, PDF, iText");
        document.addAuthor("geovindu");
        document.addCreator("geovindu");
    }
 
    private static void addTitlePage(Document document)
            throws DocumentException {
        Paragraph preface = new Paragraph();
        // We add one empty line
        addEmptyLine(preface, 1);
        // Lets write a big header
        preface.add(new Paragraph("Title of the document", catFont));
 
        addEmptyLine(preface, 1);
        // Will create: Report generated by: _name, _date
        preface.add(new Paragraph(
                "Report generated by: " + System.getProperty("user.name") + ", " + new Date(), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
                smallBold));
        addEmptyLine(preface, 3);
        preface.add(new Paragraph(
                "This document describes something which is very important ",
                smallBold));
 
        addEmptyLine(preface, 8);
 
        preface.add(new Paragraph(
                "This document is a preliminary version and not subject to your license agreement or any other agreement with vogella.com ;-).",
                redFont));
 
        document.add(preface);
        // Start a new page
        document.newPage();
    }
 
    private static void addContent(Document document) throws DocumentException {
        Anchor anchor = new Anchor("First Chapter", catFont);
        anchor.setName("First Chapter");
 
        // Second parameter is the number of the chapter
        Chapter catPart = new Chapter(new Paragraph(anchor), 1);
 
        Paragraph subPara = new Paragraph("Subcategory 1", subFont);
        Section subCatPart = catPart.addSection(subPara);
        subCatPart.add(new Paragraph("Hello"));
 
        subPara = new Paragraph("Subcategory 2", subFont);
        subCatPart = catPart.addSection(subPara);
        subCatPart.add(new Paragraph("Paragraph 1"));
        subCatPart.add(new Paragraph("Paragraph 2"));
        subCatPart.add(new Paragraph("Paragraph 3"));
 
        // add a list
        createList(subCatPart);
        Paragraph paragraph = new Paragraph();
        addEmptyLine(paragraph, 5);
        subCatPart.add(paragraph);
 
        // add a table
        createTable(subCatPart);
 
        // now add all this to the document
        document.add(catPart);
 
        // Next section
        anchor = new Anchor("Second Chapter", catFont);
        anchor.setName("Second Chapter");
 
        // Second parameter is the number of the chapter
        catPart = new Chapter(new Paragraph(anchor), 1);
 
        subPara = new Paragraph("Subcategory", subFont);
        subCatPart = catPart.addSection(subPara);
        subCatPart.add(new Paragraph("This is a very important message"));
 
        // now add all this to the document
        document.add(catPart);
 
    }
 
    private static void createTable(Section subCatPart)
            throws BadElementException {
        PdfPTable table = new PdfPTable(3);
 
        // t.setBorderColor(BaseColor.GRAY);
        // t.setPadding(4);
        // t.setSpacing(4);
        // t.setBorderWidth(1);
 
        PdfPCell c1 = new PdfPCell(new Phrase("Table Header 1"));
        c1.setHorizontalAlignment(Element.ALIGN_CENTER);
        table.addCell(c1);
 
        c1 = new PdfPCell(new Phrase("Table Header 2"));
        c1.setHorizontalAlignment(Element.ALIGN_CENTER);
        table.addCell(c1);
 
        c1 = new PdfPCell(new Phrase("Table Header 3"));
        c1.setHorizontalAlignment(Element.ALIGN_CENTER);
        table.addCell(c1);
        table.setHeaderRows(1);
 
        table.addCell("1.0");
        table.addCell("1.1");
        table.addCell("1.2");
        table.addCell("2.1");
        table.addCell("2.2");
        table.addCell("2.3");
 
        subCatPart.add(table);
 
    }
 
    private static void createList(Section subCatPart) {
        List list = new List(true, false, 10);
        list.add(new ListItem("First point"));
        list.add(new ListItem("Second point"));
        list.add(new ListItem("Third point"));
        subCatPart.add(list);
    }
 
    private static void addEmptyLine(Paragraph paragraph, int number) {
        for (int i = 0; i < number; i++) {
            paragraph.add(new Paragraph(" "));
        }
    }
 
 
}

  

https://riptutorial.com/Download/itext.pdf

https://www.netjstech.com/2018/10/creating-pdf-in-java-using-itext.html

https://github.com/itext/i7js-examples/blob/develop/src/main/java/com/itextpdf/samples/sandbox/layout/ParagraphTextWithStyle.java

https://kb.itextsupport.com/home/it7kb/ebooks/itext-7-jump-start-tutorial-for-java/chapter-7-creating-pdf-ua-and-pdf-a-documents

https://www.tutorialspoint.com/itext/itext_adding_table.htm

https://api.itextpdf.com/iText7/java/

 7.2.7

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
/**
 * 版权所有 2021 涂聚文有限公司
 * 许可信息查看:
 * 描述:
 *
 * 数据库:Ms SQL server 2019
 * IDE: Eclipse IDE for Enterprise Java and Web Developers - 2021-09
 * OS: Windows 10 x64
 * IDE: Eclipse IDE for Enterprise Java and Web Developers - 2021-09
 * 历史版本: JDK 14.0.2
 * 2021-12-12 创建者 geovindu
 * 2021-12-15 添加 Lambda
 * 2021-12-15 修改:date
 * 接口类 mssql-jdbc-9.4.1.jre16.jar.
 * 数据库:MSSQL Server 2019
 * 2021-12-15 修改者:Geovin Du
 * 生成API帮助文档的指令:
 *javadoc - -encoding Utf-8 -d apidoc DuiTextPdfHelper.java
 *https://www.microsoft.com/en-us/software-download/windows10
 *https://github.com/PaddlePaddle/PaddleOCR
 *https://docs.microsoft.com/es-es/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-ver15
 *https://github.com/microsoft/mssql-jdbc/blob/main/README.md
 *oracle.jdbc.driver.OracleDriver
 *
 *1、打开idea安装目录的bin目录下的idea.exe.vmoption和idea64.exe.vmoption,在最后加上 -Dfile.encoding=utf-8
2、设置idea file编码。在菜单栏找到”File->settings->搜索File Encodeing,然后在IDE Encoding ,Project Encoding和Default encoding for properties files都设置为utf-8
3、设置idea server编码。在菜单栏找到”run->editconfigration” 找到”server”选项卡 设置 vm option为 -Dfile.encoding=utf-8
4、HELP->Edit Custom VM OPtions中加 -Dfile.encoding=utf-8 重启idea
 
 
 * */
 
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.*;
import java.util.ArrayList;
//import java.util.List;
import com.itextpdf.*;
import com.itextpdf.io.font.*;
import com.itextpdf.pdfa.*;
import com.itextpdf.kernel.*;
import com.itextpdf.kernel.pdf.*;
import com.itextpdf.io.font.constants.StandardFonts;
import com.itextpdf.kernel.colors.ColorConstants;
import com.itextpdf.kernel.font.PdfFont;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.element.Text;
import com.itextpdf.kernel.geom.PageSize;
import com.itextpdf.layout.element.Cell;
import com.itextpdf.layout.element.Table;
import com.itextpdf.layout.element.Image;
import com.itextpdf.layout.*;
import com.itextpdf.layout.element.List;
import com.itextpdf.layout.element.ListItem;
//import com.itextpdf.layout.property.ListNumberingType;
import com.itextpdf.layout.properties.*;
 
 
/**
 * itext 7.2.1
 * @author geovindu
 * @version 1.0
 *
 *
 * */
public class DuiTextPdfHelper {
     
     
     private static String FILE = "src/geovindu.pdf";
       //PdfFont catFont =PdfFontFactory.createFont(StandardFonts.HELVETICA_BOLD);// new Font(Font.FontFamily.TIMES_ROMAN, 18,Font.BOLD);
        //  PdfFont redFont =PdfFontFactory.createFont(StandardFonts.HELVETICA_BOLD);// new Font(Font.FontFamily.TIMES_ROMAN, 12,Font.NORMAL, BaseColor.RED);
        //  PdfFont subFont = PdfFontFactory.createFont(StandardFonts.COURIER);//new Font(Font.FontFamily.TIMES_ROMAN, 16,Font.BOLD);
        //  PdfFont smallBold =PdfFontFactory.createFont(StandardFonts.COURIER);// new Font(Font.FontFamily.TIMES_ROMAN, 12,Font.BOLD); 
       // PdfFont font = PdfFontFactory.createFont(FontConstants.TIMES_ROMAN);    
      
         
        public static void CreatePdf()
        {
            try {
                 
            PdfFont catFont =PdfFontFactory.createFont(StandardFonts.HELVETICA_BOLD);// new Font(Font.FontFamily.TIMES_ROMAN, 18,Font.BOLD);
            PdfFont redFont =PdfFontFactory.createFont(StandardFonts.HELVETICA_BOLD);// new Font(Font.FontFamily.TIMES_ROMAN, 12,Font.NORMAL, BaseColor.RED);
             PdfFont subFont = PdfFontFactory.createFont(StandardFonts.COURIER);//new Font(Font.FontFamily.TIMES_ROMAN, 16,Font.BOLD);
            PdfFont smallBold =PdfFontFactory.createFont(StandardFonts.COURIER);// new Font(Font.FontFamily.TIMES_ROMAN, 12,Font.BOLD);
             
                //PdfDocument pdf = new PdfDocument(new PdfWriter(dest),new WriterProperties().addXmpMetadata()));
                PdfWriter writer = new  PdfWriter(FILE);
                PdfDocument pdf = new  PdfDocument(writer);
                Document document = new Document(pdf);
               // PdfWriter.getInstance(document, new FileOutputStream(FILE));             
               // document.open();
                 
                PdfFont russian = PdfFontFactory.createFont("src/geovindu/resources/fonts/FreeSans.ttf", "CP1251", pdf);
                 
                addMetaData(document);
                addTitlePage(document);
                addContent(document);
                document.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        // iText allows to add metadata to the PDF which can be viewed in your Adobe
        // Reader
        // under File -> Properties
        private static void addMetaData(Document document) {
             
            addCustomMetadadata(document,"Title","My first PDF");
            addCustomMetadadata(document,"Subject","My first PDF");
            addCustomMetadadata(document,"Keywords","My first PDF");
            addCustomMetadadata(document,"Author","geovindu");
            addCustomMetadadata(document,"Creator","geovindu");
           // document.addTitle("My first PDF");     
           // document.addSubject("Using iText");
           // document.addKeywords("Java, PDF, iText");
           // document.addAuthor("geovindu");
           // document.addCreator("geovindu");
        }
      
        private static void addTitlePage(Document document)
                throws Exception {
            Paragraph preface = new Paragraph();
             
            PdfFont catFont =PdfFontFactory.createFont(StandardFonts.HELVETICA_BOLD);      
            PdfFont redFont =PdfFontFactory.createFont(StandardFonts.HELVETICA_BOLD);// new Font(Font.FontFamily.TIMES_ROMAN, 12,Font.NORMAL, BaseColor.RED);
             PdfFont subFont = PdfFontFactory.createFont(StandardFonts.COURIER);//new Font(Font.FontFamily.TIMES_ROMAN, 16,Font.BOLD);
            PdfFont smallBold =PdfFontFactory.createFont(StandardFonts.COURIER);// new Font(Font.FontFamily.TIMES_ROMAN, 12,Font.BOLD);
            // We add one empty line
            addEmptyLine(preface, 1);
            // Lets write a big header
            preface.add(new Paragraph("Title of the document").setFont(catFont));
      
            addEmptyLine(preface, 1);
            // Will create: Report generated by: _name, _date
            preface.add(new Paragraph(
                    "Report generated by: " + System.getProperty("user.name") + ", " + new Date() //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
                   ).setFont(smallBold));
            addEmptyLine(preface, 3);
            preface.add(new Paragraph(
                    "This document describes something which is very important ").setFont(smallBold));
      
            addEmptyLine(preface, 8);
      
            preface.add(new Paragraph(
                    "This document is a preliminary version and not subject to your license agreement or any other agreement with vogella.com ;-).").setFont(redFont));
      
            document.add(preface);
            // Start a new page
            //document.();
        }
      
        private static void addContent(Document document) throws Exception {
             
            PdfFont subFont = PdfFontFactory.createFont(StandardFonts.COURIER);//new Font(Font.FontFamily.TIMES_ROMAN, 16,Font.BOLD);
            PdfFont catFont =PdfFontFactory.createFont(StandardFonts.HELVETICA_BOLD);// new Font(Font.FontFamily.TIMES_ROMAN, 18,Font.BOLD);
            Anchor anchor = new Anchor("First Chapter", catFont);
            anchor.setName("First Chapter");
      
 
         
     
             
             
            // Second parameter is the number of the chapter
            Chapter catPart = new Chapter(new Paragraph(anchor), 1);
      
            Paragraph subPara = new Paragraph("Subcategory 1").setFont(subFont);
            Section subCatPart = catPart.addSection(subPara);
            subCatPart.add(new Paragraph("Hello"));
      
            subPara = new Paragraph("Subcategory 2").setFont(subFont);
            subCatPart = catPart.addSection(subPara);
            subCatPart.add(new Paragraph("Paragraph 1"));
            subCatPart.add(new Paragraph("Paragraph 2"));
            subCatPart.add(new Paragraph("Paragraph 3"));
      
            // add a list
            createList(subCatPart);
            Paragraph paragraph = new Paragraph();
            addEmptyLine(paragraph, 5);
            subCatPart.add(paragraph);
      
            // add a table
            createTable(subCatPart);
      
            // now add all this to the document
            document.add(catPart);
      
            // Next section
            anchor = new Anchor("Second Chapter", subFont);
            anchor.setName("Second Chapter");
      
            // Second parameter is the number of the chapter
            catPart = new Chapter(new Paragraph(anchor), 1);
      
            subPara = new Paragraph("Subcategory").setFont(catFont);
            subCatPart = catPart.addSection(subPara);
            subCatPart.add(new Paragraph("This is a very important message"));
      
            // now add all this to the document
            document.add(catPart);
      
        }
         
        public static void addMetadata(Document document,String title, String subject, String author, String creator) {
            PdfDocumentInfo documentInfo = document.getPdfDocument().getDocumentInfo();
            if (title!="") {
                documentInfo.setTitle(title);
            }
            if (subject!="") {
                documentInfo.setSubject(subject);
            }
            if (author!="") {
                documentInfo.setAuthor(author);
            }
            if (creator!="") {
                documentInfo.setCreator(creator);
            }
        }
 
         
        public static void addCustomMetadadata(Document document, String key,  String value) {
            PdfDocumentInfo documentInfo = document.getPdfDocument().getDocumentInfo();
            documentInfo.setMoreInfo(key, value);
        }
         
         
         
        private static void createTable(Document subCatPart)
                throws Exception {
             
             PdfFont headerFont = PdfFontFactory.createFont(StandardFonts.HELVETICA_BOLD);
             PdfFont cellFont = PdfFontFactory.createFont(StandardFonts.COURIER);
            //Table table = new Table(3);
      
            // t.setBorderColor(BaseColor.GRAY);
            // t.setPadding(4);
            // t.setSpacing(4);
            // t.setBorderWidth(1);
      
            Table table = new Table(new float[]{4, 4, 4});
            table.setWidth(UnitValue.createPercentValue(100));
            // adding header
            table.addHeaderCell(new Cell().add(new Paragraph(
                    "First Name").setFont(headerFont)));
            table.addHeaderCell(new Cell().add(new Paragraph(
                    "Last Name").setFont(headerFont)));
            table.addHeaderCell(new Cell().add(new Paragraph(
                    "Email").setFont(headerFont)));
             
             
             
           /* Cell c1 = new Cell(new Phrase("Table Header 1"));
            c1.setHorizontalAlignment(Element.ALIGN_CENTER);
            table.addCell(c1);
      
            c1 = new Cell(new Phrase("Table Header 2"));
            c1.setHorizontalAlignment(Element.ALIGN_CENTER);
            table.addCell(c1);
      
            c1 = new Cell(new Phrase("Table Header 3"));
            c1.setHorizontalAlignment(Element.ALIGN_CENTER);
            table.addCell(c1);
            table.setHeaderRows(1);
            */
            table.addCell("1.0 geovindu");
            table.addCell("1.1");
            table.addCell("1.2");
            table.addCell("2.1");
            table.addCell("2.2");
            table.addCell("2.3");
      
            subCatPart.add(table);
      
        }
      
        private static void createList(Document subCatPart) {
            com.itextpdf.layout.element.List list = new com.itextpdf.layout.element.List().setSymbolIndent(14);//(true, false, 10);
            list.add(new ListItem("First point"));
            list.add(new ListItem("Second point"));
            list.add(new ListItem("Third point"));
            subCatPart.add(list);
        }
      
        private void createTablePDF(String PDFPath){
            PdfWriter writer;
            try {
              writer = new PdfWriter(new FileOutputStream(PDFPath));
              PdfDocument pdf = new PdfDocument(writer);
              Document document = new Document(pdf, new PageSize(PageSize.A4));
              PdfFont headerFont = PdfFontFactory.createFont(StandardFonts.HELVETICA_BOLD);
              PdfFont cellFont = PdfFontFactory.createFont(StandardFonts.COURIER);
              // Create table with 3 columns of similar length
              Table table = new Table(new float[]{4, 4, 4});
              table.setWidth(UnitValue.createPercentValue(100));
              // adding header
              table.addHeaderCell(new Cell().add(new Paragraph(
                      "First Name").setFont(headerFont)));
              table.addHeaderCell(new Cell().add(new Paragraph(
                      "Last Name").setFont(headerFont)));
              table.addHeaderCell(new Cell().add(new Paragraph(
                      "Email").setFont(headerFont)));
              java.util.List<User> users = getListOfUsers();
              // adding rows
              for(User user : users) {
                table.addCell(new Cell().add(new Paragraph(
                     user.getFirstName()).setFont(cellFont)));
                table.addCell(new Cell().add(new Paragraph(
                     user.getLastName()).setFont(cellFont)));
                table.addCell(new Cell().add(new Paragraph(
                     user.getEmail()).setFont(cellFont)));
              }
              document.add(table);
              document.close();
            } catch (IOException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
            }   
          }
         
        // Dummy method for adding List of Users
        private java.util.List<User> getListOfUsers() {
            java.util.List<User> users = new ArrayList<User>();
          users.add(new User("Jack", "Reacher", "abc@xyz.com"));
          users.add(new User("Remington", "Steele", "rs@cbd.com"));
          users.add(new User("Jonathan", "Raven", "jr@sn.com"));
          return users;
        }
         
         
        protected void manipulatePdf(String dest) throws Exception {
            PdfDocument pdfDoc = new PdfDocument(new PdfWriter(dest));
            Document doc = new Document(pdfDoc);
            Table table = new Table(3);
            float tableWidth = doc.getPdfDocument().getDefaultPageSize().getWidth()
                    - (doc.getLeftMargin() + doc.getRightMargin());
            table.setWidth(tableWidth);
 
            Cell cell1 = new Cell();
            Paragraph p = new Paragraph("1");
            p.setProperty(Property.SPLIT_CHARACTERS, new DefaultSplitCharacters());
            cell1.add(p);
            table.addCell(cell1);
 
            Cell cell2 = new Cell();
            Paragraph p2 = new Paragraph("CamLane_Disp_Warn_Rq_Pr2_e0h2tjvjx5d9y5cbvxqsnhwa7");
            p2.setProperty(Property.SPLIT_CHARACTERS, new DefaultSplitCharacters());
            cell2.add(p2);
            table.addCell(cell2);
 
            Cell cell3 = new Cell();
            Paragraph p3 = new Paragraph("CamLane_Disp_Warn_Rq_AR2");
            p3.setProperty(Property.SPLIT_CHARACTERS, new DefaultSplitCharacters());
            cell3.add(p3);
            table.addCell(cell3);
 
            Cell cell4 = new Cell();
            Paragraph p4 = new Paragraph("SQC/CRC");
            p4.setProperty(Property.SPLIT_CHARACTERS, new DefaultSplitCharacters());
            cell4.add(p4);
            table.addCell(cell4);
 
            Cell cell5 = new Cell();
            Paragraph p5 = new Paragraph("SPV_EngRq1_VAN_Pr2_vx0c4n6d46wgrav5gmco6bvc");
            p5.setProperty(Property.SPLIT_CHARACTERS, new DefaultSplitCharacters());
            cell5.add(p5);
            table.addCell(cell5);
 
            Cell cell6 = new Cell();
            Paragraph p6 = new Paragraph("Bckl_Sw_Ft_Stat_Pr2_b14xqvpzjykdbhltdyma53upe");
            p6.setProperty(Property.SPLIT_CHARACTERS, new DefaultSplitCharacters());
            cell6.add(p6);
            table.addCell(cell6);
            doc.add(table);
            doc.close();
        }
         
        private static void addEmptyLine(Paragraph paragraph, int number) {
            for (int i = 0; i < number; i++) {
                paragraph.add(new Paragraph(" "));
            }
        }
         
         
        private void addImageToPDF(String PDFPath){
            PdfWriter writer;
            try {
              writer = new PdfWriter(new FileOutputStream(PDFPath));
              PdfDocument pdfDoc = new PdfDocument(writer);
              Document document = new Document(pdfDoc);
              PageSize pageSize = new PageSize(PageSize.A4).rotate();
            
              PdfCanvas canvas = new PdfCanvas(pdfDoc.addNewPage());
              // creating image data instance by passing the path to image
              ImageData img = ImageDataFactory.create("resources//netjs.png");
              canvas.saveState();
              // graphic state
              PdfExtGState state = new PdfExtGState();
              state.setFillOpacity(0.2f);
              canvas.setExtGState(state);
              canvas.addImage(img, 20, 650, pageSize.getWidth()/2, false);
              canvas.restoreState();
              document.add(new Paragraph("Adding image to PDF Example"));     
              document.close();
            } catch (IOException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
            }
          }
         
         
        private void addImageToPDF(String PDFPath){
            PdfWriter writer;
            try {
              // creating image data instance by passing the path to image
                String imFile="resources//netjs.png";
                ImageData data = ImageDataFactory.create(imFile);
             Image image = new image(data);
              writer = new PdfWriter(new FileOutputStream(PDFPath));
              PdfDocument pdfDoc = new PdfDocument(writer);
              Document document = new Document(pdfDoc);      
              document.add(new Paragraph("Adding image to PDF Example"));
              document.add(image);     
              document.close();
            } catch (IOException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
            }
          }
         
        private void addImageToPDF2(String PDFPath){
            PdfWriter writer;
            try {
              writer = new PdfWriter(new FileOutputStream(PDFPath));
              PdfDocument pdfDoc = new PdfDocument(writer);
              Document document = new Document(pdfDoc);      
              document.add(new Paragraph("Choices Are (Using English Letters)"));
                    // for offset (space from the left)
              com.itextpdf.layout.element.List list = new com.itextpdf.layout.element.List().setSymbolIndent(14)
                                    .setListSymbol(ListNumberingType.ENGLISH_LOWER);
                
              // Add ListItem objects
              list.add(new ListItem("Aerobic"))
                  .add(new ListItem("Anaerobic"))
                  .add(new ListItem("Flexibility Training"));
              // Add the list
              document.add(list);
               
              document.add(new Paragraph("Choices Are (Using Roman upper)"));
              list = new com.itextpdf.layout.element.List()
                   .setSymbolIndent(14)
                   .setListSymbol(ListNumberingType.ROMAN_UPPER);
              // Add ListItem objects
              list.add(new ListItem("Aerobic"))
                  .add(new ListItem("Anaerobic"))
                  .add(new ListItem("Flexibility Training"));
              // Add the list
              document.add(list);
               
              document.add(new Paragraph("Choices Are (Using bullet symbol)"));
              list = new com.itextpdf.layout.element.List()
                   .setSymbolIndent(14)
                   .setListSymbol("\u2022"); // Passing unicode for bullet
              // Add ListItem objects
              list.add(new ListItem("Aerobic"))
                  .add(new ListItem("Anaerobic"))
                  .add(new ListItem("Flexibility Training"));
              // Add the list
              document.add(list);           
              document.close();        
            } catch (IOException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
            }
          }
     
 
}

  

 

 

 

 https://github.com/arnosthavelka/itext-poc/blob/develop/src/main/java/com/github/aha/poc/itext/DocumentBuilder.java

 https://api.itextpdf.com/iText5/java/

 

5.2.1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
import java.awt.Color;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.io.*;
 
import com.itextpdf.text.Image;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.Header;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.ColumnText;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.text.pdf.TextField;
  
  
import com.itextpdf.text.Anchor;
import com.itextpdf.text.BadElementException;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Chapter;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.List;
import com.itextpdf.text.ListItem;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Section;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.FontFactory;
 
 
/**
 * itextpdf 5.2.1
 * itext-asian-5.2.0
 * itext-rtf-2.1.7
 * @author geovindu
 * @version 1.0
 *
 *
 *
 * */
 
public class iTextPdfHelper {
     
     
     private static String FILE = "src/geovindu.pdf";
     //中文字体
     private static String path = "C:/WINDOWS/Fonts/STFANGSO.TTF";//windows里的字体资源路径simhei.ttf
     private static Font dufont = FontFactory.getFont(path, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED,10f, Font.NORMAL, BaseColor.BLACK);
        private static Font catFont =FontFactory.getFont(path, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED,18f, Font.NORMAL, BaseColor.BLACK);// new Font(Font.FontFamily.TIMES_ROMAN, 18,Font.BOLD);
        private static Font redFont =FontFactory.getFont(path, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED,12f, Font.NORMAL, BaseColor.BLACK);// new Font(Font.FontFamily.TIMES_ROMAN, 12,Font.NORMAL, BaseColor.RED);
        private static Font subFont =FontFactory.getFont(path, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED,16f, Font.NORMAL, BaseColor.BLACK);// new Font(Font.FontFamily.TIMES_ROMAN, 16,Font.BOLD);
        private static Font smallBold =FontFactory.getFont(path, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED,12f, Font.NORMAL, BaseColor.BLACK);// new Font(Font.FontFamily.TIMES_ROMAN, 12,Font.BOLD);
      
        public static void CreatePdf()
        {
            try {
                Document document = new Document();
                PdfWriter.getInstance(document, new FileOutputStream(FILE));
                document.open();
                addMetaData(document);
                addTitlePage(document);
                addContent(document);
                document.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        // iText allows to add metadata to the PDF which can be viewed in your Adobe
        // Reader
        // under File -> Properties
        private static void addMetaData(Document document) {
            document.addTitle("My first PDF");
            document.addSubject("Using iText");
            document.addKeywords("Java, PDF, iText");
            document.addAuthor("geovindu");
            document.addCreator("geovindu");
        }
      
        private static void addTitlePage(Document document)
                throws DocumentException {
            Paragraph preface = new Paragraph();
            // We add one empty line
            addEmptyLine(preface, 1);
            // Lets write a big header
            preface.add(new Paragraph("Title of the document", catFont));
      
            addEmptyLine(preface, 1);
            // Will create: Report generated by: _name, _date
            preface.add(new Paragraph(
                    "Report generated by: " + System.getProperty("user.name") + ", " + new Date(), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
                    smallBold));
            addEmptyLine(preface, 3);
            preface.add(new Paragraph("This document describes something which is very important ",smallBold));
      
            addEmptyLine(preface, 8);
      
            preface.add(new Paragraph(
                    "This document is a preliminary version and not涂聚文 subject to your license agreement or any other agreement with vogella.com ;-).",
                    redFont));
      
            document.add(preface);
            // Start a new page
            document.newPage();
        }
      
        private static void addContent(Document document) throws DocumentException {
            Anchor anchor = new Anchor("First Chapter", catFont);
            anchor.setName("First Chapter");
      
            // Second parameter is the number of the chapter
            Chapter catPart = new Chapter(new Paragraph(anchor), 1);
      
            Paragraph subPara = new Paragraph("Subcategory 1", subFont);
            Section subCatPart = catPart.addSection(subPara);
            subCatPart.add(new Paragraph("Hello"));
      
            subPara = new Paragraph("Subcategory 2", subFont);
            subCatPart = catPart.addSection(subPara);
            subCatPart.add(new Paragraph("Paragraph 1 涂聚文",subFont));
            subCatPart.add(new Paragraph("Paragraph 2涂聚文涂聚文",subFont));
            subCatPart.add(new Paragraph("Paragraph 3涂聚文",subFont));
      
            // add a list
            createList(subCatPart);
            Paragraph paragraph = new Paragraph();
            addEmptyLine(paragraph, 5);
            subCatPart.add(paragraph);
      
            // add a table
            createTable(subCatPart);
      
            // now add all this to the document
            document.add(catPart);
      
            // Next section
            anchor = new Anchor("Second Chapter", catFont);
            anchor.setName("Second Chapter");
      
            // Second parameter is the number of the chapter
            catPart = new Chapter(new Paragraph(anchor), 1);
      
            subPara = new Paragraph("Subcategory", subFont);
            subCatPart = catPart.addSection(subPara);
            subCatPart.add(new Paragraph("This is a very important message",subFont));
      
            // now add all this to the document
            document.add(catPart);
      
        }
      
        private static void createTable(Section subCatPart)
                throws BadElementException {
            PdfPTable table = new PdfPTable(3);
      
            // t.setBorderColor(BaseColor.GRAY);
            // t.setPadding(4);
            // t.setSpacing(4);
            // t.setBorderWidth(1);
            Phrase pp=new Phrase("Table Header油料作物  1",subFont);           
            PdfPCell c1 = new PdfPCell(pp);
            c1.setHorizontalAlignment(Element.ALIGN_CENTER);
            table.addCell(c1);
      
            c1 = new PdfPCell(new Phrase("Table Header涂 2",subFont));
            c1.setHorizontalAlignment(Element.ALIGN_CENTER);
            table.addCell(c1);
      
            c1 = new PdfPCell(new Phrase("Table Header 聚文3",subFont));
            c1.setHorizontalAlignment(Element.ALIGN_CENTER);
            table.addCell(c1);
            table.setHeaderRows(1);
      
            table.addCell(new Phrase("1.0涂聚文",subFont));
            table.addCell(new Phrase("1.1涂聚文",subFont));
            table.addCell(new Phrase("1.2涂聚文",subFont));
            table.addCell(new Phrase("2.1塗聚文工團",subFont));
            table.addCell(new Phrase("2.2涂聚文",subFont));
            table.addCell(new Phrase("2.3",subFont));
      
            subCatPart.add(table);
      
        }
      
        private static void createList(Section subCatPart) {
            List list = new List(true, false, 10);
            list.add(new ListItem("First point"));
            list.add(new ListItem("Second point"));
            list.add(new ListItem("Third point"));
            subCatPart.add(list);
        }
      
        private static void addEmptyLine(Paragraph paragraph, int number) {
            for (int i = 0; i < number; i++) {
                paragraph.add(new Paragraph(" "));
            }
        }
         
         
         
        /**
         * 生成pdf文件
         */
        public void createPdf(Font font) throws FileNotFoundException, DocumentException {
             
            String path = "src/"+System.currentTimeMillis()+".pdf";
            File file = new File(path);
            file.getParentFile().mkdirs();
            Document doc = new Document(PageSize.A4);
            PdfWriter.getInstance(doc, new FileOutputStream(file));
            doc.open();
            doc.add(new Paragraph("字体测试",font));
            doc.close();
        }
         
       
        /**
         * 使用windows系统下的字体,new Font方式
         */
        public void DusetFont() throws DocumentException, IOException {
            String path = "C:/WINDOWS/Fonts/simhei.ttf";//windows里的字体资源路径
            BaseFont bf = BaseFont.createFont(path, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
            Font font = new Font(bf, 10f, Font.NORMAL, BaseColor.BLACK);
            createPdf(font);
        }
         
        
        /**
         * 使用windows系统下的字体,FontFactory方式
         */
        public void DusetFont2() throws DocumentException, IOException {
            String path = "C:/WINDOWS/Fonts/simhei.ttf";//windows里的字体资源路径
            Font font = FontFactory.getFont(path, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED,10f, Font.NORMAL, BaseColor.BLACK);
            createPdf(font);
        }
         
       
        /**
         * 使用自己查找的字体,FontFactory方式
         */
        public void DusetFont3() throws DocumentException, IOException {
            String path = "src/main/resources/file/pdf/font/SIMYOU.TTF";//自己的字体资源路径
            Font font = FontFactory.getFont(path, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED,10f, Font.NORMAL, BaseColor.BLACK);
            createPdf(font);
        }
         
         
        /**
         * 使用iTextAsian.jar中的字体,FontFactory方式
         */
       
        public void DusetFont4() throws DocumentException, IOException {
            Font font = FontFactory.getFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED,10f, Font.NORMAL, BaseColor.BLACK);
            createPdf(font);
        }
         
         
 
}

  

https://api.itextpdf.com/iText5/csharp/
https://api.itextpdf.com/DITO/java/2.2.5/
https://api.itextpdf.com/iText5/java/5.5.9/
https://api.itextpdf.com/iText7/java/7.2.1/
https://api.itextpdf.com/pdf2Data/java/2.1.2/
https://api.itextpdf.com/pdfCalligraph/java/2.0.5/
https://api.itextpdf.com/pdfHTML/java/4.0.1/
https://api.itextpdf.com/pdfSweep/java/3.0.0/
https://api.itextpdf.com/pdfXFA/java/3.0.0/
https://api.itextpdf.com/pdfRender/java/2.0.1/
https://api.itextpdf.com/pdfOCR/java/2.0.1/
https://api.itextpdf.com/licensekey/java/4.0.1/
https://api.itextpdf.com/pdfOptimizer/java/2.0.1/

https://api.itextpdf.com/iText7/dotnet/7.1.8/
https://api.itextpdf.com/pdfCalligraph/dotnet/2.0.5/
https://api.itextpdf.com/pdfHTML/dotnet/4.0.1/
https://api.itextpdf.com/pdfSweep/dotnet/3.0.0/
https://api.itextpdf.com/pdfXFA/dotnet/3.0.0/
https://api.itextpdf.com/pdfOCR/dotnet/2.0.1/
https://api.itextpdf.com/licensekey/dotnet/4.0.1/
https://api.itextpdf.com/pdfOptimizer/dotnet/2.0.1/
https://api.itextpdf.com/pdfOffice/java/2.0.1/

 

 

java sdk 17.0.1 

 

 

posted @   ®Geovin Du Dream Park™  阅读(1048)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
历史上的今天:
2013-01-19 Sql: 去除字符串中的相同的字符串函數
2013-01-19 Csharp: Calling Output Parameters and Return Values in ADO.NET
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示