Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,15 @@
<artifactId>pdfa</artifactId>
<version>7.2.2</version>
</dependency>

<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version> <!-- Replace with the latest version -->
</dependency>


</dependencies>


</project>
45 changes: 45 additions & 0 deletions src/main/java/org/example/service/AddingTextToPdfService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package org.example.service;

import com.itextpdf.io.font.constants.StandardFonts;
import com.itextpdf.kernel.colors.Color;
import com.itextpdf.kernel.colors.DeviceRgb;
import com.itextpdf.kernel.font.PdfFont;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;

import java.io.FileOutputStream;
import java.io.IOException;


public class AddingTextToPdfService {
public static void main(String[] args) throws IOException {
System.out.println("Starting the pdf generation process");
String destinationFilePath = "/Users/alex/Workspace/CodeGeneratedFiles/PdfFileWithText.pdf";
String paragraphText = "Hello there !!!!!!! -Go is a procedural programming language. It was developed in 2007 by Robert Griesemer, Rob Pike, and Ken Thompson at Google but launched in 2009 as an open-source programming language. Programs are assembled by using packages, for efficient management of dependencies. This language also supports environment adopting patterns alike to dynamic languages. For eg., type inference (y := 0 is a valid declaration of a variable y of type float).\n" +
"\n" +
"Go is a statically typed, concurrent, and garbage-collected programming language created at Google in 2009. It is designed to be simple, efficient, and easy to learn, making it a popular choice for building scalable network services, web applications, and command-line tools.\n" +
"\n" +
"Go is known for its support for concurrency, which is the ability to run multiple tasks simultaneously. Concurrency is achieved in Go through the use of Goroutines and Channels, which allow you to write code that can run multiple operations at the same time. This makes Go an ideal choice for building high-performance and scalable network services, as well as for solving complex computational problems.";

//Initialize PdfWriter, PdfDocument, Document
PdfWriter pdfWriter = new PdfWriter(new FileOutputStream(destinationFilePath));
PdfDocument pdfDocument = new PdfDocument(pdfWriter);
Document document = new Document(pdfDocument);

//Set the document properties
PdfFont pdfFont = PdfFontFactory.createFont(StandardFonts.TIMES_BOLD); //Setting the font
Color backgroundColour = new DeviceRgb(204, 255, 247); //Setting the Color
Paragraph paragraph1 = new Paragraph(paragraphText); // Populate the paragraph
paragraph1.setFont(pdfFont);
paragraph1.setFontSize(12f);
paragraph1.setBackgroundColor(backgroundColour);

document.add(paragraph1);
document.close();

System.out.println("PDF Generation successful");
}
}
26 changes: 26 additions & 0 deletions src/main/java/org/example/service/CommonUtilityService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package org.example.service;

import com.itextpdf.kernel.colors.DeviceRgb;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Cell;
import com.itextpdf.layout.element.Table;
import com.itextpdf.layout.properties.UnitValue;


public class CommonUtilityService {

private static CommonUtilityService INSTANCE;

public static CommonUtilityService getInstance() {
if (INSTANCE == null){
INSTANCE = new CommonUtilityService();
}
return INSTANCE;
}
public void addSpacer(Document document, float height) {
Table spacerTable = new Table(UnitValue.createPercentArray(1)).useAllAvailableWidth();
Cell spacerCell = new Cell().setHeight(height).setBackgroundColor(new DeviceRgb(204, 255, 247));
spacerTable.addCell(spacerCell);
document.add(spacerTable);
}
}
47 changes: 47 additions & 0 deletions src/main/java/org/example/service/HandlingListInPdf.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package org.example.service;

import com.itextpdf.io.font.constants.StandardFonts;
import com.itextpdf.kernel.font.PdfFont;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.List;
import com.itextpdf.layout.element.Paragraph;

import java.io.FileOutputStream;
import java.io.IOException;

public class HandlingListInPdf {
public static void main(String[] args) throws IOException {
System.out.println("Pdf Generation Started");
String destinationFilePath = "/Users/alex/Workspace/CodeGeneratedFiles/HandlingListInPdf.pdf";

Document document = new Document(new PdfDocument(new PdfWriter(new FileOutputStream(destinationFilePath))));
PdfFont pdfFont = PdfFontFactory.createFont(StandardFonts.TIMES_BOLD);

List stringList = new List();
stringList.add("Name : Akshat Jaiswal");
stringList.add("Age : 24");
stringList.add("Add : Rampur Karkhana, Deoria");
stringList.add("Company : Digitap.AI");
stringList.add("Designation : Software Engineer");
stringList.setFont(pdfFont);

document.add(stringList);

//Add spacing to the pdf
CommonUtilityService.getInstance().addSpacer(document, 20f);

String paragraph = " I'm a Software Engineer passionate about building scalable and reliable software solutions. Proven expertise in Java, Spring Boot, Spring Data JPA, Spring JDBC, RESTful Web Services, REST APIs, JUnit, Mockito, Microservices, Speedment, and AWS. Currently working at a fintech company as a software engineer, developing and maintaining innovative and cutting-edge solutions for E-Nach, Video-PD, KYC/OKYC, VKYC projects";

Paragraph para = new Paragraph(paragraph);
para.setFont(pdfFont).setFontSize(10);

document.add(para);

document.close();

System.out.println("Pdf generation successful");
}
}
85 changes: 85 additions & 0 deletions src/main/java/org/example/service/PDFGenerationService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
package org.example.service;

import com.itextpdf.io.font.constants.StandardFonts;
import com.itextpdf.io.image.ImageDataFactory;
import com.itextpdf.kernel.font.PdfFont;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Image;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.element.Table;
import com.itextpdf.layout.properties.TextAlignment;

import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;

public class PDFGenerationService {
public static void main(String[] args) throws IOException {
String destinationFilePath = "/Users/alex/Workspace/CodeGeneratedFiles/PersonalDetails.pdf";

Document document = new Document(new PdfDocument(new PdfWriter(new FileOutputStream(destinationFilePath))));

PdfFont pdfFont = PdfFontFactory.createFont(StandardFonts.TIMES_BOLD);
Paragraph pdfHeading = new Paragraph("Personal Details");
pdfHeading.setFontSize(16f)
.setFont(pdfFont)
.setTextAlignment(TextAlignment.CENTER)
.setBold()
.setPadding(5)
.setMarginTop(15f)
.setMarginBottom(20f);
document.add(pdfHeading);

Table personalDetailsTable = createPersonalDetailsTable();
personalDetailsTable.setFontSize(12f)
.setFont(pdfFont);

document.add(personalDetailsTable);

Image image = addImage();
document.add(image);

System.out.println("Process Ended");
document.close();
}

public static Table createPersonalDetailsTable() {
System.out.println("inside createPersonalDetailsTable");
float columnWidth[] = {150f, 350f};
Table personalDetailsTable = new Table(columnWidth);
personalDetailsTable.setWidth(500f);
personalDetailsTable.setAutoLayout();

try {
personalDetailsTable.addCell("Name");
personalDetailsTable.addCell("Akshat Jaiswal");
personalDetailsTable.addCell("UserId");
personalDetailsTable.addCell("01");
personalDetailsTable.addCell("Mobile");
personalDetailsTable.addCell("+91 9839783219");
personalDetailsTable.addCell("Email");
personalDetailsTable.addCell("[email protected]");
personalDetailsTable.addCell("Address");
personalDetailsTable.addCell("Main Road Rampur Karkhana, Deoria 274405");

} catch (Exception e) {
System.out.println("Error while creating personal details table with exception " + e);
}
System.out.println("returning from createPersonalDetailsTable");
return personalDetailsTable;
}

public static Image addImage() throws IOException {
URL url = new URL("https://media.licdn.com/dms/image/D5603AQEQLX3LNYagEg/profile-displayphoto-shrink_800_800/0/1714743298405?e=1726704000&v=beta&t=Qp2nST99M0eOXOSqZVwIaaF9rY8KIWqV7q8klwxmluU");
Image image = new Image(ImageDataFactory.create(url));
image.setFixedPosition(200f, 50f)
.setHeight(300)
.setWidth(250);
return image;
}


}
21 changes: 21 additions & 0 deletions src/main/java/org/example/service/TestPdfGeneration.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package org.example.service;

import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;

public class TestPdfGeneration {-
public static void main(String[] args) throws FileNotFoundException {
String pdfDestination = "/Users/alex/Workspace/CodeGeneratedFiles/TestPdfGeneration.pdf";
Document document = new Document(new PdfDocument(new PdfWriter(new FileOutputStream(pdfDestination))));

Paragraph paragraph = new Paragraph("Helllo World");

document.add(paragraph);
document.close(); // Always close the document after the completion of the generation process otherwise it will give errors
}
}