├── .gitignore ├── LICENSE.md ├── README.md └── iText-start ├── iText1-中文输出 ├── .idea │ ├── compiler.xml │ ├── libraries │ │ ├── Maven__com_itextpdf_barcodes_7_0_3.xml │ │ ├── Maven__com_itextpdf_font_asian_7_0_3.xml │ │ ├── Maven__com_itextpdf_forms_7_0_3.xml │ │ ├── Maven__com_itextpdf_hyph_7_0_3.xml │ │ ├── Maven__com_itextpdf_io_7_0_3.xml │ │ ├── Maven__com_itextpdf_kernel_7_0_3.xml │ │ ├── Maven__com_itextpdf_layout_7_0_3.xml │ │ ├── Maven__com_itextpdf_pdfa_7_0_3.xml │ │ ├── Maven__com_itextpdf_sign_7_0_3.xml │ │ └── Maven__org_slf4j_slf4j_api_1_7_13.xml │ ├── misc.xml │ ├── modules.xml │ └── workspace.xml ├── iText1.iml ├── pom.xml └── src │ └── main │ ├── java │ ├── C01E01_HelloWorld.java │ ├── C01E02_RickAstley.java │ ├── C01E03_QuickBrownFox.java │ ├── C01E04_UnitedStates.java │ └── UnicodeUtil.java │ └── resources │ ├── data │ └── united_states.csv │ └── img │ ├── dog.bmp │ └── fox.bmp ├── iText1 ├── .idea │ ├── compiler.xml │ ├── libraries │ │ ├── Maven__com_itextpdf_barcodes_7_0_3.xml │ │ ├── Maven__com_itextpdf_font_asian_7_0_3.xml │ │ ├── Maven__com_itextpdf_forms_7_0_3.xml │ │ ├── Maven__com_itextpdf_hyph_7_0_3.xml │ │ ├── Maven__com_itextpdf_io_7_0_3.xml │ │ ├── Maven__com_itextpdf_kernel_7_0_3.xml │ │ ├── Maven__com_itextpdf_layout_7_0_3.xml │ │ ├── Maven__com_itextpdf_pdfa_7_0_3.xml │ │ ├── Maven__com_itextpdf_sign_7_0_3.xml │ │ └── Maven__org_slf4j_slf4j_api_1_7_13.xml │ ├── misc.xml │ ├── modules.xml │ └── workspace.xml ├── iText1.iml ├── pom.xml └── src │ └── main │ ├── java │ ├── C01E01_HelloWorld.java │ ├── C01E02_RickAstley.java │ ├── C01E03_QuickBrownFox.java │ └── C01E04_UnitedStates.java │ └── resources │ ├── data │ └── united_states.csv │ └── img │ ├── dog.bmp │ └── fox.bmp ├── iText2 ├── .idea │ ├── compiler.xml │ ├── libraries │ │ ├── Maven__com_itextpdf_barcodes_7_0_3.xml │ │ ├── Maven__com_itextpdf_font_asian_7_0_3.xml │ │ ├── Maven__com_itextpdf_forms_7_0_3.xml │ │ ├── Maven__com_itextpdf_hyph_7_0_3.xml │ │ ├── Maven__com_itextpdf_io_7_0_3.xml │ │ ├── Maven__com_itextpdf_kernel_7_0_3.xml │ │ ├── Maven__com_itextpdf_layout_7_0_3.xml │ │ ├── Maven__com_itextpdf_pdfa_7_0_3.xml │ │ ├── Maven__com_itextpdf_sign_7_0_3.xml │ │ └── Maven__org_slf4j_slf4j_api_1_7_13.xml │ ├── misc.xml │ ├── modules.xml │ └── workspace.xml ├── iText2.iml ├── pom.xml └── src │ └── main │ └── java │ ├── C02E01_Axes.java │ ├── C02E02_GridLines.java │ ├── C02E03_StarWars.java │ └── C02E04_StarWarsCrawl.java ├── iText3 ├── .idea │ ├── compiler.xml │ ├── libraries │ │ ├── Maven__com_itextpdf_barcodes_7_0_3.xml │ │ ├── Maven__com_itextpdf_font_asian_7_0_3.xml │ │ ├── Maven__com_itextpdf_forms_7_0_3.xml │ │ ├── Maven__com_itextpdf_hyph_7_0_3.xml │ │ ├── Maven__com_itextpdf_io_7_0_3.xml │ │ ├── Maven__com_itextpdf_kernel_7_0_3.xml │ │ ├── Maven__com_itextpdf_layout_7_0_3.xml │ │ ├── Maven__com_itextpdf_pdfa_7_0_3.xml │ │ ├── Maven__com_itextpdf_sign_7_0_3.xml │ │ └── Maven__org_slf4j_slf4j_api_1_7_13.xml │ ├── misc.xml │ ├── modules.xml │ └── workspace.xml ├── iText3.iml ├── pom.xml └── src │ └── main │ ├── java │ ├── C03E01_NewYorkTimes.java │ ├── C03E02_PremierLeague.java │ └── C03E03_UFO.java │ └── resources │ ├── data │ ├── ny_times_apple.txt │ ├── ny_times_fb.txt │ ├── ny_times_inst.txt │ ├── premier_league.csv │ └── ufo.csv │ └── img │ ├── ny_times_apple.jpg │ ├── ny_times_fb.jpg │ └── ny_times_inst.jpg ├── iText4 ├── .idea │ ├── compiler.xml │ ├── libraries │ │ ├── Maven__com_itextpdf_barcodes_7_0_3.xml │ │ ├── Maven__com_itextpdf_font_asian_7_0_3.xml │ │ ├── Maven__com_itextpdf_forms_7_0_3.xml │ │ ├── Maven__com_itextpdf_hyph_7_0_3.xml │ │ ├── Maven__com_itextpdf_io_7_0_3.xml │ │ ├── Maven__com_itextpdf_kernel_7_0_3.xml │ │ ├── Maven__com_itextpdf_layout_7_0_3.xml │ │ ├── Maven__com_itextpdf_pdfa_7_0_3.xml │ │ ├── Maven__com_itextpdf_sign_7_0_3.xml │ │ └── Maven__org_slf4j_slf4j_api_1_7_13.xml │ ├── misc.xml │ ├── modules.xml │ └── workspace.xml ├── iText4.iml ├── pom.xml └── src │ └── main │ ├── java │ ├── C04E01_01_TextAnnotation.java │ ├── C04E01_02_LinkAnnotation.java │ ├── C04E01_03_LineAnnotation.java │ ├── C04E01_04_TextMarkupAnnotation.java │ ├── C04E02_JobApplication.java │ ├── C04E03_CreateAndFill.java │ ├── C04E04_FillForm.java │ └── C04E05_FlattenForm.java │ └── resources │ └── pdf │ └── job_application.pdf ├── iText5 ├── .idea │ ├── compiler.xml │ ├── libraries │ │ ├── Maven__com_itextpdf_barcodes_7_0_3.xml │ │ ├── Maven__com_itextpdf_font_asian_7_0_3.xml │ │ ├── Maven__com_itextpdf_forms_7_0_3.xml │ │ ├── Maven__com_itextpdf_hyph_7_0_3.xml │ │ ├── Maven__com_itextpdf_io_7_0_3.xml │ │ ├── Maven__com_itextpdf_kernel_7_0_3.xml │ │ ├── Maven__com_itextpdf_layout_7_0_3.xml │ │ ├── Maven__com_itextpdf_pdfa_7_0_3.xml │ │ ├── Maven__com_itextpdf_sign_7_0_3.xml │ │ └── Maven__org_slf4j_slf4j_api_1_7_13.xml │ ├── misc.xml │ ├── modules.xml │ └── workspace.xml ├── iText5.iml ├── pom.xml └── src │ └── main │ ├── java │ ├── C05E01_AddAnnotationsAndContent.java │ ├── C05E02_FillAndModifyForm.java │ ├── C05E03_AddContent.java │ └── C05E04_ChangePage.java │ └── resources │ └── pdf │ ├── job_application.pdf │ └── ufo.pdf ├── iText6 ├── .idea │ ├── compiler.xml │ ├── libraries │ │ ├── Maven__com_itextpdf_barcodes_7_0_3.xml │ │ ├── Maven__com_itextpdf_font_asian_7_0_3.xml │ │ ├── Maven__com_itextpdf_forms_7_0_3.xml │ │ ├── Maven__com_itextpdf_hyph_7_0_3.xml │ │ ├── Maven__com_itextpdf_io_7_0_3.xml │ │ ├── Maven__com_itextpdf_kernel_7_0_3.xml │ │ ├── Maven__com_itextpdf_layout_7_0_3.xml │ │ ├── Maven__com_itextpdf_pdfa_7_0_3.xml │ │ ├── Maven__com_itextpdf_sign_7_0_3.xml │ │ └── Maven__org_slf4j_slf4j_api_1_7_13.xml │ ├── misc.xml │ ├── modules.xml │ └── workspace.xml ├── iText6.iml ├── pom.xml └── src │ └── main │ ├── java │ ├── C06E01_TheGoldenGateBridge_Scale_Shrink.java │ ├── C06E02_TheGoldenGateBridge_Tiles.java │ ├── C06E03_TheGoldenGateBridge_N_up.java │ ├── C06E04_88th_Oscar_Combine.java │ ├── C06E05_88th_Oscar_CombineXofY.java │ ├── C06E06_88th_Oscar_Combine_AddTOC.java │ ├── C06E07_Combine_Forms.java │ ├── C06E08_FillOutAndMergeForms.java │ └── C06E09_FillOutFlattenAndMergeForms.java │ └── resources │ ├── data │ └── united_states.csv │ └── pdf │ ├── 88th_noms_announcement.pdf │ ├── 88th_reminder_list.pdf │ ├── oscars_movies_checklist_2016.pdf │ ├── state.pdf │ ├── subscribe.pdf │ └── the_golden_gate_bridge.pdf └── iText7 ├── .idea ├── compiler.xml ├── libraries │ ├── Maven__com_itextpdf_barcodes_7_0_3.xml │ ├── Maven__com_itextpdf_font_asian_7_0_3.xml │ ├── Maven__com_itextpdf_forms_7_0_3.xml │ ├── Maven__com_itextpdf_hyph_7_0_3.xml │ ├── Maven__com_itextpdf_io_7_0_3.xml │ ├── Maven__com_itextpdf_kernel_7_0_3.xml │ ├── Maven__com_itextpdf_layout_7_0_3.xml │ ├── Maven__com_itextpdf_pdfa_7_0_3.xml │ ├── Maven__com_itextpdf_sign_7_0_3.xml │ └── Maven__org_slf4j_slf4j_api_1_7_13.xml ├── misc.xml ├── modules.xml └── workspace.xml ├── iText7.iml ├── pom.xml └── src └── main ├── java ├── C07E01_QuickBrownFox_PDFUA.java ├── C07E02_QuickBrownFox_PDFA_1a.java ├── C07E02_QuickBrownFox_PDFA_1b.java ├── C07E03_UnitedStates_PDFA_3a.java └── C07E04_MergePDFADocuments.java └── resources ├── color └── sRGB_CS_profile.icm ├── data └── united_states.csv ├── font ├── FreeSans.ttf └── FreeSansBold.ttf ├── img ├── dog.bmp └── fox.bmp └── pdf ├── quick_brown_fox_PDFA-1a.pdf └── united_states_PDFA-1a.pdf /.gitignore: -------------------------------------------------------------------------------- 1 | # targert编译文件 2 | iText-start/*/target/ 3 | iText-start/*/results/ 4 | 5 | ### IntelliJ IDEA ### 6 | .idea 7 | *.iws 8 | *.iml 9 | *.ipr 10 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | This program is free software; you can redistribute it and/or modify 2 | it under the terms of the GNU Affero General Public License version 3 3 | as published by the Free Software Foundation with the addition of the 4 | following permission added to Section 15 as permitted in Section 7(a): 5 | FOR ANY PART OF THE COVERED WORK IN WHICH THE COPYRIGHT IS OWNED BY 6 | ITEXT GROUP. ITEXT GROUP DISCLAIMS THE WARRANTY OF NON INFRINGEMENT 7 | OF THIRD PARTY RIGHTS 8 | 9 | This program is distributed in the hope that it will be useful, but 10 | WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 11 | or FITNESS FOR A PARTICULAR PURPOSE. 12 | See the GNU Affero General Public License for more details. 13 | You should have received a copy of the GNU Affero General Public License 14 | along with this program; if not, see http://www.gnu.org/licenses or write to 15 | the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 16 | Boston, MA, 02110-1301 USA, or download the license from the following URL: 17 | http://itextpdf.com/terms-of-use/ 18 | 19 | The interactive user interfaces in modified source and object code versions 20 | of this program must display Appropriate Legal Notices, as required under 21 | Section 5 of the GNU Affero General Public License. 22 | 23 | In accordance with Section 7(b) of the GNU Affero General Public License, 24 | a covered work must retain the producer line in every PDF that is created 25 | or manipulated using iText. 26 | 27 | You can be released from the requirements of the license by purchasing 28 | a commercial license. Buying such a license is mandatory as soon as you 29 | develop commercial activities involving the iText software without 30 | disclosing the source code of your own applications. 31 | These activities include: offering paid services to customers as an ASP, 32 | serving PDFs on the fly in a web application, shipping iText with a closed 33 | source product. 34 | 35 | For more information, please contact iText Software Corp. at this 36 | address: sales@itextpdf.com -------------------------------------------------------------------------------- /iText-start/iText1-中文输出/.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /iText-start/iText1-中文输出/.idea/libraries/Maven__com_itextpdf_barcodes_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText1-中文输出/.idea/libraries/Maven__com_itextpdf_font_asian_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText1-中文输出/.idea/libraries/Maven__com_itextpdf_forms_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText1-中文输出/.idea/libraries/Maven__com_itextpdf_hyph_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText1-中文输出/.idea/libraries/Maven__com_itextpdf_io_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText1-中文输出/.idea/libraries/Maven__com_itextpdf_kernel_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText1-中文输出/.idea/libraries/Maven__com_itextpdf_layout_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText1-中文输出/.idea/libraries/Maven__com_itextpdf_pdfa_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText1-中文输出/.idea/libraries/Maven__com_itextpdf_sign_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText1-中文输出/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_13.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText1-中文输出/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 1.8 18 | 19 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /iText-start/iText1-中文输出/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /iText-start/iText1-中文输出/iText1.iml: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /iText-start/iText1-中文输出/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | com.itext 8 | iText-1 9 | 1.0-SNAPSHOT 10 | 11 | 12 | 13 | 14 | com.itextpdf 15 | kernel 16 | 7.0.3 17 | 18 | 19 | 20 | 21 | com.itextpdf 22 | io 23 | 7.0.3 24 | 25 | 26 | 27 | 28 | com.itextpdf 29 | layout 30 | 7.0.3 31 | 32 | 33 | 34 | 35 | com.itextpdf 36 | forms 37 | 7.0.3 38 | 39 | 40 | 41 | 42 | com.itextpdf 43 | pdfa 44 | 7.0.3 45 | 46 | 47 | 48 | 49 | com.itextpdf 50 | sign 51 | 7.0.3 52 | 53 | 54 | 55 | 56 | com.itextpdf 57 | barcodes 58 | 7.0.3 59 | 60 | 61 | 62 | 63 | com.itextpdf 64 | font-asian 65 | 7.0.3 66 | 67 | 68 | 69 | 70 | com.itextpdf 71 | hyph 72 | 7.0.3 73 | 74 | 75 | 76 | 77 | 78 | -------------------------------------------------------------------------------- /iText-start/iText1-中文输出/src/main/java/C01E01_HelloWorld.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This example is part of the iText 7 tutorial. 3 | */ 4 | 5 | import com.itextpdf.io.font.PdfEncodings; 6 | import com.itextpdf.kernel.font.PdfFont; 7 | import com.itextpdf.kernel.font.PdfFontFactory; 8 | import com.itextpdf.kernel.pdf.PdfDocument; 9 | import com.itextpdf.kernel.pdf.PdfWriter; 10 | import com.itextpdf.layout.Document; 11 | import com.itextpdf.layout.element.Paragraph; 12 | 13 | 14 | import java.io.File; 15 | import java.io.IOException; 16 | 17 | import static com.itextpdf.kernel.pdf.PdfName.BaseFont; 18 | 19 | /** 20 | * Simple Hello World example. 21 | */ 22 | public class C01E01_HelloWorld { 23 | 24 | public static final String DEST = "results/chapter01/hello_world.pdf"; 25 | 26 | public static void main(String args[]) throws IOException { 27 | File file = new File(DEST); 28 | file.getParentFile().mkdirs(); //创建目录 29 | new C01E01_HelloWorld().createPdf(DEST); //生成文件 30 | } 31 | 32 | public void createPdf(String dest) throws IOException { 33 | //Initialize PDF writer 34 | PdfWriter writer = new PdfWriter(dest); 35 | 36 | //Initialize PDF document 37 | PdfDocument pdf = new PdfDocument(writer); 38 | 39 | // Initialize document 40 | Document document = new Document(pdf); 41 | 42 | PdfFont f2 = PdfFontFactory.createFont("STSong-Light", "UniGB-UCS2-H",true); 43 | PdfFont f3 = PdfFontFactory.createFont("C:/Windows/Fonts/simhei.ttf", PdfEncodings.IDENTITY_H,true); 44 | //Add paragraph to the document 45 | document.add(new Paragraph("hellos你好").setFont(f2)); 46 | document.add(new Paragraph("hellos你好").setFont(f3)); 47 | 48 | 49 | //Close document 50 | document.close(); 51 | } 52 | } -------------------------------------------------------------------------------- /iText-start/iText1-中文输出/src/main/java/C01E02_RickAstley.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by CuteKe on 2017/7/10. 3 | */ 4 | import com.itextpdf.io.font.FontConstants; 5 | import com.itextpdf.kernel.font.PdfFont; 6 | import com.itextpdf.kernel.font.PdfFontFactory; 7 | import com.itextpdf.kernel.pdf.PdfDocument; 8 | import com.itextpdf.kernel.pdf.PdfWriter; 9 | import com.itextpdf.layout.Document; 10 | import com.itextpdf.layout.element.List; 11 | import com.itextpdf.layout.element.ListItem; 12 | import com.itextpdf.layout.element.Paragraph; 13 | import java.io.File; 14 | import java.io.IOException; 15 | 16 | /** 17 | * Simple List example. 18 | */ 19 | public class C01E02_RickAstley { 20 | public static final String DEST = "results/chapter01/rick_astley.pdf"; 21 | 22 | public static void main(String args[]) throws IOException { 23 | File file = new File(DEST); 24 | file.getParentFile().mkdirs(); //创建目录 25 | new C01E02_RickAstley().createPdf(DEST); //生成文件 26 | } 27 | 28 | public void createPdf(String dest) throws IOException { 29 | //Initialize PDF writer 30 | PdfWriter writer = new PdfWriter(dest); 31 | 32 | //Initialize PDF document 33 | PdfDocument pdf = new PdfDocument(writer); 34 | 35 | // Initialize document 36 | Document document = new Document(pdf); 37 | 38 | // Create a PdfFont 39 | PdfFont font = PdfFontFactory.createFont("STSong-Light", "UniGB-UCS2-H", true); 40 | // Add a Paragraph 41 | document.add(new Paragraph("iText is:").setFont(font)); 42 | // Create a List 43 | List list = new List() 44 | .setSymbolIndent(12) 45 | .setListSymbol("\u2022") 46 | .setFont(font); 47 | // Add ListItem objects 48 | list.add(new ListItem("Never gonna give you up呵呵")) 49 | .add(new ListItem("Never gonna let you down是的")) 50 | .add(new ListItem("Never gonna run around and 你desert you")) 51 | .add(new ListItem("Never gonna make 好you cry")) 52 | .add(new ListItem("Never gonna say 哟goodbye")) 53 | .add(new ListItem("Never gonna tell a 嗨lie and hurt you")); 54 | // Add the list 55 | document.add(list); 56 | 57 | //Close document 58 | document.close(); 59 | } 60 | } -------------------------------------------------------------------------------- /iText-start/iText1-中文输出/src/main/java/C01E03_QuickBrownFox.java: -------------------------------------------------------------------------------- 1 | 2 | import com.itextpdf.io.image.ImageDataFactory; 3 | import com.itextpdf.kernel.pdf.PdfDocument; 4 | import com.itextpdf.kernel.pdf.PdfWriter; 5 | import com.itextpdf.layout.Document; 6 | import com.itextpdf.layout.element.Image; 7 | import com.itextpdf.layout.element.Paragraph; 8 | 9 | import java.io.File; 10 | import java.io.IOException; 11 | 12 | /** 13 | * Simple image example. 14 | */ 15 | public class C01E03_QuickBrownFox { 16 | public static final String DOG = "src/main/resources/img/dog.bmp"; 17 | public static final String FOX = "src/main/resources/img/fox.bmp"; 18 | 19 | public static final String DEST = "results/chapter01/quick_brown_fox.pdf"; 20 | 21 | public static void main(String args[]) throws IOException { 22 | File file = new File(DEST); 23 | file.getParentFile().mkdirs(); 24 | new C01E03_QuickBrownFox().createPdf(DEST); 25 | } 26 | 27 | public void createPdf(String dest) throws IOException { 28 | //Initialize PDF writer 29 | PdfWriter writer = new PdfWriter(dest); 30 | 31 | //Initialize PDF document 32 | PdfDocument pdf = new PdfDocument(writer); 33 | 34 | // Initialize document 35 | Document document = new Document(pdf); 36 | 37 | // Compose Paragraph 38 | Image fox = new Image(ImageDataFactory.create(FOX)); 39 | Image dog = new Image(ImageDataFactory.create(DOG)); 40 | Paragraph p = new Paragraph("The quick brown ") 41 | .add(fox) 42 | .add(" jumps over the lazy ") 43 | .add(dog); 44 | // Add Paragraph to document 45 | document.add(p); 46 | 47 | //Close document 48 | document.close(); 49 | } 50 | } -------------------------------------------------------------------------------- /iText-start/iText1-中文输出/src/main/java/C01E04_UnitedStates.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by CuteKe on 2017/7/10. 3 | */ 4 | import com.itextpdf.io.font.FontConstants; 5 | import com.itextpdf.kernel.font.PdfFont; 6 | import com.itextpdf.kernel.font.PdfFontFactory; 7 | import com.itextpdf.kernel.geom.PageSize; 8 | import com.itextpdf.kernel.pdf.PdfDocument; 9 | import com.itextpdf.kernel.pdf.PdfWriter; 10 | import com.itextpdf.layout.Document; 11 | import com.itextpdf.layout.element.Cell; 12 | import com.itextpdf.layout.element.Paragraph; 13 | import com.itextpdf.layout.element.Table; 14 | 15 | import java.io.BufferedReader; 16 | import java.io.File; 17 | import java.io.FileReader; 18 | import java.io.IOException; 19 | import java.util.StringTokenizer; 20 | 21 | /** 22 | * Simple table example. 23 | */ 24 | public class C01E04_UnitedStates { 25 | public static final String DATA = "src/main/resources/data/united_states.csv"; 26 | 27 | public static final String DEST = "results/chapter01/united_states.pdf"; 28 | 29 | public static void main(String args[]) throws IOException { 30 | File file = new File(DEST); 31 | file.getParentFile().mkdirs(); 32 | new C01E04_UnitedStates().createPdf(DEST); 33 | } 34 | 35 | public void createPdf(String dest) throws IOException { 36 | //Initialize PDF writer 37 | PdfWriter writer = new PdfWriter(dest); 38 | 39 | //Initialize PDF document 40 | PdfDocument pdf = new PdfDocument(writer); 41 | 42 | // Initialize document 43 | Document document = new Document(pdf, PageSize.A4.rotate()); 44 | document.setMargins(20, 20, 20, 20); 45 | 46 | PdfFont font = PdfFontFactory.createFont("STSong-Light", "UniGB-UCS2-H", true); 47 | PdfFont bold = PdfFontFactory.createFont("STSong-Light", "UniGB-UCS2-H", true); 48 | Table table = new Table(new float[]{4, 1, 3, 4, 3, 3, 3, 3, 1}); 49 | table.setWidthPercent(100); 50 | BufferedReader br = new BufferedReader(new FileReader(DATA)); 51 | String line = br.readLine(); 52 | process(table, line, bold, true); 53 | while ((line = br.readLine()) != null) { 54 | process(table, line, font, false); 55 | } 56 | br.close(); 57 | document.add(table); 58 | 59 | //Close document 60 | document.close(); 61 | } 62 | 63 | public void process(Table table, String line, PdfFont font, boolean isHeader) { 64 | StringTokenizer tokenizer = new StringTokenizer(line, ";"); 65 | while (tokenizer.hasMoreTokens()) { 66 | if (isHeader) { 67 | table.addHeaderCell(new Cell().add(new Paragraph(tokenizer.nextToken()).setFont(font))); 68 | } else { 69 | table.addCell(new Cell().add(new Paragraph(tokenizer.nextToken()).setFont(font))); 70 | } 71 | } 72 | } 73 | } -------------------------------------------------------------------------------- /iText-start/iText1-中文输出/src/main/java/UnicodeUtil.java: -------------------------------------------------------------------------------- 1 | import java.io.UnsupportedEncodingException; 2 | 3 | /** 4 | * Created by ASUS on 2017/11/7. 5 | */ 6 | public class UnicodeUtil { 7 | public static String string2Unicode(String string) { 8 | 9 | StringBuffer unicode = new StringBuffer(); 10 | 11 | for (int i = 0; i < string.length(); i++) { 12 | 13 | // 取出每一个字符 14 | char c = string.charAt(i); 15 | 16 | // 转换为unicode 17 | unicode.append("\\u" + Integer.toHexString(c)); 18 | } 19 | 20 | return unicode.toString(); 21 | } 22 | public static String unicode2String(String unicode) { 23 | 24 | StringBuffer string = new StringBuffer(); 25 | 26 | String[] hex = unicode.split("\\\\u"); 27 | 28 | for (int i = 1; i < hex.length; i++) { 29 | 30 | // 转换出每一个代码点 31 | int data = Integer.parseInt(hex[i], 16); 32 | 33 | // 追加成string 34 | string.append((char) data); 35 | } 36 | 37 | return string.toString(); 38 | } 39 | public static void main(String[] args) throws UnsupportedEncodingException { 40 | String test = "最代码网站地址:www.zuidaima.com"; 41 | 42 | String unicode = string2Unicode(test); 43 | 44 | String string = unicode2String(unicode) ; 45 | 46 | System.out.println(unicode); 47 | 48 | System.out.println(string); 49 | 50 | 51 | 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /iText-start/iText1-中文输出/src/main/resources/data/united_states.csv: -------------------------------------------------------------------------------- 1 | name姓名;abbr;capital;most populous city;population;square miles;time zone 1;time zone 2;dst,,, 2 | ALABAMA;AL;Montgomery;Birmingham;4,708,708;52,423;CST (UTC-6);EST (UTC-5);YES 3 | ALASKA;AK;Juneau;Anchorage;698,473;656,425;AKST (UTC-09) ;HST (UTC-10) ;YES, 4 | ARIZONA;AZ;Phoenix;Phoenix;6,595,778;114,006;MT (UTC-07); ;NO 5 | ARKANSAS;AR;Little Rock;Little Rock;2,889,450;53,182;CST (UTC-6); ;YES 6 | CALIFORNIA;CA;Sacramento;Los Angeles;36,961,664;163,707;PT (UTC-8); ;YES 7 | COLORADO;CO;Denver;Denver;5,24,748;104,100;MT (UTC-07); ;YES 8 | CONNECTICUT;CT;Hartford;Bridgeport;3,518,288;5,544;EST (UTC-5); ;YES 9 | DELAWARE;DE;Dover;Wilmington;885,122;1,954;EST (UTC-5); ;YES, 10 | FLORIDA;FL;Tallahassee;Jacksonville;18,537,969;65,758;EST (UTC-5);CST (UTC-6);YES 11 | GEORGIA;GA;Atlanta;Atlanta;9,829,211;59,441;EST (UTC-5); ;YES 12 | HAWAII;HI;Honolulu;Honolulu;1,295,178;10,932;HST (UTC-10) ; ;NO 13 | IDAHO;ID;Boise;Boise;1,545,801;83,574;MT (UTC-07);PT (UTC-8);YES 14 | ILLINOIS;IL;Springfield;Chicago;12,910,409;57,918;CST (UTC-6); ;YES 15 | INDIANA;IN;Indianapolis;Indianapolis;6,423,113;36,420;EST (UTC-5);CST (UTC-6);YES 16 | IOWA;IA;Des Moines;Des Moines;3,7,856;56,276;CST (UTC-6); ;YES 17 | KANSAS;KS;Topeka;Wichita;2,818,747;82,282;CST (UTC-6);MT (UTC-07);YES 18 | KENTUCKY;KY;Frankfort;Louisville;4,314,113;40,411;EST (UTC-5);CST (UTC-6);YES 19 | LOUISIANA;LA;Baton Rouge;New Orleans;4,492,076;51,843;CST (UTC-6); ;YES 20 | MAINE;ME;Augusta;Portland;1,318,301;35,387;EST (UTC-5); ;YES 21 | MARYLAND;MD;Annapolis;Baltimore;5,699,478;12,407;EST (UTC-5); ;YES 22 | MASSACHUSETTS;MA;Boston;Boston;6,593,587;10,555;EST (UTC-5); ;YES 23 | MICHIGAN;MI;Lansing;Detroit;9,969,727;96,810;EST (UTC-5);CST (UTC-6);YES 24 | MINNESOTA;MN;Saint Paul;Minneapolis;5,266,214;86,943;CST (UTC-6); ;YES 25 | MISSISSIPPI;MS;Jackson;Jackson;2,951,996;48,434;CST (UTC-6); ;YES 26 | MISSOURI;MO;Jefferson City;Kansas City;5,987,580;69,709;CST (UTC-6); ;YES 27 | MONTANA;MT;Helena;Billings;974,989;147,046;MT (UTC-07); ;YES, 28 | NEBRASKA;NE;Lincoln;Omaha;1,796,619;77,358;CST (UTC-6);MT (UTC-07);YES 29 | NEVADA;NV;Carson City;Las Vegas;2,643,085;110,567;PT (UTC-8);MT (UTC-07);YES 30 | NEW HAMPSHIRE;NH;Concord;Machester;1,324,575;9,351;EST (UTC-5); ;YES 31 | NEW JERSEY;NJ;Trenton;Newark;8,707,739;8,722;EST (UTC-5); ;YES 32 | NEW MEXICO;NM;Santa Fe;Albuquerque;2,9,671;121,593;MT (UTC-07); ;YES 33 | NEW YORK;NY;Albany;New York;19,541,453;54,475;EST (UTC-5); ;YES 34 | NORTH CAROLINA;NC;Raleigh;Charlotte;9,380,884;53,821;EST (UTC-5); ;YES 35 | NORTH DAKOTA;ND;Bismarck;Fargo;646,844;70,704;CST (UTC-6);MT (UTC-07);YES, 36 | OHIO;OH;Columbus;Columbus;11,542,645;44,828;EST (UTC-5); ;YES 37 | OKLAHOMA;OK;Oklahoma City;Oklahoma City;3,687,050;69,903;CST (UTC-6); ;YES 38 | OREGON;OR;Salem;Portland;3,825,657;98,386;PT (UTC-8);MT (UTC-07);YES 39 | PENNSYLVANIA;PA;Harrisburg;Philadelphia;12,604,767;46,058;EST (UTC-5); ;YES 40 | RHODE ISLAND;RI;Providence;Providence;1,53,209;1,545;EST (UTC-5); ;YES 41 | SOUTH CAROLINA;SC;Columbia;Columbia;4,561,242;32,007;EST (UTC-5); ;YES 42 | SOUTH DAKOTA;SD;Pierre;Sioux Falls;812,383;77,121;CST (UTC-6);MT (UTC-07);YES, 43 | TENNESSEE;TN;Nashville;Memphis;6,296,254;42,146;CST (UTC-6);EST (UTC-5);YES 44 | TEXAS;TX;Austin;Houston;24,782,302;268,601;CST (UTC-6);MT (UTC-07);YES 45 | UTAH;UT;Salt Lake City;Salt Lake City;2,784,572;84,904;MT (UTC-07); ;YES 46 | VERMONT;VT;Montpelier;Burlington;621,760;9,615;EST (UTC-5); ;YES, 47 | VIRGINIA;VA;Richmond;Virginia Beach;7,882,590;42,769;EST (UTC-5); ;YES 48 | WASHINGTON;WA;Olympia;Seattle;6,664,195;71,303;PT (UTC-8); ;YES 49 | WEST VIRGINIA;WV;Charleston;Charleston;1,819,777;24,231;EST (UTC-5); ;YES 50 | WISCONSIN;WI;Madison;Milwaukee;5,654,774;65,503;CST (UTC-6); ;YES 51 | WYOMING;WY;Cheyenne;Cheyenne;544,270;97,818;MT (UTC-07); ;YES, 52 | -------------------------------------------------------------------------------- /iText-start/iText1-中文输出/src/main/resources/img/dog.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuteXiaoKe/iText7-examples/49e8e9759a6776fd80f08a82d7842fd1b3e15374/iText-start/iText1-中文输出/src/main/resources/img/dog.bmp -------------------------------------------------------------------------------- /iText-start/iText1-中文输出/src/main/resources/img/fox.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuteXiaoKe/iText7-examples/49e8e9759a6776fd80f08a82d7842fd1b3e15374/iText-start/iText1-中文输出/src/main/resources/img/fox.bmp -------------------------------------------------------------------------------- /iText-start/iText1/.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /iText-start/iText1/.idea/libraries/Maven__com_itextpdf_barcodes_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText1/.idea/libraries/Maven__com_itextpdf_font_asian_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText1/.idea/libraries/Maven__com_itextpdf_forms_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText1/.idea/libraries/Maven__com_itextpdf_hyph_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText1/.idea/libraries/Maven__com_itextpdf_io_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText1/.idea/libraries/Maven__com_itextpdf_kernel_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText1/.idea/libraries/Maven__com_itextpdf_layout_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText1/.idea/libraries/Maven__com_itextpdf_pdfa_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText1/.idea/libraries/Maven__com_itextpdf_sign_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText1/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_13.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText1/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 1.8 18 | 19 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /iText-start/iText1/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /iText-start/iText1/iText1.iml: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /iText-start/iText1/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | com.itext 8 | iText-1 9 | 1.0-SNAPSHOT 10 | 11 | 12 | 13 | 14 | com.itextpdf 15 | kernel 16 | 7.0.3 17 | 18 | 19 | 20 | 21 | com.itextpdf 22 | io 23 | 7.0.3 24 | 25 | 26 | 27 | 28 | com.itextpdf 29 | layout 30 | 7.0.3 31 | 32 | 33 | 34 | 35 | com.itextpdf 36 | forms 37 | 7.0.3 38 | 39 | 40 | 41 | 42 | com.itextpdf 43 | pdfa 44 | 7.0.3 45 | 46 | 47 | 48 | 49 | com.itextpdf 50 | sign 51 | 7.0.3 52 | 53 | 54 | 55 | 56 | com.itextpdf 57 | barcodes 58 | 7.0.3 59 | 60 | 61 | 62 | 63 | com.itextpdf 64 | font-asian 65 | 7.0.3 66 | 67 | 68 | 69 | 70 | com.itextpdf 71 | hyph 72 | 7.0.3 73 | 74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /iText-start/iText1/src/main/java/C01E01_HelloWorld.java: -------------------------------------------------------------------------------- 1 | /* 2 | * This example is part of the iText 7 tutorial. 3 | */ 4 | 5 | import com.itextpdf.kernel.pdf.PdfDocument; 6 | import com.itextpdf.kernel.pdf.PdfWriter; 7 | import com.itextpdf.layout.Document; 8 | import com.itextpdf.layout.element.Paragraph; 9 | 10 | 11 | import java.io.File; 12 | import java.io.IOException; 13 | 14 | /** 15 | * Simple Hello World example. 16 | */ 17 | public class C01E01_HelloWorld { 18 | 19 | public static final String DEST = "results/chapter01/hello_world.pdf"; 20 | 21 | public static void main(String args[]) throws IOException { 22 | File file = new File(DEST); 23 | file.getParentFile().mkdirs(); //创建目录 24 | new C01E01_HelloWorld().createPdf(DEST); //生成文件 25 | } 26 | 27 | public void createPdf(String dest) throws IOException { 28 | //Initialize PDF writer 29 | PdfWriter writer = new PdfWriter(dest); 30 | 31 | //Initialize PDF document 32 | PdfDocument pdf = new PdfDocument(writer); 33 | 34 | // Initialize document 35 | Document document = new Document(pdf); 36 | 37 | //Add paragraph to the document 38 | document.add(new Paragraph("Hello World!")); 39 | 40 | //Close document 41 | document.close(); 42 | } 43 | } -------------------------------------------------------------------------------- /iText-start/iText1/src/main/java/C01E02_RickAstley.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by CuteKe on 2017/7/10. 3 | */ 4 | import com.itextpdf.io.font.FontConstants; 5 | import com.itextpdf.kernel.font.PdfFont; 6 | import com.itextpdf.kernel.font.PdfFontFactory; 7 | import com.itextpdf.kernel.pdf.PdfDocument; 8 | import com.itextpdf.kernel.pdf.PdfWriter; 9 | import com.itextpdf.layout.Document; 10 | import com.itextpdf.layout.element.List; 11 | import com.itextpdf.layout.element.ListItem; 12 | import com.itextpdf.layout.element.Paragraph; 13 | import java.io.File; 14 | import java.io.IOException; 15 | 16 | /** 17 | * Simple List example. 18 | */ 19 | public class C01E02_RickAstley { 20 | public static final String DEST = "results/chapter01/rick_astley.pdf"; 21 | 22 | public static void main(String args[]) throws IOException { 23 | File file = new File(DEST); 24 | file.getParentFile().mkdirs(); //创建目录 25 | new C01E02_RickAstley().createPdf(DEST); //生成文件 26 | } 27 | 28 | public void createPdf(String dest) throws IOException { 29 | //Initialize PDF writer 30 | PdfWriter writer = new PdfWriter(dest); 31 | 32 | //Initialize PDF document 33 | PdfDocument pdf = new PdfDocument(writer); 34 | 35 | // Initialize document 36 | Document document = new Document(pdf); 37 | 38 | // Create a PdfFont 39 | PdfFont font = PdfFontFactory.createFont(FontConstants.TIMES_ROMAN); 40 | // Add a Paragraph 41 | document.add(new Paragraph("iText is:").setFont(font)); 42 | // Create a List 43 | List list = new List() 44 | .setSymbolIndent(12) 45 | .setListSymbol("\u2022") 46 | .setFont(font); 47 | // Add ListItem objects 48 | list.add(new ListItem("Never gonna give you up")) 49 | .add(new ListItem("Never gonna let you down")) 50 | .add(new ListItem("Never gonna run around and desert you")) 51 | .add(new ListItem("Never gonna make you cry")) 52 | .add(new ListItem("Never gonna say goodbye")) 53 | .add(new ListItem("Never gonna tell a lie and hurt you")); 54 | // Add the list 55 | document.add(list); 56 | 57 | //Close document 58 | document.close(); 59 | } 60 | } -------------------------------------------------------------------------------- /iText-start/iText1/src/main/java/C01E03_QuickBrownFox.java: -------------------------------------------------------------------------------- 1 | 2 | import com.itextpdf.io.image.ImageDataFactory; 3 | import com.itextpdf.kernel.pdf.PdfDocument; 4 | import com.itextpdf.kernel.pdf.PdfWriter; 5 | import com.itextpdf.layout.Document; 6 | import com.itextpdf.layout.element.Image; 7 | import com.itextpdf.layout.element.Paragraph; 8 | 9 | import java.io.File; 10 | import java.io.IOException; 11 | 12 | /** 13 | * Simple image example. 14 | */ 15 | public class C01E03_QuickBrownFox { 16 | public static final String DOG = "src/main/resources/img/dog.bmp"; 17 | public static final String FOX = "src/main/resources/img/fox.bmp"; 18 | 19 | public static final String DEST = "results/chapter01/quick_brown_fox.pdf"; 20 | 21 | public static void main(String args[]) throws IOException { 22 | File file = new File(DEST); 23 | file.getParentFile().mkdirs(); 24 | new C01E03_QuickBrownFox().createPdf(DEST); 25 | } 26 | 27 | public void createPdf(String dest) throws IOException { 28 | //Initialize PDF writer 29 | PdfWriter writer = new PdfWriter(dest); 30 | 31 | //Initialize PDF document 32 | PdfDocument pdf = new PdfDocument(writer); 33 | 34 | // Initialize document 35 | Document document = new Document(pdf); 36 | 37 | // Compose Paragraph 38 | Image fox = new Image(ImageDataFactory.create(FOX)); 39 | Image dog = new Image(ImageDataFactory.create(DOG)); 40 | Paragraph p = new Paragraph("The quick brown ") 41 | .add(fox) 42 | .add(" jumps over the lazy ") 43 | .add(dog); 44 | // Add Paragraph to document 45 | document.add(p); 46 | 47 | //Close document 48 | document.close(); 49 | } 50 | } -------------------------------------------------------------------------------- /iText-start/iText1/src/main/java/C01E04_UnitedStates.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by CuteKe on 2017/7/10. 3 | */ 4 | import com.itextpdf.io.font.FontConstants; 5 | import com.itextpdf.kernel.font.PdfFont; 6 | import com.itextpdf.kernel.font.PdfFontFactory; 7 | import com.itextpdf.kernel.geom.PageSize; 8 | import com.itextpdf.kernel.pdf.PdfDocument; 9 | import com.itextpdf.kernel.pdf.PdfWriter; 10 | import com.itextpdf.layout.Document; 11 | import com.itextpdf.layout.element.Cell; 12 | import com.itextpdf.layout.element.Paragraph; 13 | import com.itextpdf.layout.element.Table; 14 | 15 | import java.io.BufferedReader; 16 | import java.io.File; 17 | import java.io.FileReader; 18 | import java.io.IOException; 19 | import java.util.StringTokenizer; 20 | 21 | /** 22 | * Simple table example. 23 | */ 24 | public class C01E04_UnitedStates { 25 | public static final String DATA = "src/main/resources/data/united_states.csv"; 26 | 27 | public static final String DEST = "results/chapter01/united_states.pdf"; 28 | 29 | public static void main(String args[]) throws IOException { 30 | File file = new File(DEST); 31 | file.getParentFile().mkdirs(); 32 | new C01E04_UnitedStates().createPdf(DEST); 33 | } 34 | 35 | public void createPdf(String dest) throws IOException { 36 | //Initialize PDF writer 37 | PdfWriter writer = new PdfWriter(dest); 38 | 39 | //Initialize PDF document 40 | PdfDocument pdf = new PdfDocument(writer); 41 | 42 | // Initialize document 43 | Document document = new Document(pdf, PageSize.A4.rotate()); 44 | document.setMargins(20, 20, 20, 20); 45 | 46 | PdfFont font = PdfFontFactory.createFont(FontConstants.HELVETICA); 47 | PdfFont bold = PdfFontFactory.createFont(FontConstants.HELVETICA_BOLD); 48 | Table table = new Table(new float[]{4, 1, 3, 4, 3, 3, 3, 3, 1}); 49 | table.setWidthPercent(100); 50 | BufferedReader br = new BufferedReader(new FileReader(DATA)); 51 | String line = br.readLine(); 52 | process(table, line, bold, true); 53 | while ((line = br.readLine()) != null) { 54 | process(table, line, font, false); 55 | } 56 | br.close(); 57 | document.add(table); 58 | 59 | //Close document 60 | document.close(); 61 | } 62 | 63 | public void process(Table table, String line, PdfFont font, boolean isHeader) { 64 | StringTokenizer tokenizer = new StringTokenizer(line, ";"); 65 | while (tokenizer.hasMoreTokens()) { 66 | if (isHeader) { 67 | table.addHeaderCell(new Cell().add(new Paragraph(tokenizer.nextToken()).setFont(font))); 68 | } else { 69 | table.addCell(new Cell().add(new Paragraph(tokenizer.nextToken()).setFont(font))); 70 | } 71 | } 72 | } 73 | } -------------------------------------------------------------------------------- /iText-start/iText1/src/main/resources/data/united_states.csv: -------------------------------------------------------------------------------- 1 | name;abbr;capital;most populous city;population;square miles;time zone 1;time zone 2;dst 2 | ALABAMA;AL;Montgomery;Birmingham;4,708,708;52,423;CST (UTC-6);EST (UTC-5);YES 3 | ALASKA;AK;Juneau;Anchorage;698,473;656,425;AKST (UTC-09) ;HST (UTC-10) ;YES 4 | ARIZONA;AZ;Phoenix;Phoenix;6,595,778;114,006;MT (UTC-07); ;NO 5 | ARKANSAS;AR;Little Rock;Little Rock;2,889,450;53,182;CST (UTC-6); ;YES 6 | CALIFORNIA;CA;Sacramento;Los Angeles;36,961,664;163,707;PT (UTC-8); ;YES 7 | COLORADO;CO;Denver;Denver;5,024,748;104,100;MT (UTC-07); ;YES 8 | CONNECTICUT;CT;Hartford;Bridgeport;3,518,288;5,544;EST (UTC-5); ;YES 9 | DELAWARE;DE;Dover;Wilmington;885,122;1,954;EST (UTC-5); ;YES 10 | FLORIDA;FL;Tallahassee;Jacksonville;18,537,969;65,758;EST (UTC-5);CST (UTC-6);YES 11 | GEORGIA;GA;Atlanta;Atlanta;9,829,211;59,441;EST (UTC-5); ;YES 12 | HAWAII;HI;Honolulu;Honolulu;1,295,178;10,932;HST (UTC-10) ; ;NO 13 | IDAHO;ID;Boise;Boise;1,545,801;83,574;MT (UTC-07);PT (UTC-8);YES 14 | ILLINOIS;IL;Springfield;Chicago;12,910,409;57,918;CST (UTC-6); ;YES 15 | INDIANA;IN;Indianapolis;Indianapolis;6,423,113;36,420;EST (UTC-5);CST (UTC-6);YES 16 | IOWA;IA;Des Moines;Des Moines;3,007,856;56,276;CST (UTC-6); ;YES 17 | KANSAS;KS;Topeka;Wichita;2,818,747;82,282;CST (UTC-6);MT (UTC-07);YES 18 | KENTUCKY;KY;Frankfort;Louisville;4,314,113;40,411;EST (UTC-5);CST (UTC-6);YES 19 | LOUISIANA;LA;Baton Rouge;New Orleans;4,492,076;51,843;CST (UTC-6); ;YES 20 | MAINE;ME;Augusta;Portland;1,318,301;35,387;EST (UTC-5); ;YES 21 | MARYLAND;MD;Annapolis;Baltimore;5,699,478;12,407;EST (UTC-5); ;YES 22 | MASSACHUSETTS;MA;Boston;Boston;6,593,587;10,555;EST (UTC-5); ;YES 23 | MICHIGAN;MI;Lansing;Detroit;9,969,727;96,810;EST (UTC-5);CST (UTC-6);YES 24 | MINNESOTA;MN;Saint Paul;Minneapolis;5,266,214;86,943;CST (UTC-6); ;YES 25 | MISSISSIPPI;MS;Jackson;Jackson;2,951,996;48,434;CST (UTC-6); ;YES 26 | MISSOURI;MO;Jefferson City;Kansas City;5,987,580;69,709;CST (UTC-6); ;YES 27 | MONTANA;MT;Helena;Billings;974,989;147,046;MT (UTC-07); ;YES 28 | NEBRASKA;NE;Lincoln;Omaha;1,796,619;77,358;CST (UTC-6);MT (UTC-07);YES 29 | NEVADA;NV;Carson City;Las Vegas;2,643,085;110,567;PT (UTC-8);MT (UTC-07);YES 30 | NEW HAMPSHIRE;NH;Concord;Machester;1,324,575;9,351;EST (UTC-5); ;YES 31 | NEW JERSEY;NJ;Trenton;Newark;8,707,739;8,722;EST (UTC-5); ;YES 32 | NEW MEXICO;NM;Santa Fe;Albuquerque;2,009,671;121,593;MT (UTC-07); ;YES 33 | NEW YORK;NY;Albany;New York;19,541,453;54,475;EST (UTC-5); ;YES 34 | NORTH CAROLINA;NC;Raleigh;Charlotte;9,380,884;53,821;EST (UTC-5); ;YES 35 | NORTH DAKOTA;ND;Bismarck;Fargo;646,844;70,704;CST (UTC-6);MT (UTC-07);YES 36 | OHIO;OH;Columbus;Columbus;11,542,645;44,828;EST (UTC-5); ;YES 37 | OKLAHOMA;OK;Oklahoma City;Oklahoma City;3,687,050;69,903;CST (UTC-6); ;YES 38 | OREGON;OR;Salem;Portland;3,825,657;98,386;PT (UTC-8);MT (UTC-07);YES 39 | PENNSYLVANIA;PA;Harrisburg;Philadelphia;12,604,767;46,058;EST (UTC-5); ;YES 40 | RHODE ISLAND;RI;Providence;Providence;1,053,209;1,545;EST (UTC-5); ;YES 41 | SOUTH CAROLINA;SC;Columbia;Columbia;4,561,242;32,007;EST (UTC-5); ;YES 42 | SOUTH DAKOTA;SD;Pierre;Sioux Falls;812,383;77,121;CST (UTC-6);MT (UTC-07);YES 43 | TENNESSEE;TN;Nashville;Memphis;6,296,254;42,146;CST (UTC-6);EST (UTC-5);YES 44 | TEXAS;TX;Austin;Houston;24,782,302;268,601;CST (UTC-6);MT (UTC-07);YES 45 | UTAH;UT;Salt Lake City;Salt Lake City;2,784,572;84,904;MT (UTC-07); ;YES 46 | VERMONT;VT;Montpelier;Burlington;621,760;9,615;EST (UTC-5); ;YES 47 | VIRGINIA;VA;Richmond;Virginia Beach;7,882,590;42,769;EST (UTC-5); ;YES 48 | WASHINGTON;WA;Olympia;Seattle;6,664,195;71,303;PT (UTC-8); ;YES 49 | WEST VIRGINIA;WV;Charleston;Charleston;1,819,777;24,231;EST (UTC-5); ;YES 50 | WISCONSIN;WI;Madison;Milwaukee;5,654,774;65,503;CST (UTC-6); ;YES 51 | WYOMING;WY;Cheyenne;Cheyenne;544,270;97,818;MT (UTC-07); ;YES -------------------------------------------------------------------------------- /iText-start/iText1/src/main/resources/img/dog.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuteXiaoKe/iText7-examples/49e8e9759a6776fd80f08a82d7842fd1b3e15374/iText-start/iText1/src/main/resources/img/dog.bmp -------------------------------------------------------------------------------- /iText-start/iText1/src/main/resources/img/fox.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuteXiaoKe/iText7-examples/49e8e9759a6776fd80f08a82d7842fd1b3e15374/iText-start/iText1/src/main/resources/img/fox.bmp -------------------------------------------------------------------------------- /iText-start/iText2/.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /iText-start/iText2/.idea/libraries/Maven__com_itextpdf_barcodes_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText2/.idea/libraries/Maven__com_itextpdf_font_asian_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText2/.idea/libraries/Maven__com_itextpdf_forms_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText2/.idea/libraries/Maven__com_itextpdf_hyph_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText2/.idea/libraries/Maven__com_itextpdf_io_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText2/.idea/libraries/Maven__com_itextpdf_kernel_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText2/.idea/libraries/Maven__com_itextpdf_layout_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText2/.idea/libraries/Maven__com_itextpdf_pdfa_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText2/.idea/libraries/Maven__com_itextpdf_sign_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText2/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_13.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText2/.idea/misc.xml: -------------------------------------------------------------------------------- 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 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /iText-start/iText2/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /iText-start/iText2/iText2.iml: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /iText-start/iText2/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | com.itext 8 | iText2 9 | 1.0-SNAPSHOT 10 | 11 | 12 | 13 | 14 | 15 | com.itextpdf 16 | kernel 17 | 7.0.3 18 | 19 | 20 | 21 | 22 | com.itextpdf 23 | io 24 | 7.0.3 25 | 26 | 27 | 28 | 29 | com.itextpdf 30 | layout 31 | 7.0.3 32 | 33 | 34 | 35 | 36 | com.itextpdf 37 | forms 38 | 7.0.3 39 | 40 | 41 | 42 | 43 | com.itextpdf 44 | pdfa 45 | 7.0.3 46 | 47 | 48 | 49 | 50 | com.itextpdf 51 | sign 52 | 7.0.3 53 | 54 | 55 | 56 | 57 | com.itextpdf 58 | barcodes 59 | 7.0.3 60 | 61 | 62 | 63 | 64 | com.itextpdf 65 | font-asian 66 | 7.0.3 67 | 68 | 69 | 70 | 71 | com.itextpdf 72 | hyph 73 | 7.0.3 74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /iText-start/iText2/src/main/java/C02E01_Axes.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by ASUS on 2017/8/12. 3 | */ 4 | import com.itextpdf.kernel.geom.PageSize; 5 | import com.itextpdf.kernel.pdf.PdfDocument; 6 | import com.itextpdf.kernel.pdf.PdfPage; 7 | import com.itextpdf.kernel.pdf.PdfWriter; 8 | import com.itextpdf.kernel.pdf.canvas.PdfCanvas; 9 | import com.itextpdf.kernel.pdf.canvas.PdfCanvasConstants; 10 | 11 | import java.io.File; 12 | import java.io.IOException; 13 | 14 | public class C02E01_Axes { 15 | 16 | public static final String DEST = "results/chapter02/axes.pdf"; 17 | 18 | public static void main(String args[]) throws IOException { 19 | File file = new File(DEST); 20 | file.getParentFile().mkdirs(); 21 | new C02E01_Axes().createPdf(DEST); 22 | } 23 | 24 | public void createPdf(String dest) throws IOException { 25 | 26 | //Initialize PDF document 27 | PdfDocument pdf = new PdfDocument(new PdfWriter(dest)); 28 | 29 | PageSize ps = PageSize.A4.rotate(); 30 | PdfPage page = pdf.addNewPage(ps); 31 | 32 | PdfCanvas canvas = new PdfCanvas(page); 33 | //Replace the origin of the coordinate system to the center of the page 34 | canvas.concatMatrix(1, 0, 0, 1, ps.getWidth() / 2, ps.getHeight() / 2); 35 | 36 | C02E01_Axes.drawAxes(canvas, ps); 37 | 38 | //Close document 39 | pdf.close(); 40 | 41 | } 42 | 43 | public static void drawAxes(PdfCanvas canvas, PageSize ps) { 44 | //Draw X axis 45 | canvas.moveTo(-(ps.getWidth() / 2 - 15), 0) 46 | .lineTo(ps.getWidth() / 2 - 15, 0) 47 | .stroke(); 48 | 49 | //Draw X axis arrow 50 | canvas.setLineJoinStyle(PdfCanvasConstants.LineJoinStyle.ROUND) 51 | .moveTo(ps.getWidth() / 2 - 25, -10) 52 | .lineTo(ps.getWidth() / 2 - 15, 0) 53 | .lineTo(ps.getWidth() / 2 - 25, 10).stroke() 54 | .setLineJoinStyle(PdfCanvasConstants.LineJoinStyle.MITER); 55 | 56 | //Draw Y axis 57 | canvas.moveTo(0, -(ps.getHeight() / 2 - 15)) 58 | .lineTo(0, ps.getHeight() / 2 - 15) 59 | .stroke(); 60 | 61 | //Draw Y axis arrow 62 | canvas.saveState() 63 | .setLineJoinStyle(PdfCanvasConstants.LineJoinStyle.ROUND) 64 | .moveTo(-10, ps.getHeight() / 2 - 25) 65 | .lineTo(0, ps.getHeight() / 2 - 15) 66 | .lineTo(10, ps.getHeight() / 2 - 25).stroke() 67 | .restoreState(); 68 | 69 | //Draw X serif 70 | for (int i = -((int) ps.getWidth() / 2 - 61); i < ((int) ps.getWidth() / 2 - 60); i += 40) { 71 | canvas.moveTo(i, 5).lineTo(i, -5); 72 | } 73 | //Draw Y serif 74 | for (int j = -((int) ps.getHeight() / 2 - 57); j < ((int) ps.getHeight() / 2 - 56); j += 40) { 75 | canvas.moveTo(5, j).lineTo(-5, j); 76 | } 77 | canvas.stroke(); 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /iText-start/iText2/src/main/java/C02E02_GridLines.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by ASUS on 2017/8/12. 3 | */ 4 | import com.itextpdf.kernel.color.Color; 5 | import com.itextpdf.kernel.color.DeviceCmyk; 6 | import com.itextpdf.kernel.geom.PageSize; 7 | import com.itextpdf.kernel.pdf.PdfDocument; 8 | import com.itextpdf.kernel.pdf.PdfPage; 9 | import com.itextpdf.kernel.pdf.PdfWriter; 10 | import com.itextpdf.kernel.pdf.canvas.PdfCanvas; 11 | 12 | import java.io.File; 13 | import java.io.IOException; 14 | 15 | public class C02E02_GridLines { 16 | 17 | public static final String DEST = "results/chapter02/grid_lines.pdf"; 18 | 19 | public static void main(String args[]) throws IOException { 20 | File file = new File(DEST); 21 | file.getParentFile().mkdirs(); 22 | new C02E02_GridLines().createPdf(DEST); 23 | } 24 | 25 | public void createPdf(String dest) throws IOException { 26 | 27 | //Initialize PDF document 28 | PdfDocument pdf = new PdfDocument(new PdfWriter(dest)); 29 | 30 | PageSize ps = PageSize.A4.rotate(); 31 | PdfPage page = pdf.addNewPage(ps); 32 | 33 | PdfCanvas canvas = new PdfCanvas(page); 34 | //Replace the origin of the coordinate system to the center of the page 35 | canvas.concatMatrix(1, 0, 0, 1, ps.getWidth() / 2, ps.getHeight() / 2); 36 | 37 | Color grayColor = new DeviceCmyk(0.f, 0.f, 0.f, 0.875f); 38 | Color greenColor = new DeviceCmyk(1.f, 0.f, 1.f, 0.176f); 39 | Color blueColor = new DeviceCmyk(1.f, 0.156f, 0.f, 0.118f); 40 | 41 | canvas.setLineWidth(0.5f).setStrokeColor(blueColor); 42 | 43 | //Draw horizontal grid lines 44 | for (int i = -((int) ps.getHeight() / 2 - 57); i < ((int) ps.getHeight() / 2 - 56); i += 40) { 45 | canvas.moveTo(-(ps.getWidth() / 2 - 15), i) 46 | .lineTo(ps.getWidth() / 2 - 15, i); 47 | } 48 | //Draw vertical grid lines 49 | for (int j = -((int) ps.getWidth() / 2 - 61); j < ((int) ps.getWidth() / 2 - 60); j += 40) { 50 | canvas.moveTo(j, -(ps.getHeight() / 2 - 15)) 51 | .lineTo(j, ps.getHeight() / 2 - 15); 52 | } 53 | canvas.stroke(); 54 | 55 | //Draw axes 56 | canvas.setLineWidth(3).setStrokeColor(grayColor); 57 | C02E01_Axes.drawAxes(canvas, ps); 58 | 59 | //Draw plot 60 | canvas.setLineWidth(2).setStrokeColor(greenColor) 61 | .setLineDash(10, 10, 8) 62 | .moveTo(-(ps.getWidth() / 2 - 15), -(ps.getHeight() / 2 - 15)) 63 | .lineTo(ps.getWidth() / 2 - 15, ps.getHeight() / 2 - 15).stroke(); 64 | 65 | //Close document 66 | pdf.close(); 67 | 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /iText-start/iText2/src/main/java/C02E03_StarWars.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by ASUS on 2017/8/12. 3 | */ 4 | import com.itextpdf.io.font.FontConstants; 5 | import com.itextpdf.kernel.font.PdfFontFactory; 6 | import com.itextpdf.kernel.geom.PageSize; 7 | import com.itextpdf.kernel.pdf.PdfDocument; 8 | import com.itextpdf.kernel.pdf.PdfPage; 9 | import com.itextpdf.kernel.pdf.PdfWriter; 10 | import com.itextpdf.kernel.pdf.canvas.PdfCanvas; 11 | 12 | import java.io.File; 13 | import java.io.IOException; 14 | import java.util.ArrayList; 15 | import java.util.List; 16 | 17 | public class C02E03_StarWars { 18 | 19 | public static final String DEST = "results/chapter02/star_wars.pdf"; 20 | 21 | public static void main(String args[]) throws IOException { 22 | File file = new File(DEST); 23 | file.getParentFile().mkdirs(); 24 | new C02E03_StarWars().createPdf(DEST); 25 | } 26 | 27 | public void createPdf(String dest) throws IOException { 28 | 29 | //Initialize PDF document 30 | PdfDocument pdf = new PdfDocument(new PdfWriter(dest)); 31 | 32 | //Add new page 33 | PageSize ps = PageSize.A4; 34 | PdfPage page = pdf.addNewPage(ps); 35 | 36 | PdfCanvas canvas = new PdfCanvas(page); 37 | 38 | List text = new ArrayList(); 39 | text.add(" Episode V "); 40 | text.add(" THE EMPIRE STRIKES BACK "); 41 | text.add("It is a dark time for the"); 42 | text.add("Rebellion. Although the Death"); 43 | text.add("Star has been destroyed,"); 44 | text.add("Imperial troops have driven the"); 45 | text.add("Rebel forces from their hidden"); 46 | text.add("base and pursued them across"); 47 | text.add("the galaxy."); 48 | text.add("Evading the dreaded Imperial"); 49 | text.add("Starfleet, a group of freedom"); 50 | text.add("fighters led by Luke Skywalker"); 51 | text.add("has established a new secret"); 52 | text.add("base on the remote ice world"); 53 | text.add("of Hoth..."); 54 | 55 | //Replace the origin of the coordinate system to the top left corner 56 | canvas.concatMatrix(1, 0, 0, 1, 0, ps.getHeight()); 57 | canvas.beginText() 58 | .setFontAndSize(PdfFontFactory.createFont(FontConstants.COURIER_BOLD), 14) 59 | .setLeading(14 * 1.2f) 60 | .moveText(70, -40); 61 | for (String s : text) { 62 | //Add text and move to the next line 63 | canvas.newlineShowText(s); 64 | } 65 | canvas.endText(); 66 | 67 | //Close document 68 | pdf.close(); 69 | 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /iText-start/iText3/.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /iText-start/iText3/.idea/libraries/Maven__com_itextpdf_barcodes_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText3/.idea/libraries/Maven__com_itextpdf_font_asian_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText3/.idea/libraries/Maven__com_itextpdf_forms_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText3/.idea/libraries/Maven__com_itextpdf_hyph_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText3/.idea/libraries/Maven__com_itextpdf_io_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText3/.idea/libraries/Maven__com_itextpdf_kernel_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText3/.idea/libraries/Maven__com_itextpdf_layout_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText3/.idea/libraries/Maven__com_itextpdf_pdfa_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText3/.idea/libraries/Maven__com_itextpdf_sign_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText3/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_13.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText3/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText3/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /iText-start/iText3/iText3.iml: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /iText-start/iText3/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | com.itext 8 | iText3 9 | 1.0-SNAPSHOT 10 | 11 | 12 | 13 | 14 | 15 | com.itextpdf 16 | kernel 17 | 7.0.3 18 | 19 | 20 | 21 | 22 | com.itextpdf 23 | io 24 | 7.0.3 25 | 26 | 27 | 28 | 29 | com.itextpdf 30 | layout 31 | 7.0.3 32 | 33 | 34 | 35 | 36 | com.itextpdf 37 | forms 38 | 7.0.3 39 | 40 | 41 | 42 | 43 | com.itextpdf 44 | pdfa 45 | 7.0.3 46 | 47 | 48 | 49 | 50 | com.itextpdf 51 | sign 52 | 7.0.3 53 | 54 | 55 | 56 | 57 | com.itextpdf 58 | barcodes 59 | 7.0.3 60 | 61 | 62 | 63 | 64 | com.itextpdf 65 | font-asian 66 | 7.0.3 67 | 68 | 69 | 70 | 71 | com.itextpdf 72 | hyph 73 | 7.0.3 74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /iText-start/iText3/src/main/resources/data/ny_times_apple.txt: -------------------------------------------------------------------------------- 1 | Apple employees are already discussing what they will do if ordered to help law enforcement authorities. Some say they may balk at the work, while others may even quit their high-paying jobs rather than undermine the security of the software they have already created, according to more than a half-dozen current and former Apple employees. Among those interviewed were Apple engineers who are involved in the development of mobile products and security, as well as former security engineers and executives. The potential resistance adds a wrinkle to a very public fight between Apple, the world’s most valuable company, and the authorities over access to an iPhone used by one of the attackers in the December mass killing in San Bernardino, Calif. -------------------------------------------------------------------------------- /iText-start/iText3/src/main/resources/data/ny_times_fb.txt: -------------------------------------------------------------------------------- 1 | In a Friday morning post, Facebook’s co-founder and chief executive, Mark Zuckerberg, announced his arrival in Beijing with a blithe message about what must have been a dizzying jog through the center of China’s capital, which has been suffering from a weeklong bout of hazardous air pollution. -------------------------------------------------------------------------------- /iText-start/iText3/src/main/resources/data/ny_times_inst.txt: -------------------------------------------------------------------------------- 1 | That could mean that if your best friend posted a photo of her new Bernese mountain dog’s puppies five hours ago while you were on a flight without Internet connectivity, Instagram might place that image at the top of your feed the next time you open the app. Based on your history of interaction with that friend, Instagram knows you probably would not want to miss that picture. -------------------------------------------------------------------------------- /iText-start/iText3/src/main/resources/data/premier_league.csv: -------------------------------------------------------------------------------- 1 | POS;CLUB;Played;Won;Drawn;Lost;Goals For;Goals against;Goal Difference;Points 2 | 1;Leicester City;30;18;9;3;53;31;22;63 3 | 2;Tottenham Hotspur;30;16;10;4;53;24;29;58 4 | 3;Arsenal;29;15;7;7;46;30;16;52 5 | 4;Manchester City;29;15;6;8;52;31;21;51 6 | 5;West Ham United;29;13;10;6;45;33;12;49 7 | 6;Manchester United;29;13;8;8;37;27;10;47 8 | 7;Southampton;30;12;8;10;38;30;8;44 9 | 8;Liverpool;28;12;8;8;43;37;6;44 10 | 9;Stoke City;30;12;7;11;32;36;-4;43 11 | 10;Chelsea;29;10;10;9;43;39;4;40 12 | 11;West Bromwich Albion;29;10;9;10;30;36;-6;39 13 | 12;Everton;28;9;11;8;51;39;12;38 14 | 13;Bournemouth;30;10;8;12;38;47;-9;38 15 | 14;Watford;29;10;7;12;29;30;-1;37 16 | 15;Crystal Palace;29;9;6;14;32;39;-7;33 17 | 16;Swansea City;30;8;9;13;30;40;-10;33 18 | 17;Sunderland;29;6;7;16;35;54;-19;25 19 | 18;Norwich City;30;6;7;17;31;54;-23;25 20 | 19;Newcastle United;29;6;6;17;28;54;-26;24 21 | 20;Aston Villa;30;3;7;20;22;57;-35;16 22 | -------------------------------------------------------------------------------- /iText-start/iText3/src/main/resources/img/ny_times_apple.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuteXiaoKe/iText7-examples/49e8e9759a6776fd80f08a82d7842fd1b3e15374/iText-start/iText3/src/main/resources/img/ny_times_apple.jpg -------------------------------------------------------------------------------- /iText-start/iText3/src/main/resources/img/ny_times_fb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuteXiaoKe/iText7-examples/49e8e9759a6776fd80f08a82d7842fd1b3e15374/iText-start/iText3/src/main/resources/img/ny_times_fb.jpg -------------------------------------------------------------------------------- /iText-start/iText3/src/main/resources/img/ny_times_inst.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuteXiaoKe/iText7-examples/49e8e9759a6776fd80f08a82d7842fd1b3e15374/iText-start/iText3/src/main/resources/img/ny_times_inst.jpg -------------------------------------------------------------------------------- /iText-start/iText4/.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /iText-start/iText4/.idea/libraries/Maven__com_itextpdf_barcodes_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText4/.idea/libraries/Maven__com_itextpdf_font_asian_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText4/.idea/libraries/Maven__com_itextpdf_forms_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText4/.idea/libraries/Maven__com_itextpdf_hyph_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText4/.idea/libraries/Maven__com_itextpdf_io_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText4/.idea/libraries/Maven__com_itextpdf_kernel_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText4/.idea/libraries/Maven__com_itextpdf_layout_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText4/.idea/libraries/Maven__com_itextpdf_pdfa_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText4/.idea/libraries/Maven__com_itextpdf_sign_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText4/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_13.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText4/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText4/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /iText-start/iText4/iText4.iml: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /iText-start/iText4/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | com.itext 8 | iText4 9 | 1.0-SNAPSHOT 10 | 11 | 12 | 13 | 14 | 15 | com.itextpdf 16 | kernel 17 | 7.0.3 18 | 19 | 20 | 21 | 22 | com.itextpdf 23 | io 24 | 7.0.3 25 | 26 | 27 | 28 | 29 | com.itextpdf 30 | layout 31 | 7.0.3 32 | 33 | 34 | 35 | 36 | com.itextpdf 37 | forms 38 | 7.0.3 39 | 40 | 41 | 42 | 43 | com.itextpdf 44 | pdfa 45 | 7.0.3 46 | 47 | 48 | 49 | 50 | com.itextpdf 51 | sign 52 | 7.0.3 53 | 54 | 55 | 56 | 57 | com.itextpdf 58 | barcodes 59 | 7.0.3 60 | 61 | 62 | 63 | 64 | com.itextpdf 65 | font-asian 66 | 7.0.3 67 | 68 | 69 | 70 | 71 | com.itextpdf 72 | hyph 73 | 7.0.3 74 | 75 | 76 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /iText-start/iText4/src/main/java/C04E01_01_TextAnnotation.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by ASUS on 2017/9/12. 3 | */ 4 | import com.itextpdf.kernel.color.Color; 5 | import com.itextpdf.kernel.geom.Rectangle; 6 | import com.itextpdf.kernel.pdf.PdfDocument; 7 | import com.itextpdf.kernel.pdf.PdfString; 8 | import com.itextpdf.kernel.pdf.PdfWriter; 9 | import com.itextpdf.kernel.pdf.annot.PdfAnnotation; 10 | import com.itextpdf.kernel.pdf.annot.PdfTextAnnotation; 11 | import com.itextpdf.layout.Document; 12 | import com.itextpdf.layout.element.Paragraph; 13 | 14 | import java.io.File; 15 | import java.io.IOException; 16 | 17 | /** 18 | * Simple text annotation example. 19 | */ 20 | public class C04E01_01_TextAnnotation { 21 | 22 | public static final String DEST = "results/chapter04/text_annotation.pdf"; 23 | 24 | public static void main(String args[]) throws IOException { 25 | File file = new File(DEST); 26 | file.getParentFile().mkdirs(); 27 | new C04E01_01_TextAnnotation().createPdf(DEST); 28 | } 29 | 30 | public void createPdf(String dest) throws IOException { 31 | 32 | //Initialize PDF document 33 | PdfDocument pdf = new PdfDocument(new PdfWriter(dest)); 34 | 35 | //Initialize document 36 | Document document = new Document(pdf); 37 | document.add(new Paragraph("The example of text annotation.")); 38 | 39 | //Create text annotation 40 | PdfAnnotation ann = new PdfTextAnnotation(new Rectangle(20, 800, 0, 0)) 41 | .setColor(Color.GREEN) 42 | .setTitle(new PdfString("iText")) 43 | .setContents("With iText, you can truly take your documentation needs to the next level.") 44 | .setOpen(true); 45 | pdf.getFirstPage().addAnnotation(ann); 46 | 47 | //Close document 48 | document.close(); 49 | 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /iText-start/iText4/src/main/java/C04E01_02_LinkAnnotation.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by ASUS on 2017/9/12. 3 | */ 4 | import com.itextpdf.kernel.geom.Rectangle; 5 | import com.itextpdf.kernel.pdf.PdfDocument; 6 | import com.itextpdf.kernel.pdf.PdfWriter; 7 | import com.itextpdf.kernel.pdf.action.PdfAction; 8 | import com.itextpdf.kernel.pdf.annot.PdfLinkAnnotation; 9 | import com.itextpdf.layout.Document; 10 | import com.itextpdf.layout.element.Link; 11 | import com.itextpdf.layout.element.Paragraph; 12 | 13 | import java.io.File; 14 | import java.io.IOException; 15 | 16 | /** 17 | * Simple link annotation example. 18 | */ 19 | public class C04E01_02_LinkAnnotation { 20 | 21 | public static final String DEST = "results/chapter04/link_annotation.pdf"; 22 | 23 | public static void main(String args[]) throws IOException { 24 | File file = new File(DEST); 25 | file.getParentFile().mkdirs(); 26 | new C04E01_02_LinkAnnotation().createPdf(DEST); 27 | } 28 | 29 | public void createPdf(String dest) throws IOException { 30 | 31 | //Initialize PDF document 32 | PdfDocument pdf = new PdfDocument(new PdfWriter(dest)); 33 | 34 | //Initialize document 35 | Document document = new Document(pdf); 36 | 37 | //Create link annotation 38 | PdfLinkAnnotation annotation = new PdfLinkAnnotation(new Rectangle(0, 0)) 39 | .setAction(PdfAction.createURI("http://itextpdf.com/")); 40 | Link link = new Link("here", annotation); 41 | Paragraph p = new Paragraph("The example of link annotation. Click ") 42 | .add(link.setUnderline()) 43 | .add(" to learn more..."); 44 | document.add(p); 45 | 46 | //Close document 47 | document.close(); 48 | 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /iText-start/iText4/src/main/java/C04E01_03_LineAnnotation.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by ASUS on 2017/9/12. 3 | */ 4 | import com.itextpdf.kernel.color.Color; 5 | import com.itextpdf.kernel.geom.Rectangle; 6 | import com.itextpdf.kernel.pdf.*; 7 | import com.itextpdf.kernel.pdf.annot.PdfAnnotation; 8 | import com.itextpdf.kernel.pdf.annot.PdfLineAnnotation; 9 | 10 | import java.io.File; 11 | import java.io.IOException; 12 | 13 | /** 14 | * Simple line annotation example. 15 | */ 16 | public class C04E01_03_LineAnnotation { 17 | 18 | public static final String DEST = "results/chapter04/line_annotation.pdf"; 19 | 20 | public static void main(String args[]) throws IOException { 21 | File file = new File(DEST); 22 | file.getParentFile().mkdirs(); 23 | new C04E01_03_LineAnnotation().createPdf(DEST); 24 | } 25 | 26 | public void createPdf(String dest) throws IOException { 27 | 28 | //Initialize PDF document 29 | PdfDocument pdf = new PdfDocument(new PdfWriter(dest)); 30 | PdfPage page = pdf.addNewPage(); 31 | 32 | PdfArray lineEndings = new PdfArray(); 33 | lineEndings.add(new PdfName("Diamond")); 34 | lineEndings.add(new PdfName("Diamond")); 35 | 36 | //Create line annotation with inside caption 37 | PdfAnnotation annotation = new PdfLineAnnotation( 38 | new Rectangle(0, 0), 39 | new float[]{20, 790, page.getPageSize().getWidth() - 20, 790}) 40 | .setLineEndingStyles((lineEndings)) 41 | .setContentsAsCaption(true) 42 | .setTitle(new PdfString("iText")) 43 | .setContents("The example of line annotation") 44 | .setColor(Color.BLUE); 45 | page.addAnnotation(annotation); 46 | 47 | //Close document 48 | pdf.close(); 49 | 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /iText-start/iText4/src/main/java/C04E01_04_TextMarkupAnnotation.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by ASUS on 2017/9/12. 3 | */ 4 | import com.itextpdf.kernel.color.Color; 5 | import com.itextpdf.kernel.geom.Rectangle; 6 | import com.itextpdf.kernel.pdf.PdfArray; 7 | import com.itextpdf.kernel.pdf.PdfDocument; 8 | import com.itextpdf.kernel.pdf.PdfString; 9 | import com.itextpdf.kernel.pdf.PdfWriter; 10 | import com.itextpdf.kernel.pdf.annot.PdfAnnotation; 11 | import com.itextpdf.kernel.pdf.annot.PdfTextMarkupAnnotation; 12 | import com.itextpdf.layout.Document; 13 | import com.itextpdf.layout.element.Paragraph; 14 | import com.itextpdf.layout.property.TextAlignment; 15 | import com.itextpdf.layout.property.VerticalAlignment; 16 | 17 | import java.io.File; 18 | import java.io.IOException; 19 | 20 | /** 21 | * Simple text markup annotation example. 22 | */ 23 | public class C04E01_04_TextMarkupAnnotation { 24 | 25 | public static final String DEST = "results/chapter04/textmarkup_annotation.pdf"; 26 | 27 | public static void main(String args[]) throws IOException { 28 | File file = new File(DEST); 29 | file.getParentFile().mkdirs(); 30 | new C04E01_04_TextMarkupAnnotation().createPdf(DEST); 31 | } 32 | 33 | public void createPdf(String dest) throws IOException { 34 | 35 | //Initialize PDF document 36 | PdfDocument pdf = new PdfDocument(new PdfWriter(dest)); 37 | 38 | //Initialize document 39 | Document document = new Document(pdf); 40 | 41 | Paragraph p = new Paragraph("The example of text markup annotation."); 42 | document.showTextAligned(p, 20, 795, 1, TextAlignment.LEFT, 43 | VerticalAlignment.MIDDLE, 0); 44 | 45 | //Create text markup annotation 46 | PdfAnnotation ann = PdfTextMarkupAnnotation.createHighLight(new Rectangle(105, 790, 64, 10), 47 | new float[]{169, 790, 105, 790, 169, 800, 105, 800}) 48 | .setColor(Color.YELLOW) 49 | .setTitle(new PdfString("Hello!")) 50 | .setContents(new PdfString("I'm a popup.")) 51 | .setTitle(new PdfString("iText")) 52 | .setOpen(true) 53 | .setRectangle(new PdfArray(new float[]{100, 600, 200, 100})); 54 | pdf.getFirstPage().addAnnotation(ann); 55 | 56 | //Close document 57 | document.close(); 58 | 59 | } 60 | } -------------------------------------------------------------------------------- /iText-start/iText4/src/main/java/C04E03_CreateAndFill.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by ASUS on 2017/9/12. 3 | */ 4 | import com.itextpdf.forms.PdfAcroForm; 5 | import com.itextpdf.forms.fields.PdfFormField; 6 | import com.itextpdf.kernel.pdf.PdfDocument; 7 | import com.itextpdf.kernel.pdf.PdfWriter; 8 | import com.itextpdf.layout.Document; 9 | 10 | import java.io.File; 11 | import java.io.IOException; 12 | import java.util.Map; 13 | 14 | /** 15 | * Simple filling out form example. 16 | */ 17 | public class C04E03_CreateAndFill { 18 | 19 | public static final String DEST = "results/chapter04/create_and_fill.pdf"; 20 | 21 | public static void main(String args[]) throws IOException { 22 | File file = new File(DEST); 23 | file.getParentFile().mkdirs(); 24 | new C04E03_CreateAndFill().createPdf(DEST); 25 | } 26 | 27 | public void createPdf(String dest) throws IOException { 28 | 29 | //Initialize PDF document 30 | PdfDocument pdf = new PdfDocument(new PdfWriter(dest)); 31 | 32 | // Initialize document 33 | Document doc = new Document(pdf); 34 | 35 | PdfAcroForm form = C04E02_JobApplication.addAcroForm(doc); 36 | Map fields = form.getFormFields(); 37 | fields.get("name").setValue("James Bond"); 38 | fields.get("language").setValue("English"); 39 | fields.get("experience1").setValue("Off"); 40 | fields.get("experience2").setValue("Yes"); 41 | fields.get("experience3").setValue("Yes"); 42 | fields.get("shift").setValue("Any"); 43 | fields.get("info").setValue("I was 38 years old when I became an MI6 agent."); 44 | 45 | doc.close(); 46 | 47 | } 48 | } -------------------------------------------------------------------------------- /iText-start/iText4/src/main/java/C04E04_FillForm.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by ASUS on 2017/9/12. 3 | */ 4 | import com.itextpdf.kernel.pdf.PdfDocument; 5 | import com.itextpdf.kernel.pdf.PdfReader; 6 | import com.itextpdf.kernel.pdf.PdfWriter; 7 | import com.itextpdf.forms.PdfAcroForm; 8 | import com.itextpdf.forms.fields.PdfFormField; 9 | 10 | import java.io.*; 11 | import java.util.Map; 12 | 13 | /** 14 | * Simple filling out form example. 15 | */ 16 | public class C04E04_FillForm { 17 | 18 | public static final String SRC = "src/main/resources/pdf/job_application.pdf"; 19 | public static final String DEST = "results/chapter04/fill_form.pdf"; 20 | 21 | public static void main(String args[]) throws IOException { 22 | File file = new File(DEST); 23 | file.getParentFile().mkdirs(); 24 | new C04E04_FillForm().manipulatePdf(SRC, DEST); 25 | } 26 | 27 | public void manipulatePdf(String src, String dest) throws IOException { 28 | 29 | //Initialize PDF document 30 | PdfDocument pdf = new PdfDocument(new PdfReader(src), new PdfWriter(dest)); 31 | 32 | 33 | PdfAcroForm form = PdfAcroForm.getAcroForm(pdf, true); 34 | Map fields = form.getFormFields(); 35 | fields.get("name").setValue("James Bond"); 36 | fields.get("language").setValue("English"); 37 | fields.get("experience1").setValue("Off"); 38 | fields.get("experience2").setValue("Yes"); 39 | fields.get("experience3").setValue("Yes"); 40 | fields.get("shift").setValue("Any"); 41 | fields.get("info").setValue("I was 38 years old when I became an MI6 agent."); 42 | 43 | pdf.close(); 44 | 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /iText-start/iText4/src/main/java/C04E05_FlattenForm.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by ASUS on 2017/9/12. 3 | */ 4 | import com.itextpdf.kernel.pdf.PdfDocument; 5 | import com.itextpdf.kernel.pdf.PdfReader; 6 | import com.itextpdf.kernel.pdf.PdfWriter; 7 | import com.itextpdf.forms.PdfAcroForm; 8 | import com.itextpdf.forms.fields.PdfFormField; 9 | 10 | import java.io.*; 11 | import java.util.Map; 12 | 13 | /** 14 | * Simple filling out form example. 15 | */ 16 | public class C04E05_FlattenForm { 17 | 18 | public static final String SRC = "src/main/resources/pdf/job_application.pdf"; 19 | public static final String DEST = "results/chapter04/flatten_form.pdf"; 20 | 21 | public static void main(String args[]) throws IOException { 22 | File file = new File(DEST); 23 | file.getParentFile().mkdirs(); 24 | new C04E05_FlattenForm().manipulatePdf(SRC, DEST); 25 | } 26 | 27 | public void manipulatePdf(String src, String dest) throws IOException { 28 | 29 | //Initialize PDF document 30 | PdfDocument pdf = new PdfDocument(new PdfReader(src), new PdfWriter(dest)); 31 | 32 | 33 | PdfAcroForm form = PdfAcroForm.getAcroForm(pdf, true); 34 | Map fields = form.getFormFields(); 35 | fields.get("name").setValue("James Bond"); 36 | fields.get("language").setValue("English"); 37 | fields.get("experience1").setValue("Off"); 38 | fields.get("experience2").setValue("Yes"); 39 | fields.get("experience3").setValue("Yes"); 40 | fields.get("shift").setValue("Any"); 41 | fields.get("info").setValue("I was 38 years old when I became an MI6 agent."); 42 | form.flattenFields(); 43 | 44 | pdf.close(); 45 | 46 | } 47 | } -------------------------------------------------------------------------------- /iText-start/iText4/src/main/resources/pdf/job_application.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuteXiaoKe/iText7-examples/49e8e9759a6776fd80f08a82d7842fd1b3e15374/iText-start/iText4/src/main/resources/pdf/job_application.pdf -------------------------------------------------------------------------------- /iText-start/iText5/.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /iText-start/iText5/.idea/libraries/Maven__com_itextpdf_barcodes_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText5/.idea/libraries/Maven__com_itextpdf_font_asian_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText5/.idea/libraries/Maven__com_itextpdf_forms_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText5/.idea/libraries/Maven__com_itextpdf_hyph_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText5/.idea/libraries/Maven__com_itextpdf_io_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText5/.idea/libraries/Maven__com_itextpdf_kernel_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText5/.idea/libraries/Maven__com_itextpdf_layout_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText5/.idea/libraries/Maven__com_itextpdf_pdfa_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText5/.idea/libraries/Maven__com_itextpdf_sign_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText5/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_13.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText5/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 1.8 18 | 19 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /iText-start/iText5/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /iText-start/iText5/iText5.iml: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /iText-start/iText5/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | com.itext 8 | iText5 9 | 1.0-SNAPSHOT 10 | 11 | 12 | 13 | 14 | com.itextpdf 15 | kernel 16 | 7.0.3 17 | 18 | 19 | 20 | 21 | com.itextpdf 22 | io 23 | 7.0.3 24 | 25 | 26 | 27 | 28 | com.itextpdf 29 | layout 30 | 7.0.3 31 | 32 | 33 | 34 | 35 | com.itextpdf 36 | forms 37 | 7.0.3 38 | 39 | 40 | 41 | 42 | com.itextpdf 43 | pdfa 44 | 7.0.3 45 | 46 | 47 | 48 | 49 | com.itextpdf 50 | sign 51 | 7.0.3 52 | 53 | 54 | 55 | 56 | com.itextpdf 57 | barcodes 58 | 7.0.3 59 | 60 | 61 | 62 | 63 | com.itextpdf 64 | font-asian 65 | 7.0.3 66 | 67 | 68 | 69 | 70 | com.itextpdf 71 | hyph 72 | 7.0.3 73 | 74 | 75 | 76 | 77 | 78 | -------------------------------------------------------------------------------- /iText-start/iText5/src/main/java/C05E01_AddAnnotationsAndContent.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by ASUS on 2017/11/17. 3 | */ 4 | import com.itextpdf.forms.PdfAcroForm; 5 | import com.itextpdf.forms.fields.PdfButtonFormField; 6 | import com.itextpdf.forms.fields.PdfFormField; 7 | import com.itextpdf.io.font.FontConstants; 8 | import com.itextpdf.kernel.font.PdfFontFactory; 9 | import com.itextpdf.kernel.geom.Rectangle; 10 | import com.itextpdf.kernel.pdf.PdfDocument; 11 | import com.itextpdf.kernel.pdf.PdfReader; 12 | import com.itextpdf.kernel.pdf.PdfString; 13 | import com.itextpdf.kernel.pdf.PdfWriter; 14 | import com.itextpdf.kernel.pdf.action.PdfAction; 15 | import com.itextpdf.kernel.pdf.annot.PdfAnnotation; 16 | import com.itextpdf.kernel.pdf.annot.PdfTextAnnotation; 17 | import com.itextpdf.kernel.pdf.canvas.PdfCanvas; 18 | import java.io.File; 19 | import java.io.IOException; 20 | 21 | /** 22 | * Simple adding annotations example. 23 | */ 24 | public class C05E01_AddAnnotationsAndContent { 25 | 26 | public static final String SRC = "src/main/resources/pdf/job_application.pdf"; 27 | public static final String DEST = "results/chapter05/edited_job_application.pdf"; 28 | 29 | public static void main(String args[]) throws IOException { 30 | File file = new File(DEST); 31 | file.getParentFile().mkdirs(); 32 | new C05E01_AddAnnotationsAndContent().manipulatePdf(SRC, DEST); 33 | } 34 | 35 | public void manipulatePdf(String src, String dest) throws IOException { 36 | 37 | //Initialize PDF document 38 | PdfDocument pdfDoc = new PdfDocument(new PdfReader(src), new PdfWriter(dest)); 39 | 40 | //Add text annotation 41 | PdfAnnotation ann = new PdfTextAnnotation(new Rectangle(400, 795, 0, 0)) 42 | .setTitle(new PdfString("iText")) 43 | .setContents("Please, fill out the form.") 44 | .setOpen(true); 45 | pdfDoc.getFirstPage().addAnnotation(ann); 46 | 47 | PdfCanvas canvas = new PdfCanvas(pdfDoc.getFirstPage()); 48 | canvas.beginText().setFontAndSize(PdfFontFactory.createFont(FontConstants.HELVETICA), 12) 49 | .moveText(265, 597) 50 | .showText("I agree to the terms and conditions.") 51 | .endText(); 52 | 53 | //Add form field 54 | PdfAcroForm form = PdfAcroForm.getAcroForm(pdfDoc, true); 55 | PdfButtonFormField checkField = PdfFormField.createCheckBox(pdfDoc, new Rectangle(245, 594, 15, 15), 56 | "agreement", "Off", PdfFormField.TYPE_CHECK); 57 | checkField.setRequired(true); 58 | form.addField(checkField); 59 | 60 | //Update reset button 61 | form.getField("reset").setAction(PdfAction.createResetForm(new String[]{"name", "language", 62 | "experience1", "experience2", "experience3", "shift", "info", "agreement"}, 0)); 63 | 64 | pdfDoc.close(); 65 | 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /iText-start/iText5/src/main/java/C05E02_FillAndModifyForm.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by ASUS on 2017/11/17. 3 | */ 4 | import com.itextpdf.forms.PdfAcroForm; 5 | import com.itextpdf.forms.fields.PdfFormField; 6 | import com.itextpdf.io.font.FontConstants; 7 | import com.itextpdf.kernel.color.Color; 8 | import com.itextpdf.kernel.font.PdfFont; 9 | import com.itextpdf.kernel.font.PdfFontFactory; 10 | import com.itextpdf.kernel.pdf.*; 11 | 12 | import java.io.File; 13 | import java.io.IOException; 14 | import java.util.ArrayList; 15 | import java.util.List; 16 | import java.util.Map; 17 | 18 | /** 19 | * Simple filling out form example. 20 | */ 21 | public class C05E02_FillAndModifyForm { 22 | 23 | public static final String SRC = "src/main/resources/pdf/job_application.pdf"; 24 | public static final String DEST = "results/chapter05/filled_out_job_application.pdf"; 25 | 26 | public static void main(String args[]) throws IOException { 27 | File file = new File(DEST); 28 | file.getParentFile().mkdirs(); 29 | new C05E02_FillAndModifyForm().manipulatePdf(SRC, DEST); 30 | } 31 | 32 | public void manipulatePdf(String src, String dest) throws IOException { 33 | 34 | //Initialize PDF document 35 | PdfDocument pdfDoc = new PdfDocument(new PdfReader(src), new PdfWriter(dest)); 36 | 37 | 38 | PdfAcroForm form = PdfAcroForm.getAcroForm(pdfDoc, true); 39 | Map fields = form.getFormFields(); 40 | 41 | fields.get("name").setValue("James Bond").setBackgroundColor(Color.ORANGE); 42 | fields.get("language").setValue("English"); 43 | 44 | fields.get("experience1").setValue("Yes"); 45 | fields.get("experience2").setValue("Yes"); 46 | fields.get("experience3").setValue("Yes"); 47 | 48 | List options = new ArrayList(); 49 | options.add(new PdfString("Any")); 50 | options.add(new PdfString("8.30 am - 12.30 pm")); 51 | options.add(new PdfString("12.30 pm - 4.30 pm")); 52 | options.add(new PdfString("4.30 pm - 8.30 pm")); 53 | options.add(new PdfString("8.30 pm - 12.30 am")); 54 | options.add(new PdfString("12.30 am - 4.30 am")); 55 | options.add(new PdfString("4.30 am - 8.30 am")); 56 | PdfArray arr = new PdfArray(options); 57 | fields.get("shift").setOptions(arr); 58 | fields.get("shift").setValue("Any"); 59 | 60 | PdfFont courier = PdfFontFactory.createFont(FontConstants.COURIER); 61 | fields.get("info").setValue("I was 38 years old when I became an MI6 agent.", courier, 7f); 62 | 63 | pdfDoc.close(); 64 | 65 | } 66 | } -------------------------------------------------------------------------------- /iText-start/iText5/src/main/java/C05E03_AddContent.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by ASUS on 2017/11/17. 3 | */ 4 | import com.itextpdf.io.font.FontConstants; 5 | import com.itextpdf.kernel.color.Color; 6 | import com.itextpdf.kernel.font.PdfFontFactory; 7 | import com.itextpdf.kernel.geom.Rectangle; 8 | import com.itextpdf.kernel.pdf.PdfDocument; 9 | import com.itextpdf.kernel.pdf.PdfPage; 10 | import com.itextpdf.kernel.pdf.PdfReader; 11 | import com.itextpdf.kernel.pdf.PdfWriter; 12 | import com.itextpdf.kernel.pdf.canvas.PdfCanvas; 13 | import com.itextpdf.kernel.pdf.extgstate.PdfExtGState; 14 | import com.itextpdf.layout.Document; 15 | import com.itextpdf.layout.element.Paragraph; 16 | import com.itextpdf.layout.property.TextAlignment; 17 | import com.itextpdf.layout.property.VerticalAlignment; 18 | 19 | import java.io.File; 20 | import java.io.IOException; 21 | 22 | /** 23 | * Simple adding content example. 24 | */ 25 | public class C05E03_AddContent { 26 | 27 | public static final String SRC = "src/main/resources/pdf/ufo.pdf"; 28 | 29 | public static final String DEST = "results/chapter05/add_content.pdf"; 30 | 31 | public static void main(String args[]) throws IOException { 32 | File file = new File(DEST); 33 | file.getParentFile().mkdirs(); 34 | new C05E03_AddContent().manipulatePdf(SRC, DEST); 35 | } 36 | 37 | public void manipulatePdf(String src, String dest) throws IOException { 38 | 39 | //Initialize PDF document 40 | PdfDocument pdfDoc = new PdfDocument(new PdfReader(src), new PdfWriter(dest)); 41 | 42 | Document document = new Document(pdfDoc); 43 | Rectangle pageSize; 44 | PdfCanvas canvas; 45 | int n = pdfDoc.getNumberOfPages(); 46 | for (int i = 1; i <= n; i++) { 47 | PdfPage page = pdfDoc.getPage(i); 48 | pageSize = page.getPageSize(); 49 | canvas = new PdfCanvas(page); 50 | //Draw header text 51 | canvas.beginText().setFontAndSize(PdfFontFactory.createFont(FontConstants.HELVETICA), 7) 52 | .moveText(pageSize.getWidth() / 2 - 24, pageSize.getHeight() - 10) 53 | .showText("I want to believe") 54 | .endText(); 55 | //Draw footer line 56 | canvas.setStrokeColor(Color.BLACK) 57 | .setLineWidth(.2f) 58 | .moveTo(pageSize.getWidth() / 2 - 30, 20) 59 | .lineTo(pageSize.getWidth() / 2 + 30, 20).stroke(); 60 | //Draw page number 61 | canvas.beginText().setFontAndSize(PdfFontFactory.createFont(FontConstants.HELVETICA), 7) 62 | .moveText(pageSize.getWidth() / 2 - 7, 10) 63 | .showText(String.valueOf(i)) 64 | .showText(" of ") 65 | .showText(String.valueOf(n)) 66 | .endText(); 67 | //Draw watermark 68 | Paragraph p = new Paragraph("CONFIDENTIAL").setFontSize(60); 69 | canvas.saveState(); 70 | PdfExtGState gs1 = new PdfExtGState().setFillOpacity(0.2f); 71 | canvas.setExtGState(gs1); 72 | document.showTextAligned(p, 73 | pageSize.getWidth() / 2, pageSize.getHeight() / 2, 74 | pdfDoc.getPageNumber(page), 75 | TextAlignment.CENTER, VerticalAlignment.MIDDLE, 45); 76 | canvas.restoreState(); 77 | } 78 | 79 | pdfDoc.close(); 80 | 81 | } 82 | } -------------------------------------------------------------------------------- /iText-start/iText5/src/main/java/C05E04_ChangePage.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by ASUS on 2017/11/17. 3 | */ 4 | import com.itextpdf.kernel.color.*; 5 | import com.itextpdf.kernel.geom.Rectangle; 6 | import com.itextpdf.kernel.pdf.*; 7 | import com.itextpdf.kernel.pdf.canvas.PdfCanvas; 8 | 9 | import java.io.File; 10 | import java.io.IOException; 11 | 12 | /** 13 | * Simple changing page properties example. 14 | */ 15 | public class C05E04_ChangePage { 16 | 17 | public static final String SRC = "src/main/resources/pdf/ufo.pdf"; 18 | public static final String DEST = "results/chapter05/change_page.pdf"; 19 | 20 | public static void main(String args[]) throws IOException { 21 | File file = new File(DEST); 22 | file.getParentFile().mkdirs(); 23 | new C05E04_ChangePage().manipulatePdf(SRC, DEST); 24 | } 25 | 26 | public void manipulatePdf(String src, String dest) throws IOException { 27 | 28 | //Initialize PDF document 29 | PdfDocument pdfDoc = new PdfDocument(new PdfReader(src), new PdfWriter(dest)); 30 | 31 | 32 | float margin = 72; 33 | for (int i = 1; i <= pdfDoc.getNumberOfPages(); i++) { 34 | PdfPage page = pdfDoc.getPage(i); 35 | // change page size 36 | Rectangle mediaBox = page.getMediaBox(); 37 | Rectangle newMediaBox = new Rectangle(mediaBox.getLeft() - margin, mediaBox.getBottom() - margin, 38 | mediaBox.getWidth() + margin * 2, mediaBox.getHeight() + margin * 2); 39 | page.setMediaBox(newMediaBox); 40 | // add border 41 | PdfCanvas over = new PdfCanvas(page); 42 | over.setStrokeColor(Color.GRAY); 43 | over.rectangle(mediaBox.getLeft(), mediaBox.getBottom(), mediaBox.getWidth(), mediaBox.getHeight()); 44 | over.stroke(); 45 | // change rotation of the even pages 46 | if (i % 2 == 0) { 47 | page.setRotation(180); 48 | } 49 | } 50 | 51 | pdfDoc.close(); 52 | 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /iText-start/iText5/src/main/resources/pdf/job_application.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuteXiaoKe/iText7-examples/49e8e9759a6776fd80f08a82d7842fd1b3e15374/iText-start/iText5/src/main/resources/pdf/job_application.pdf -------------------------------------------------------------------------------- /iText-start/iText5/src/main/resources/pdf/ufo.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuteXiaoKe/iText7-examples/49e8e9759a6776fd80f08a82d7842fd1b3e15374/iText-start/iText5/src/main/resources/pdf/ufo.pdf -------------------------------------------------------------------------------- /iText-start/iText6/.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /iText-start/iText6/.idea/libraries/Maven__com_itextpdf_barcodes_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText6/.idea/libraries/Maven__com_itextpdf_font_asian_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText6/.idea/libraries/Maven__com_itextpdf_forms_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText6/.idea/libraries/Maven__com_itextpdf_hyph_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText6/.idea/libraries/Maven__com_itextpdf_io_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText6/.idea/libraries/Maven__com_itextpdf_kernel_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText6/.idea/libraries/Maven__com_itextpdf_layout_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText6/.idea/libraries/Maven__com_itextpdf_pdfa_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText6/.idea/libraries/Maven__com_itextpdf_sign_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText6/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_13.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText6/.idea/misc.xml: -------------------------------------------------------------------------------- 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 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /iText-start/iText6/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /iText-start/iText6/iText6.iml: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /iText-start/iText6/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | com.itext 8 | iText6 9 | 1.0-SNAPSHOT 10 | 11 | 12 | 13 | 14 | 15 | com.itextpdf 16 | kernel 17 | 7.0.3 18 | 19 | 20 | 21 | 22 | com.itextpdf 23 | io 24 | 7.0.3 25 | 26 | 27 | 28 | 29 | com.itextpdf 30 | layout 31 | 7.0.3 32 | 33 | 34 | 35 | 36 | com.itextpdf 37 | forms 38 | 7.0.3 39 | 40 | 41 | 42 | 43 | com.itextpdf 44 | pdfa 45 | 7.0.3 46 | 47 | 48 | 49 | 50 | com.itextpdf 51 | sign 52 | 7.0.3 53 | 54 | 55 | 56 | 57 | com.itextpdf 58 | barcodes 59 | 7.0.3 60 | 61 | 62 | 63 | 64 | com.itextpdf 65 | font-asian 66 | 7.0.3 67 | 68 | 69 | 70 | 71 | com.itextpdf 72 | hyph 73 | 7.0.3 74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /iText-start/iText6/src/main/java/C06E01_TheGoldenGateBridge_Scale_Shrink.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by ASUS on 2017/12/7. 3 | */ 4 | import com.itextpdf.kernel.geom.AffineTransform; 5 | import com.itextpdf.kernel.geom.PageSize; 6 | import com.itextpdf.kernel.geom.Rectangle; 7 | import com.itextpdf.kernel.pdf.PdfDocument; 8 | import com.itextpdf.kernel.pdf.PdfPage; 9 | import com.itextpdf.kernel.pdf.PdfReader; 10 | import com.itextpdf.kernel.pdf.PdfWriter; 11 | import com.itextpdf.kernel.pdf.canvas.PdfCanvas; 12 | import com.itextpdf.kernel.pdf.xobject.PdfFormXObject; 13 | 14 | import java.io.File; 15 | import java.io.IOException; 16 | 17 | public class C06E01_TheGoldenGateBridge_Scale_Shrink { 18 | public static final String SRC = "src/main/resources/pdf/the_golden_gate_bridge.pdf"; 19 | public static final String DEST = "results/chapter06/the_golden_gate_bridge_scale_shrink.pdf"; 20 | 21 | public static void main(String args[]) throws IOException { 22 | File file = new File(DEST); 23 | file.getParentFile().mkdirs(); 24 | new C06E01_TheGoldenGateBridge_Scale_Shrink().createPdf(SRC, DEST); 25 | } 26 | 27 | public void createPdf(String src, String dest) throws IOException { 28 | //Initialize PDF document 29 | PdfDocument pdf = new PdfDocument(new PdfWriter(dest)); 30 | PdfDocument origPdf = new PdfDocument(new PdfReader(src)); 31 | 32 | //Original page size 33 | PdfPage origPage = origPdf.getPage(1); 34 | Rectangle orig = origPage.getPageSizeWithRotation(); 35 | 36 | //Add A4 page 37 | PdfPage page = pdf.addNewPage(PageSize.A4.rotate()); 38 | //Shrink original page content using transformation matrix 39 | PdfCanvas canvas = new PdfCanvas(page); 40 | AffineTransform transformationMatrix = AffineTransform.getScaleInstance(page.getPageSize().getWidth() / orig.getWidth(), page.getPageSize().getHeight() / orig.getHeight()); 41 | canvas.concatMatrix(transformationMatrix); 42 | PdfFormXObject pageCopy = origPage.copyAsFormXObject(pdf); 43 | canvas.addXObject(pageCopy, 0, 0); 44 | 45 | //Add page with original size 46 | pdf.addPage(origPage.copyTo(pdf)); 47 | 48 | //Add A2 page 49 | page = pdf.addNewPage(PageSize.A2.rotate()); 50 | //Scale original page content using transformation matrix 51 | canvas = new PdfCanvas(page); 52 | transformationMatrix = AffineTransform.getScaleInstance(page.getPageSize().getWidth() / orig.getWidth(), page.getPageSize().getHeight() / orig.getHeight()); 53 | canvas.concatMatrix(transformationMatrix); 54 | canvas.addXObject(pageCopy, 0, 0); 55 | 56 | pdf.close(); 57 | origPdf.close(); 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /iText-start/iText6/src/main/java/C06E02_TheGoldenGateBridge_Tiles.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by ASUS on 2017/12/7. 3 | */ 4 | import com.itextpdf.kernel.geom.AffineTransform; 5 | import com.itextpdf.kernel.geom.PageSize; 6 | import com.itextpdf.kernel.geom.Rectangle; 7 | import com.itextpdf.kernel.pdf.PdfDocument; 8 | import com.itextpdf.kernel.pdf.PdfPage; 9 | import com.itextpdf.kernel.pdf.PdfReader; 10 | import com.itextpdf.kernel.pdf.PdfWriter; 11 | import com.itextpdf.kernel.pdf.canvas.PdfCanvas; 12 | import com.itextpdf.kernel.pdf.xobject.PdfFormXObject; 13 | 14 | import java.io.File; 15 | import java.io.IOException; 16 | 17 | public class C06E02_TheGoldenGateBridge_Tiles { 18 | public static final String SRC = "src/main/resources/pdf/the_golden_gate_bridge.pdf"; 19 | public static final String DEST = "results/chapter06/the_golden_gate_bridge_tiles.pdf"; 20 | 21 | public static void main(String args[]) throws IOException { 22 | File file = new File(DEST); 23 | file.getParentFile().mkdirs(); 24 | new C06E02_TheGoldenGateBridge_Tiles().createPdf(SRC, DEST); 25 | } 26 | 27 | public void createPdf(String src, String dest) throws IOException { 28 | //Initialize PDF document 29 | PdfDocument pdf = new PdfDocument(new PdfWriter(dest)); 30 | PdfDocument sourcePdf = new PdfDocument(new PdfReader(src)); 31 | 32 | //Original page 33 | PdfPage origPage = sourcePdf.getPage(1); 34 | PdfFormXObject pageCopy = origPage.copyAsFormXObject(pdf); 35 | 36 | //Original page size 37 | Rectangle orig = origPage.getPageSize(); 38 | //Tile size 39 | Rectangle tileSize = PageSize.A4.rotate(); 40 | // Transformation matrix 41 | AffineTransform transformationMatrix = AffineTransform.getScaleInstance(tileSize.getWidth() / orig.getWidth() * 2f, tileSize.getHeight() / orig.getHeight() * 2f); 42 | 43 | 44 | //The first tile 45 | PdfPage page = pdf.addNewPage(PageSize.A4.rotate()); 46 | PdfCanvas canvas = new PdfCanvas(page); 47 | canvas.concatMatrix(transformationMatrix); 48 | canvas.addXObject(pageCopy, 0, -orig.getHeight() / 2f); 49 | 50 | //The second tile 51 | page = pdf.addNewPage(PageSize.A4.rotate()); 52 | canvas = new PdfCanvas(page); 53 | canvas.concatMatrix(transformationMatrix); 54 | canvas.addXObject(pageCopy, -orig.getWidth() / 2f, -orig.getHeight() / 2f); 55 | 56 | //The third tile 57 | page = pdf.addNewPage(PageSize.A4.rotate()); 58 | canvas = new PdfCanvas(page); 59 | canvas.concatMatrix(transformationMatrix); 60 | canvas.addXObject(pageCopy, 0, 0); 61 | 62 | //The fourth tile 63 | page = pdf.addNewPage(PageSize.A4.rotate()); 64 | canvas = new PdfCanvas(page); 65 | canvas.concatMatrix(transformationMatrix); 66 | canvas.addXObject(pageCopy, -orig.getWidth() / 2f, 0); 67 | 68 | pdf.close(); 69 | sourcePdf.close(); 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /iText-start/iText6/src/main/java/C06E03_TheGoldenGateBridge_N_up.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by ASUS on 2017/12/7. 3 | */ 4 | import com.itextpdf.kernel.geom.AffineTransform; 5 | import com.itextpdf.kernel.geom.PageSize; 6 | import com.itextpdf.kernel.geom.Rectangle; 7 | import com.itextpdf.kernel.pdf.PdfDocument; 8 | import com.itextpdf.kernel.pdf.PdfPage; 9 | import com.itextpdf.kernel.pdf.PdfReader; 10 | import com.itextpdf.kernel.pdf.PdfWriter; 11 | import com.itextpdf.kernel.pdf.canvas.PdfCanvas; 12 | import com.itextpdf.kernel.pdf.xobject.PdfFormXObject; 13 | 14 | import java.io.File; 15 | import java.io.IOException; 16 | 17 | public class C06E03_TheGoldenGateBridge_N_up { 18 | public static final String SRC = "src/main/resources/pdf/the_golden_gate_bridge.pdf"; 19 | public static final String DEST = "results/chapter06/the_golden_gate_bridge_nup.pdf"; 20 | 21 | public static void main(String args[]) throws IOException { 22 | File file = new File(DEST); 23 | file.getParentFile().mkdirs(); 24 | new C06E03_TheGoldenGateBridge_N_up().createPdf(DEST); 25 | } 26 | 27 | public void createPdf(String dest) throws IOException { 28 | //Initialize PDF document 29 | PdfDocument pdf = new PdfDocument(new PdfWriter(dest)); 30 | PdfDocument sourcePdf = new PdfDocument(new PdfReader(SRC)); 31 | 32 | //Original page 33 | PdfPage origPage = sourcePdf.getPage(1); 34 | 35 | //Original page size 36 | Rectangle orig = origPage.getPageSize(); 37 | PdfFormXObject pageCopy = origPage.copyAsFormXObject(pdf); 38 | 39 | //N-up page 40 | PageSize nUpPageSize = PageSize.A4.rotate(); 41 | PdfPage page = pdf.addNewPage(nUpPageSize); 42 | PdfCanvas canvas = new PdfCanvas(page); 43 | 44 | //Scale page 45 | AffineTransform transformationMatrix = AffineTransform.getScaleInstance(nUpPageSize.getWidth() / orig.getWidth() / 2f, nUpPageSize.getHeight() / orig.getHeight() / 2f); 46 | canvas.concatMatrix(transformationMatrix); 47 | 48 | //Add pages to N-up page 49 | canvas.addXObject(pageCopy, 0, orig.getHeight()); 50 | canvas.addXObject(pageCopy, orig.getWidth(), orig.getHeight()); 51 | canvas.addXObject(pageCopy, 0, 0); 52 | canvas.addXObject(pageCopy, orig.getWidth(), 0); 53 | 54 | pdf.close(); 55 | sourcePdf.close(); 56 | } 57 | } -------------------------------------------------------------------------------- /iText-start/iText6/src/main/java/C06E04_88th_Oscar_Combine.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by ASUS on 2017/12/7. 3 | */ 4 | import com.itextpdf.kernel.pdf.*; 5 | import com.itextpdf.kernel.utils.PdfMerger; 6 | 7 | import java.io.File; 8 | import java.io.IOException; 9 | 10 | public class C06E04_88th_Oscar_Combine { 11 | public static final String SRC1 = "src/main/resources/pdf/88th_reminder_list.pdf"; 12 | public static final String SRC2 = "src/main/resources/pdf/88th_noms_announcement.pdf"; 13 | public static final String DEST = "results/chapter06/88th_oscar_combined_documents.pdf"; 14 | 15 | public static void main(String args[]) throws IOException { 16 | File file = new File(DEST); 17 | file.getParentFile().mkdirs(); 18 | new C06E04_88th_Oscar_Combine().createPdf(DEST); 19 | } 20 | 21 | public void createPdf(String dest) throws IOException { 22 | //Initialize PDF document with output intent 23 | PdfDocument pdf = new PdfDocument(new PdfWriter(dest)); 24 | PdfMerger merger = new PdfMerger(pdf); 25 | 26 | //Add pages from the first document 27 | PdfDocument firstSourcePdf = new PdfDocument(new PdfReader(SRC1)); 28 | merger.merge(firstSourcePdf, 1, firstSourcePdf.getNumberOfPages()); 29 | 30 | //Add pages from the second pdf document 31 | PdfDocument secondSourcePdf = new PdfDocument(new PdfReader(SRC2)); 32 | merger.merge(secondSourcePdf, 1, secondSourcePdf.getNumberOfPages()); 33 | 34 | firstSourcePdf.close(); 35 | secondSourcePdf.close(); 36 | pdf.close(); 37 | } 38 | } -------------------------------------------------------------------------------- /iText-start/iText6/src/main/java/C06E05_88th_Oscar_CombineXofY.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by ASUS on 2017/12/7. 3 | */ 4 | import com.itextpdf.kernel.pdf.PdfDocument; 5 | import com.itextpdf.kernel.pdf.PdfReader; 6 | import com.itextpdf.kernel.pdf.PdfWriter; 7 | import com.itextpdf.kernel.utils.PdfMerger; 8 | 9 | import java.io.File; 10 | import java.io.IOException; 11 | import java.util.Arrays; 12 | 13 | public class C06E05_88th_Oscar_CombineXofY { 14 | public static final String SRC1 = "src/main/resources/pdf/88th_reminder_list.pdf"; 15 | public static final String SRC2 = "src/main/resources/pdf/88th_noms_announcement.pdf"; 16 | public static final String DEST = "results/chapter06/88th_oscar_combined_documents_xy_pages.pdf"; 17 | 18 | public static void main(String args[]) throws IOException { 19 | File file = new File(DEST); 20 | file.getParentFile().mkdirs(); 21 | new C06E05_88th_Oscar_CombineXofY().createPdf(DEST); 22 | } 23 | 24 | public void createPdf(String dest) throws IOException { 25 | //Initialize PDF document with output intent 26 | PdfDocument pdf = new PdfDocument(new PdfWriter(dest)); 27 | 28 | PdfMerger merger = new PdfMerger(pdf); 29 | 30 | //Add pages from the first document 31 | PdfDocument firstSourcePdf = new PdfDocument(new PdfReader(SRC1)); 32 | merger.merge(firstSourcePdf, Arrays.asList(1, 5, 7, 1)); 33 | 34 | //Add pages from the second pdf document 35 | PdfDocument secondSourcePdf = new PdfDocument(new PdfReader(SRC2)); 36 | merger.merge(secondSourcePdf, Arrays.asList(1, 15)); 37 | 38 | firstSourcePdf.close(); 39 | secondSourcePdf.close(); 40 | pdf.close(); 41 | } 42 | } -------------------------------------------------------------------------------- /iText-start/iText6/src/main/java/C06E07_Combine_Forms.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by ASUS on 2017/12/7. 3 | */ 4 | import com.itextpdf.forms.PdfPageFormCopier; 5 | import com.itextpdf.kernel.pdf.*; 6 | 7 | import java.io.File; 8 | import java.io.IOException; 9 | 10 | public class C06E07_Combine_Forms { 11 | public static final String DEST = "results/chapter06/combined_forms.pdf"; 12 | public static final String SRC1 = "src/main/resources/pdf/subscribe.pdf"; 13 | public static final String SRC2 = "src/main/resources/pdf/state.pdf"; 14 | 15 | public static void main(String args[]) throws IOException { 16 | File file = new File(DEST); 17 | file.getParentFile().mkdirs(); 18 | new C06E07_Combine_Forms().createPdf(DEST); 19 | } 20 | 21 | public void createPdf(String dest) throws IOException { 22 | PdfDocument destPdfDocument = new PdfDocument(new PdfWriter(dest)); 23 | PdfDocument[] sources = new PdfDocument[] { 24 | new PdfDocument(new PdfReader(SRC1)), 25 | new PdfDocument(new PdfReader(SRC2)) 26 | }; 27 | PdfPageFormCopier formCopier = new PdfPageFormCopier(); 28 | for (PdfDocument sourcePdfDocument : sources) { 29 | sourcePdfDocument.copyPagesTo( 30 | 1, sourcePdfDocument.getNumberOfPages(), 31 | destPdfDocument, formCopier); 32 | sourcePdfDocument.close(); 33 | } 34 | destPdfDocument.close(); 35 | } 36 | } -------------------------------------------------------------------------------- /iText-start/iText6/src/main/java/C06E08_FillOutAndMergeForms.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by ASUS on 2017/12/7. 3 | */ 4 | import com.itextpdf.forms.PdfAcroForm; 5 | import com.itextpdf.forms.PdfPageFormCopier; 6 | import com.itextpdf.forms.fields.PdfFormField; 7 | import com.itextpdf.io.source.ByteArrayOutputStream; 8 | import com.itextpdf.kernel.pdf.PdfDocument; 9 | import com.itextpdf.kernel.pdf.PdfReader; 10 | import com.itextpdf.kernel.pdf.PdfWriter; 11 | 12 | import java.io.*; 13 | import java.util.Map; 14 | import java.util.StringTokenizer; 15 | 16 | public class C06E08_FillOutAndMergeForms { 17 | public static final String DEST = "results/chapter06/fill_out_and_merge_forms.pdf"; 18 | public static final String SRC = "src/main/resources/pdf/state.pdf"; 19 | public static final String DATA = "src/main/resources/data/united_states.csv"; 20 | 21 | public static void main(String args[]) throws IOException { 22 | File file = new File(DEST); 23 | file.getParentFile().mkdirs(); 24 | new C06E08_FillOutAndMergeForms().createPdf(DEST); 25 | } 26 | 27 | public void createPdf(String dest) throws IOException { 28 | PdfDocument pdfDocument = new PdfDocument(new PdfWriter(dest)); 29 | PdfPageFormCopier formCopier = new PdfPageFormCopier(); 30 | 31 | BufferedReader bufferedReader = new BufferedReader(new FileReader(DATA)); 32 | String line; 33 | boolean headerLine = true; 34 | int i = 1; 35 | while ((line = bufferedReader.readLine()) != null) { 36 | if (headerLine) { 37 | headerLine = false; 38 | continue; 39 | } 40 | 41 | ByteArrayOutputStream baos = new ByteArrayOutputStream(); 42 | PdfDocument sourcePdfDocument = new PdfDocument(new PdfReader(SRC), new PdfWriter(baos)); 43 | 44 | //Rename fields 45 | i++; 46 | PdfAcroForm form = PdfAcroForm.getAcroForm(sourcePdfDocument, true); 47 | form.renameField("name", "name_" + i); 48 | form.renameField("abbr", "abbr_" + i); 49 | form.renameField("capital", "capital_" + i); 50 | form.renameField("city", "city_" + i); 51 | form.renameField("population", "population_" + i); 52 | form.renameField("surface", "surface_" + i); 53 | form.renameField("timezone1", "timezone1_" + i); 54 | form.renameField("timezone2", "timezone2_" + i); 55 | form.renameField("dst", "dst_" + i); 56 | 57 | //Fill out fields 58 | StringTokenizer tokenizer = new StringTokenizer(line, ";"); 59 | Map fields = form.getFormFields(); 60 | fields.get("name_" + i).setValue(tokenizer.nextToken()); 61 | fields.get("abbr_" + i).setValue(tokenizer.nextToken()); 62 | fields.get("capital_" + i).setValue(tokenizer.nextToken()); 63 | fields.get("city_" + i).setValue(tokenizer.nextToken()); 64 | fields.get("population_" + i).setValue(tokenizer.nextToken()); 65 | fields.get("surface_" + i).setValue(tokenizer.nextToken()); 66 | fields.get("timezone1_" + i).setValue(tokenizer.nextToken()); 67 | fields.get("timezone2_" + i).setValue(tokenizer.nextToken()); 68 | fields.get("dst_" + i).setValue(tokenizer.nextToken()); 69 | 70 | sourcePdfDocument.close(); 71 | sourcePdfDocument = new PdfDocument(new PdfReader(new ByteArrayInputStream(baos.toByteArray()))); 72 | 73 | //Copy pages 74 | sourcePdfDocument.copyPagesTo(1, sourcePdfDocument.getNumberOfPages(), pdfDocument, formCopier); 75 | sourcePdfDocument.close(); 76 | } 77 | 78 | bufferedReader.close(); 79 | pdfDocument.close(); 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /iText-start/iText6/src/main/java/C06E09_FillOutFlattenAndMergeForms.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by ASUS on 2017/12/7. 3 | */ 4 | import com.itextpdf.forms.PdfAcroForm; 5 | import com.itextpdf.forms.fields.PdfFormField; 6 | import com.itextpdf.io.source.ByteArrayOutputStream; 7 | import com.itextpdf.kernel.pdf.PdfDocument; 8 | import com.itextpdf.kernel.pdf.PdfReader; 9 | import com.itextpdf.kernel.pdf.PdfWriter; 10 | 11 | import java.io.*; 12 | import java.util.Map; 13 | import java.util.StringTokenizer; 14 | 15 | public class C06E09_FillOutFlattenAndMergeForms { 16 | public static final String DEST1 = "results/chapter06/fill_out_flatten_forms_merge.pdf"; 17 | public static final String DEST2 = "results/chapter06/fill_out_flatten_forms_smart_merge.pdf"; 18 | public static final String SRC = "src/main/resources/pdf/state.pdf"; 19 | public static final String DATA = "src/main/resources/data/united_states.csv"; 20 | 21 | public static void main(String args[]) throws IOException { 22 | File file = new File(DEST1); 23 | file.getParentFile().mkdirs(); 24 | file = new File(DEST2); 25 | file.getParentFile().mkdirs(); 26 | new C06E09_FillOutFlattenAndMergeForms().createPdf(DEST1, DEST2); 27 | } 28 | 29 | public void createPdf(String dest1, String dest2) throws IOException { 30 | PdfDocument destPdfDocument = new PdfDocument(new PdfWriter(dest1)); 31 | //Smart mode 32 | PdfDocument destPdfDocumentSmartMode = new PdfDocument(new PdfWriter(dest2).setSmartMode(true)); 33 | 34 | BufferedReader bufferedReader = new BufferedReader(new FileReader(DATA)); 35 | String line; 36 | boolean headerLine = true; 37 | while ((line = bufferedReader.readLine()) != null) { 38 | if (headerLine) { 39 | headerLine = false; 40 | continue; 41 | } 42 | ByteArrayOutputStream baos = new ByteArrayOutputStream(); 43 | PdfDocument sourcePdfDocument = new PdfDocument(new PdfReader(SRC), new PdfWriter(baos)); 44 | 45 | //Read fields 46 | PdfAcroForm form = PdfAcroForm.getAcroForm(sourcePdfDocument, true); 47 | StringTokenizer tokenizer = new StringTokenizer(line, ";"); 48 | Map fields = form.getFormFields(); 49 | 50 | //Fill out fields 51 | fields.get("name").setValue(tokenizer.nextToken()); 52 | fields.get("abbr").setValue(tokenizer.nextToken()); 53 | fields.get("capital").setValue(tokenizer.nextToken()); 54 | fields.get("city").setValue(tokenizer.nextToken()); 55 | fields.get("population").setValue(tokenizer.nextToken()); 56 | fields.get("surface").setValue(tokenizer.nextToken()); 57 | fields.get("timezone1").setValue(tokenizer.nextToken()); 58 | fields.get("timezone2").setValue(tokenizer.nextToken()); 59 | fields.get("dst").setValue(tokenizer.nextToken()); 60 | 61 | //Flatten fields 62 | form.flattenFields(); 63 | 64 | sourcePdfDocument.close(); 65 | sourcePdfDocument = new PdfDocument(new PdfReader(new ByteArrayInputStream(baos.toByteArray()))); 66 | 67 | //Copy pages 68 | sourcePdfDocument.copyPagesTo(1, sourcePdfDocument.getNumberOfPages(), destPdfDocument, null); 69 | sourcePdfDocument.copyPagesTo(1, sourcePdfDocument.getNumberOfPages(), destPdfDocumentSmartMode, null); 70 | 71 | sourcePdfDocument.close(); 72 | } 73 | 74 | bufferedReader.close(); 75 | 76 | destPdfDocument.close(); 77 | destPdfDocumentSmartMode.close(); 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /iText-start/iText6/src/main/resources/data/united_states.csv: -------------------------------------------------------------------------------- 1 | name;abbr;capital;most populous city;population;square miles;time zone 1;time zone 2;dst 2 | ALABAMA;AL;Montgomery;Birmingham;4,708,708;52,423;CST (UTC-6);EST (UTC-5);YES 3 | ALASKA;AK;Juneau;Anchorage;698,473;656,425;AKST (UTC-09) ;HST (UTC-10) ;YES 4 | ARIZONA;AZ;Phoenix;Phoenix;6,595,778;114,006;MT (UTC-07); ;NO 5 | ARKANSAS;AR;Little Rock;Little Rock;2,889,450;53,182;CST (UTC-6); ;YES 6 | CALIFORNIA;CA;Sacramento;Los Angeles;36,961,664;163,707;PT (UTC-8); ;YES 7 | COLORADO;CO;Denver;Denver;5,024,748;104,100;MT (UTC-07); ;YES 8 | CONNECTICUT;CT;Hartford;Bridgeport;3,518,288;5,544;EST (UTC-5); ;YES 9 | DELAWARE;DE;Dover;Wilmington;885,122;1,954;EST (UTC-5); ;YES 10 | FLORIDA;FL;Tallahassee;Jacksonville;18,537,969;65,758;EST (UTC-5);CST (UTC-6);YES 11 | GEORGIA;GA;Atlanta;Atlanta;9,829,211;59,441;EST (UTC-5); ;YES 12 | HAWAII;HI;Honolulu;Honolulu;1,295,178;10,932;HST (UTC-10) ; ;NO 13 | IDAHO;ID;Boise;Boise;1,545,801;83,574;MT (UTC-07);PT (UTC-8);YES 14 | ILLINOIS;IL;Springfield;Chicago;12,910,409;57,918;CST (UTC-6); ;YES 15 | INDIANA;IN;Indianapolis;Indianapolis;6,423,113;36,420;EST (UTC-5);CST (UTC-6);YES 16 | IOWA;IA;Des Moines;Des Moines;3,007,856;56,276;CST (UTC-6); ;YES 17 | KANSAS;KS;Topeka;Wichita;2,818,747;82,282;CST (UTC-6);MT (UTC-07);YES 18 | KENTUCKY;KY;Frankfort;Louisville;4,314,113;40,411;EST (UTC-5);CST (UTC-6);YES 19 | LOUISIANA;LA;Baton Rouge;New Orleans;4,492,076;51,843;CST (UTC-6); ;YES 20 | MAINE;ME;Augusta;Portland;1,318,301;35,387;EST (UTC-5); ;YES 21 | MARYLAND;MD;Annapolis;Baltimore;5,699,478;12,407;EST (UTC-5); ;YES 22 | MASSACHUSETTS;MA;Boston;Boston;6,593,587;10,555;EST (UTC-5); ;YES 23 | MICHIGAN;MI;Lansing;Detroit;9,969,727;96,810;EST (UTC-5);CST (UTC-6);YES 24 | MINNESOTA;MN;Saint Paul;Minneapolis;5,266,214;86,943;CST (UTC-6); ;YES 25 | MISSISSIPPI;MS;Jackson;Jackson;2,951,996;48,434;CST (UTC-6); ;YES 26 | MISSOURI;MO;Jefferson City;Kansas City;5,987,580;69,709;CST (UTC-6); ;YES 27 | MONTANA;MT;Helena;Billings;974,989;147,046;MT (UTC-07); ;YES 28 | NEBRASKA;NE;Lincoln;Omaha;1,796,619;77,358;CST (UTC-6);MT (UTC-07);YES 29 | NEVADA;NV;Carson City;Las Vegas;2,643,085;110,567;PT (UTC-8);MT (UTC-07);YES 30 | NEW HAMPSHIRE;NH;Concord;Machester;1,324,575;9,351;EST (UTC-5); ;YES 31 | NEW JERSEY;NJ;Trenton;Newark;8,707,739;8,722;EST (UTC-5); ;YES 32 | NEW MEXICO;NM;Santa Fe;Albuquerque;2,009,671;121,593;MT (UTC-07); ;YES 33 | NEW YORK;NY;Albany;New York;19,541,453;54,475;EST (UTC-5); ;YES 34 | NORTH CAROLINA;NC;Raleigh;Charlotte;9,380,884;53,821;EST (UTC-5); ;YES 35 | NORTH DAKOTA;ND;Bismarck;Fargo;646,844;70,704;CST (UTC-6);MT (UTC-07);YES 36 | OHIO;OH;Columbus;Columbus;11,542,645;44,828;EST (UTC-5); ;YES 37 | OKLAHOMA;OK;Oklahoma City;Oklahoma City;3,687,050;69,903;CST (UTC-6); ;YES 38 | OREGON;OR;Salem;Portland;3,825,657;98,386;PT (UTC-8);MT (UTC-07);YES 39 | PENNSYLVANIA;PA;Harrisburg;Philadelphia;12,604,767;46,058;EST (UTC-5); ;YES 40 | RHODE ISLAND;RI;Providence;Providence;1,053,209;1,545;EST (UTC-5); ;YES 41 | SOUTH CAROLINA;SC;Columbia;Columbia;4,561,242;32,007;EST (UTC-5); ;YES 42 | SOUTH DAKOTA;SD;Pierre;Sioux Falls;812,383;77,121;CST (UTC-6);MT (UTC-07);YES 43 | TENNESSEE;TN;Nashville;Memphis;6,296,254;42,146;CST (UTC-6);EST (UTC-5);YES 44 | TEXAS;TX;Austin;Houston;24,782,302;268,601;CST (UTC-6);MT (UTC-07);YES 45 | UTAH;UT;Salt Lake City;Salt Lake City;2,784,572;84,904;MT (UTC-07); ;YES 46 | VERMONT;VT;Montpelier;Burlington;621,760;9,615;EST (UTC-5); ;YES 47 | VIRGINIA;VA;Richmond;Virginia Beach;7,882,590;42,769;EST (UTC-5); ;YES 48 | WASHINGTON;WA;Olympia;Seattle;6,664,195;71,303;PT (UTC-8); ;YES 49 | WEST VIRGINIA;WV;Charleston;Charleston;1,819,777;24,231;EST (UTC-5); ;YES 50 | WISCONSIN;WI;Madison;Milwaukee;5,654,774;65,503;CST (UTC-6); ;YES 51 | WYOMING;WY;Cheyenne;Cheyenne;544,270;97,818;MT (UTC-07); ;YES -------------------------------------------------------------------------------- /iText-start/iText6/src/main/resources/pdf/88th_noms_announcement.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuteXiaoKe/iText7-examples/49e8e9759a6776fd80f08a82d7842fd1b3e15374/iText-start/iText6/src/main/resources/pdf/88th_noms_announcement.pdf -------------------------------------------------------------------------------- /iText-start/iText6/src/main/resources/pdf/88th_reminder_list.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuteXiaoKe/iText7-examples/49e8e9759a6776fd80f08a82d7842fd1b3e15374/iText-start/iText6/src/main/resources/pdf/88th_reminder_list.pdf -------------------------------------------------------------------------------- /iText-start/iText6/src/main/resources/pdf/oscars_movies_checklist_2016.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuteXiaoKe/iText7-examples/49e8e9759a6776fd80f08a82d7842fd1b3e15374/iText-start/iText6/src/main/resources/pdf/oscars_movies_checklist_2016.pdf -------------------------------------------------------------------------------- /iText-start/iText6/src/main/resources/pdf/state.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuteXiaoKe/iText7-examples/49e8e9759a6776fd80f08a82d7842fd1b3e15374/iText-start/iText6/src/main/resources/pdf/state.pdf -------------------------------------------------------------------------------- /iText-start/iText6/src/main/resources/pdf/subscribe.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuteXiaoKe/iText7-examples/49e8e9759a6776fd80f08a82d7842fd1b3e15374/iText-start/iText6/src/main/resources/pdf/subscribe.pdf -------------------------------------------------------------------------------- /iText-start/iText6/src/main/resources/pdf/the_golden_gate_bridge.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuteXiaoKe/iText7-examples/49e8e9759a6776fd80f08a82d7842fd1b3e15374/iText-start/iText6/src/main/resources/pdf/the_golden_gate_bridge.pdf -------------------------------------------------------------------------------- /iText-start/iText7/.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /iText-start/iText7/.idea/libraries/Maven__com_itextpdf_barcodes_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText7/.idea/libraries/Maven__com_itextpdf_font_asian_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText7/.idea/libraries/Maven__com_itextpdf_forms_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText7/.idea/libraries/Maven__com_itextpdf_hyph_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText7/.idea/libraries/Maven__com_itextpdf_io_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText7/.idea/libraries/Maven__com_itextpdf_kernel_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText7/.idea/libraries/Maven__com_itextpdf_layout_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText7/.idea/libraries/Maven__com_itextpdf_pdfa_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText7/.idea/libraries/Maven__com_itextpdf_sign_7_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText7/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_13.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /iText-start/iText7/.idea/misc.xml: -------------------------------------------------------------------------------- 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 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /iText-start/iText7/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /iText-start/iText7/iText7.iml: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /iText-start/iText7/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | com.itext 8 | iText7 9 | 1.0-SNAPSHOT 10 | 11 | 12 | 13 | 14 | 15 | com.itextpdf 16 | kernel 17 | 7.0.3 18 | 19 | 20 | 21 | 22 | com.itextpdf 23 | io 24 | 7.0.3 25 | 26 | 27 | 28 | 29 | com.itextpdf 30 | layout 31 | 7.0.3 32 | 33 | 34 | 35 | 36 | com.itextpdf 37 | forms 38 | 7.0.3 39 | 40 | 41 | 42 | 43 | com.itextpdf 44 | pdfa 45 | 7.0.3 46 | 47 | 48 | 49 | 50 | com.itextpdf 51 | sign 52 | 7.0.3 53 | 54 | 55 | 56 | 57 | com.itextpdf 58 | barcodes 59 | 7.0.3 60 | 61 | 62 | 63 | 64 | com.itextpdf 65 | font-asian 66 | 7.0.3 67 | 68 | 69 | 70 | 71 | com.itextpdf 72 | hyph 73 | 7.0.3 74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /iText-start/iText7/src/main/java/C07E01_QuickBrownFox_PDFUA.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by ASUS on 2017/12/24. 3 | */ 4 | import com.itextpdf.io.font.PdfEncodings; 5 | import com.itextpdf.io.image.ImageDataFactory; 6 | import com.itextpdf.kernel.font.PdfFont; 7 | import com.itextpdf.kernel.font.PdfFontFactory; 8 | import com.itextpdf.kernel.pdf.PdfDocument; 9 | import com.itextpdf.kernel.pdf.PdfDocumentInfo; 10 | import com.itextpdf.kernel.pdf.PdfString; 11 | import com.itextpdf.kernel.pdf.PdfViewerPreferences; 12 | import com.itextpdf.kernel.pdf.PdfWriter; 13 | import com.itextpdf.kernel.pdf.WriterProperties; 14 | import com.itextpdf.layout.Document; 15 | import com.itextpdf.layout.element.Image; 16 | import com.itextpdf.layout.element.Paragraph; 17 | import com.itextpdf.layout.element.Text; 18 | 19 | import java.io.File; 20 | import java.io.IOException; 21 | 22 | public class C07E01_QuickBrownFox_PDFUA { 23 | public static final String DOG = "src/main/resources/img/dog.bmp"; 24 | public static final String FOX = "src/main/resources/img/fox.bmp"; 25 | public static final String FONT = "src/main/resources/font/FreeSans.ttf"; 26 | 27 | public static final String DEST = "results/chapter07/quick_brown_fox_PDFUA.pdf"; 28 | 29 | public static void main(String args[]) throws IOException { 30 | File file = new File(DEST); 31 | file.getParentFile().mkdirs(); 32 | new C07E01_QuickBrownFox_PDFUA().createPdf(DEST); 33 | } 34 | 35 | public void createPdf(String dest) throws IOException { 36 | PdfDocument pdf = new PdfDocument(new PdfWriter(dest, new WriterProperties().addXmpMetadata())); 37 | Document document = new Document(pdf); 38 | 39 | //Setting some required parameters 40 | pdf.setTagged(); 41 | pdf.getCatalog().setLang(new PdfString("en-US")); 42 | pdf.getCatalog().setViewerPreferences( 43 | new PdfViewerPreferences().setDisplayDocTitle(true)); 44 | PdfDocumentInfo info = pdf.getDocumentInfo(); 45 | info.setTitle("iText7 PDF/UA example"); 46 | 47 | //Fonts need to be embedded 48 | PdfFont font = PdfFontFactory.createFont(FONT, PdfEncodings.WINANSI, true); 49 | Paragraph p = new Paragraph(); 50 | p.setFont(font); 51 | p.add(new Text("The quick brown ")); 52 | Image foxImage = new Image(ImageDataFactory.create(FOX)); 53 | //PDF/UA: Set alt text 54 | foxImage.getAccessibilityProperties().setAlternateDescription("Fox"); 55 | p.add(foxImage); 56 | p.add(" jumps over the lazy "); 57 | Image dogImage = new Image(ImageDataFactory.create(DOG)); 58 | //PDF/UA: Set alt text 59 | dogImage.getAccessibilityProperties().setAlternateDescription("Dog"); 60 | p.add(dogImage); 61 | 62 | document.add(p); 63 | document.close(); 64 | } 65 | } -------------------------------------------------------------------------------- /iText-start/iText7/src/main/java/C07E02_QuickBrownFox_PDFA_1a.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by ASUS on 2017/12/24. 3 | */ 4 | import com.itextpdf.io.font.PdfEncodings; 5 | import com.itextpdf.io.image.ImageDataFactory; 6 | import com.itextpdf.kernel.font.PdfFont; 7 | import com.itextpdf.kernel.font.PdfFontFactory; 8 | import com.itextpdf.kernel.pdf.PdfAConformanceLevel; 9 | import com.itextpdf.kernel.pdf.PdfOutputIntent; 10 | import com.itextpdf.kernel.pdf.PdfWriter; 11 | import com.itextpdf.layout.Document; 12 | import com.itextpdf.layout.element.Image; 13 | import com.itextpdf.layout.element.Paragraph; 14 | import com.itextpdf.layout.element.Text; 15 | import com.itextpdf.pdfa.PdfADocument; 16 | 17 | import java.io.File; 18 | import java.io.FileInputStream; 19 | import java.io.IOException; 20 | 21 | 22 | public class C07E02_QuickBrownFox_PDFA_1a { 23 | public static final String DOG = "src/main/resources/img/dog.bmp"; 24 | public static final String FOX = "src/main/resources/img/fox.bmp"; 25 | public static final String FONT = "src/main/resources/font/FreeSans.ttf"; 26 | public static final String INTENT = "src/main/resources/color/sRGB_CS_profile.icm"; 27 | 28 | public static final String DEST = "results/chapter07/quick_brown_fox_PDFA-1a.pdf"; 29 | 30 | public static void main(String args[]) throws IOException { 31 | File file = new File(DEST); 32 | file.getParentFile().mkdirs(); 33 | new C07E02_QuickBrownFox_PDFA_1a().createPdf(DEST); 34 | } 35 | 36 | public void createPdf(String dest) throws IOException { 37 | //Initialize PDFA document with output intent 38 | PdfADocument pdf = new PdfADocument(new PdfWriter(dest), 39 | PdfAConformanceLevel.PDF_A_1A, 40 | new PdfOutputIntent("Custom", "", "http://www.color.org", 41 | "sRGB IEC61966-2.1", new FileInputStream(INTENT))); 42 | Document document = new Document(pdf); 43 | 44 | //Setting some required parameters 45 | pdf.setTagged(); 46 | 47 | //Fonts need to be embedded 48 | PdfFont font = PdfFontFactory.createFont(FONT, PdfEncodings.WINANSI, true); 49 | Paragraph p = new Paragraph(); 50 | p.setFont(font); 51 | p.add(new Text("The quick brown ")); 52 | Image foxImage = new Image(ImageDataFactory.create(FOX)); 53 | //Set alt text 54 | foxImage.getAccessibilityProperties().setAlternateDescription("Fox"); 55 | p.add(foxImage); 56 | p.add(" jumps over the lazy "); 57 | Image dogImage = new Image(ImageDataFactory.create(DOG)); 58 | //Set alt text 59 | dogImage.getAccessibilityProperties().setAlternateDescription("Dog"); 60 | p.add(dogImage); 61 | 62 | document.add(p); 63 | document.close(); 64 | } 65 | } -------------------------------------------------------------------------------- /iText-start/iText7/src/main/java/C07E02_QuickBrownFox_PDFA_1b.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by ASUS on 2017/12/24. 3 | */ 4 | import com.itextpdf.io.font.PdfEncodings; 5 | import com.itextpdf.io.image.ImageDataFactory; 6 | import com.itextpdf.kernel.font.PdfFont; 7 | import com.itextpdf.kernel.font.PdfFontFactory; 8 | import com.itextpdf.kernel.pdf.PdfAConformanceLevel; 9 | import com.itextpdf.kernel.pdf.PdfOutputIntent; 10 | import com.itextpdf.kernel.pdf.PdfWriter; 11 | import com.itextpdf.layout.Document; 12 | import com.itextpdf.layout.element.Image; 13 | import com.itextpdf.layout.element.Paragraph; 14 | import com.itextpdf.layout.element.Text; 15 | import com.itextpdf.pdfa.PdfADocument; 16 | 17 | import java.io.File; 18 | import java.io.FileInputStream; 19 | import java.io.IOException; 20 | 21 | 22 | public class C07E02_QuickBrownFox_PDFA_1b { 23 | public static final String DOG = "src/main/resources/img/dog.bmp"; 24 | public static final String FOX = "src/main/resources/img/fox.bmp"; 25 | public static final String FONT = "src/main/resources/font/FreeSans.ttf"; 26 | public static final String INTENT = "src/main/resources/color/sRGB_CS_profile.icm"; 27 | 28 | public static final String DEST = "results/chapter07/quick_brown_fox_PDFA-1b.pdf"; 29 | 30 | public static void main(String args[]) throws IOException { 31 | File file = new File(DEST); 32 | file.getParentFile().mkdirs(); 33 | new C07E02_QuickBrownFox_PDFA_1b().createPdf(DEST); 34 | } 35 | 36 | public void createPdf(String dest) throws IOException { 37 | //Initialize PDFA document with output intent 38 | PdfADocument pdf = new PdfADocument(new PdfWriter(dest), 39 | PdfAConformanceLevel.PDF_A_1B, 40 | new PdfOutputIntent("Custom", "", "http://www.color.org", 41 | "sRGB IEC61966-2.1", new FileInputStream(INTENT))); 42 | Document document = new Document(pdf); 43 | 44 | //Fonts need to be embedded 45 | PdfFont font = PdfFontFactory.createFont(FONT, PdfEncodings.WINANSI, true); 46 | Paragraph p = new Paragraph(); 47 | p.setFont(font); 48 | p.add(new Text("The quick brown ")); 49 | Image foxImage = new Image(ImageDataFactory.create(FOX)); 50 | p.add(foxImage); 51 | p.add(" jumps over the lazy "); 52 | Image dogImage = new Image(ImageDataFactory.create(DOG)); 53 | p.add(dogImage); 54 | 55 | document.add(p); 56 | document.close(); 57 | } 58 | } -------------------------------------------------------------------------------- /iText-start/iText7/src/main/java/C07E04_MergePDFADocuments.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by ASUS on 2017/12/24. 3 | */ 4 | import com.itextpdf.kernel.pdf.*; 5 | import com.itextpdf.kernel.utils.PdfMerger; 6 | import com.itextpdf.pdfa.PdfADocument; 7 | 8 | import java.io.File; 9 | import java.io.FileInputStream; 10 | import java.io.IOException; 11 | 12 | 13 | public class C07E04_MergePDFADocuments { 14 | public static final String INTENT = "src/main/resources/color/sRGB_CS_profile.icm"; 15 | 16 | public static final String SRC1 = "src/main/resources/pdf/quick_brown_fox_PDFA-1a.pdf"; 17 | public static final String SRC2 = "src/main/resources/pdf/united_states_PDFA-1a.pdf"; 18 | public static final String DEST = "results/chapter07/merged_PDFA-1a_documents.pdf"; 19 | 20 | public static void main(String args[]) throws IOException { 21 | File file = new File(DEST); 22 | file.getParentFile().mkdirs(); 23 | new C07E04_MergePDFADocuments().createPdf(DEST); 24 | } 25 | 26 | public void createPdf(String dest) throws IOException { 27 | //Initialize PDFA document with output intent 28 | PdfADocument pdf = new PdfADocument(new PdfWriter(dest), 29 | PdfAConformanceLevel.PDF_A_1A, 30 | new PdfOutputIntent("Custom", "", "http://www.color.org", 31 | "sRGB IEC61966-2.1", new FileInputStream(INTENT))); 32 | 33 | //Setting some required parameters 34 | pdf.setTagged(); 35 | pdf.getCatalog().setLang(new PdfString("en-US")); 36 | pdf.getCatalog().setViewerPreferences( 37 | new PdfViewerPreferences().setDisplayDocTitle(true)); 38 | PdfDocumentInfo info = pdf.getDocumentInfo(); 39 | info.setTitle("iText7 PDF/A-1a example"); 40 | 41 | //Create PdfMerger instance 42 | PdfMerger merger = new PdfMerger(pdf); 43 | //Add pages from the first document 44 | PdfDocument firstSourcePdf = new PdfDocument(new PdfReader(SRC1)); 45 | merger.merge(firstSourcePdf, 1, firstSourcePdf.getNumberOfPages()); 46 | //Add pages from the second pdf document 47 | PdfDocument secondSourcePdf = new PdfDocument(new PdfReader(SRC2)); 48 | merger.merge(secondSourcePdf, 1, secondSourcePdf.getNumberOfPages()); 49 | 50 | //Close the documents 51 | firstSourcePdf.close(); 52 | secondSourcePdf.close(); 53 | pdf.close(); 54 | } 55 | } -------------------------------------------------------------------------------- /iText-start/iText7/src/main/resources/color/sRGB_CS_profile.icm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuteXiaoKe/iText7-examples/49e8e9759a6776fd80f08a82d7842fd1b3e15374/iText-start/iText7/src/main/resources/color/sRGB_CS_profile.icm -------------------------------------------------------------------------------- /iText-start/iText7/src/main/resources/data/united_states.csv: -------------------------------------------------------------------------------- 1 | name;abbr;capital;most populous city;population;square miles;time zone 1;time zone 2;dst 2 | ALABAMA;AL;Montgomery;Birmingham;4,708,708;52,423;CST (UTC-6);EST (UTC-5);YES 3 | ALASKA;AK;Juneau;Anchorage;698,473;656,425;AKST (UTC-09) ;HST (UTC-10) ;YES 4 | ARIZONA;AZ;Phoenix;Phoenix;6,595,778;114,006;MT (UTC-07); ;NO 5 | ARKANSAS;AR;Little Rock;Little Rock;2,889,450;53,182;CST (UTC-6); ;YES 6 | CALIFORNIA;CA;Sacramento;Los Angeles;36,961,664;163,707;PT (UTC-8); ;YES 7 | COLORADO;CO;Denver;Denver;5,024,748;104,100;MT (UTC-07); ;YES 8 | CONNECTICUT;CT;Hartford;Bridgeport;3,518,288;5,544;EST (UTC-5); ;YES 9 | DELAWARE;DE;Dover;Wilmington;885,122;1,954;EST (UTC-5); ;YES 10 | FLORIDA;FL;Tallahassee;Jacksonville;18,537,969;65,758;EST (UTC-5);CST (UTC-6);YES 11 | GEORGIA;GA;Atlanta;Atlanta;9,829,211;59,441;EST (UTC-5); ;YES 12 | HAWAII;HI;Honolulu;Honolulu;1,295,178;10,932;HST (UTC-10) ; ;NO 13 | IDAHO;ID;Boise;Boise;1,545,801;83,574;MT (UTC-07);PT (UTC-8);YES 14 | ILLINOIS;IL;Springfield;Chicago;12,910,409;57,918;CST (UTC-6); ;YES 15 | INDIANA;IN;Indianapolis;Indianapolis;6,423,113;36,420;EST (UTC-5);CST (UTC-6);YES 16 | IOWA;IA;Des Moines;Des Moines;3,007,856;56,276;CST (UTC-6); ;YES 17 | KANSAS;KS;Topeka;Wichita;2,818,747;82,282;CST (UTC-6);MT (UTC-07);YES 18 | KENTUCKY;KY;Frankfort;Louisville;4,314,113;40,411;EST (UTC-5);CST (UTC-6);YES 19 | LOUISIANA;LA;Baton Rouge;New Orleans;4,492,076;51,843;CST (UTC-6); ;YES 20 | MAINE;ME;Augusta;Portland;1,318,301;35,387;EST (UTC-5); ;YES 21 | MARYLAND;MD;Annapolis;Baltimore;5,699,478;12,407;EST (UTC-5); ;YES 22 | MASSACHUSETTS;MA;Boston;Boston;6,593,587;10,555;EST (UTC-5); ;YES 23 | MICHIGAN;MI;Lansing;Detroit;9,969,727;96,810;EST (UTC-5);CST (UTC-6);YES 24 | MINNESOTA;MN;Saint Paul;Minneapolis;5,266,214;86,943;CST (UTC-6); ;YES 25 | MISSISSIPPI;MS;Jackson;Jackson;2,951,996;48,434;CST (UTC-6); ;YES 26 | MISSOURI;MO;Jefferson City;Kansas City;5,987,580;69,709;CST (UTC-6); ;YES 27 | MONTANA;MT;Helena;Billings;974,989;147,046;MT (UTC-07); ;YES 28 | NEBRASKA;NE;Lincoln;Omaha;1,796,619;77,358;CST (UTC-6);MT (UTC-07);YES 29 | NEVADA;NV;Carson City;Las Vegas;2,643,085;110,567;PT (UTC-8);MT (UTC-07);YES 30 | NEW HAMPSHIRE;NH;Concord;Machester;1,324,575;9,351;EST (UTC-5); ;YES 31 | NEW JERSEY;NJ;Trenton;Newark;8,707,739;8,722;EST (UTC-5); ;YES 32 | NEW MEXICO;NM;Santa Fe;Albuquerque;2,009,671;121,593;MT (UTC-07); ;YES 33 | NEW YORK;NY;Albany;New York;19,541,453;54,475;EST (UTC-5); ;YES 34 | NORTH CAROLINA;NC;Raleigh;Charlotte;9,380,884;53,821;EST (UTC-5); ;YES 35 | NORTH DAKOTA;ND;Bismarck;Fargo;646,844;70,704;CST (UTC-6);MT (UTC-07);YES 36 | OHIO;OH;Columbus;Columbus;11,542,645;44,828;EST (UTC-5); ;YES 37 | OKLAHOMA;OK;Oklahoma City;Oklahoma City;3,687,050;69,903;CST (UTC-6); ;YES 38 | OREGON;OR;Salem;Portland;3,825,657;98,386;PT (UTC-8);MT (UTC-07);YES 39 | PENNSYLVANIA;PA;Harrisburg;Philadelphia;12,604,767;46,058;EST (UTC-5); ;YES 40 | RHODE ISLAND;RI;Providence;Providence;1,053,209;1,545;EST (UTC-5); ;YES 41 | SOUTH CAROLINA;SC;Columbia;Columbia;4,561,242;32,007;EST (UTC-5); ;YES 42 | SOUTH DAKOTA;SD;Pierre;Sioux Falls;812,383;77,121;CST (UTC-6);MT (UTC-07);YES 43 | TENNESSEE;TN;Nashville;Memphis;6,296,254;42,146;CST (UTC-6);EST (UTC-5);YES 44 | TEXAS;TX;Austin;Houston;24,782,302;268,601;CST (UTC-6);MT (UTC-07);YES 45 | UTAH;UT;Salt Lake City;Salt Lake City;2,784,572;84,904;MT (UTC-07); ;YES 46 | VERMONT;VT;Montpelier;Burlington;621,760;9,615;EST (UTC-5); ;YES 47 | VIRGINIA;VA;Richmond;Virginia Beach;7,882,590;42,769;EST (UTC-5); ;YES 48 | WASHINGTON;WA;Olympia;Seattle;6,664,195;71,303;PT (UTC-8); ;YES 49 | WEST VIRGINIA;WV;Charleston;Charleston;1,819,777;24,231;EST (UTC-5); ;YES 50 | WISCONSIN;WI;Madison;Milwaukee;5,654,774;65,503;CST (UTC-6); ;YES 51 | WYOMING;WY;Cheyenne;Cheyenne;544,270;97,818;MT (UTC-07); ;YES -------------------------------------------------------------------------------- /iText-start/iText7/src/main/resources/font/FreeSans.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuteXiaoKe/iText7-examples/49e8e9759a6776fd80f08a82d7842fd1b3e15374/iText-start/iText7/src/main/resources/font/FreeSans.ttf -------------------------------------------------------------------------------- /iText-start/iText7/src/main/resources/font/FreeSansBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuteXiaoKe/iText7-examples/49e8e9759a6776fd80f08a82d7842fd1b3e15374/iText-start/iText7/src/main/resources/font/FreeSansBold.ttf -------------------------------------------------------------------------------- /iText-start/iText7/src/main/resources/img/dog.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuteXiaoKe/iText7-examples/49e8e9759a6776fd80f08a82d7842fd1b3e15374/iText-start/iText7/src/main/resources/img/dog.bmp -------------------------------------------------------------------------------- /iText-start/iText7/src/main/resources/img/fox.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuteXiaoKe/iText7-examples/49e8e9759a6776fd80f08a82d7842fd1b3e15374/iText-start/iText7/src/main/resources/img/fox.bmp -------------------------------------------------------------------------------- /iText-start/iText7/src/main/resources/pdf/quick_brown_fox_PDFA-1a.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuteXiaoKe/iText7-examples/49e8e9759a6776fd80f08a82d7842fd1b3e15374/iText-start/iText7/src/main/resources/pdf/quick_brown_fox_PDFA-1a.pdf -------------------------------------------------------------------------------- /iText-start/iText7/src/main/resources/pdf/united_states_PDFA-1a.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CuteXiaoKe/iText7-examples/49e8e9759a6776fd80f08a82d7842fd1b3e15374/iText-start/iText7/src/main/resources/pdf/united_states_PDFA-1a.pdf --------------------------------------------------------------------------------