Create and Read PDF Portfolio in Java
Published: 2021-06-30 02:06:21

---
title: Create and Read PDF Portfolio in Java
published: true
description: Java pdf, create PDF portfolio in Java, read PDF portfolio in Java, extract files from PDF portfolio in Java.
tags: 
//cover_image: https://direct_url_to_image.jpg
---
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:
```java
<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>
```
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](https://www.e-iceblue.com/Download/pdf-for-java-free.html), extract the zip file, then add Spire.Pdf.jar in the lib folder into your project as a dependency.

##Create PDF Portfolio##
```java
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();
    }
}
```
Output:
![Create Portfolio](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gwzvm2rlztime4o6nzth.png)
 
##Read/Extract Files from PDF Portfolio##
```java
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();
    }
}
```
Output:
![Read Portfolio](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hmm0wttiqqupl2s7pwf1.png)