DEV Community

E-iceblue Product Family
E-iceblue Product Family

Posted on

Create and Read PDF Portfolio in Java

Using PDF portfolio, you can put multiple types of files (such as Word & Excel files, images and PowerPoint presentations) together into a master PDF file. The files in a PDF Portfolio can retain their individual identities, so you can open, read, edit, and format each file independently of the other files. In this article, I am going to introduce how to work with PDF portfolio, especially create PDF portfolio and read/extract files from PDF portfolio programmatically in Java.

Add Dependencies

In order to create and read PDF portfolio, I use Free Spire.PDF for Java library. There are two ways to include Free Spire.PDF for Java in your Java project:

For maven projects:
Specify the following dependencies in your project’s pom.xml file:

<repositories>    
    <repository>    
        <id>com.e-iceblue</id>    
        <name>e-iceblue</name>    
        <url>http://repo.e-iceblue.com/nexus/content/groups/public/</url>    
    </repository>    
</repositories>    
<dependencies>    
    <dependency>    
        <groupId> e-iceblue </groupId>    
        <artifactId>spire.pdf.free</artifactId>    
        <version>4.4.1</version>    
    </dependency>    
</dependencies>
Enter fullscreen mode Exit fullscreen mode

The latest version of Free Spire.PDF for Java is 4.4.1 (at the time of writing this article).

For non-maven projects:
Download Free Spire.PDF for Java pack from here: Download- Free Spire.PDF for Java, extract the zip file, then add Spire.Pdf.jar in the lib folder into your project as a dependency.

Create PDF Portfolio

import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;

import java.io.IOException;

public class CreatePortfolio {
    public static void main(String []args) throws IOException {

        String[] files = new String[] { "sample.pdf", "sample.docx", "sample.xlsx","sample.pptx","image.jpg" };

        //Create a PdfDocument instance
        PdfDocument pdf = new PdfDocument();
        //Create a PDF portfolio and add files to it
        for (int i = 0; i < files.length; i++)
        {
            pdf.getCollection().addFile(files[i]);
        }

        //Save the result file
        pdf.saveToFile("Portfolio.pdf", FileFormat.PDF);
        pdf.dispose();
    }
}
Enter fullscreen mode Exit fullscreen mode

Output:
Create Portfolio

Read/Extract Files from PDF Portfolio

import com.spire.pdf.PdfDocument;
import com.spire.pdf.attachments.PdfAttachment;

import java.io.*;

public class ReadPortfolio {
    public static void main(String []args) throws IOException {
        //Create a PdfDocument instance
        PdfDocument pdf = new PdfDocument();
        //Load the PDF file
        pdf.loadFromFile("Portfolio.pdf");

        //Loop through the attachments in the file
        for(PdfAttachment attachment : (Iterable<PdfAttachment>)pdf.getAttachments()){
            //Extract files
            String fileName = attachment.getFileName();
            OutputStream fos = new FileOutputStream("extract/" + fileName);
            fos.write(attachment.getData());
        }
        pdf.dispose();
    }
}
Enter fullscreen mode Exit fullscreen mode

Output:
Read Portfolio

Top comments (0)