Add, Extract and Delete Attachments in PDF in Java

We can attach a variety types of files such as PDF, Word, Excel, TXT and Images to a PDF file. In this article, we will show you how to add, extract and delete attachments in a PDF file in Java using Free Spire.PDF for Java library.

Dependencies

First of all, you need to add needed dependencies for including Free Spire.PDF for Java into your Java project. There are two ways to do that.
If you use maven, you need to add the following code to your project’s pom.xml file.

<span><</span><span>repositories</span><span>></span>
<span><</span><span>repository</span><span>></span>
<span><</span><span>id</span><span>></span><span>com</span><span>.</span><span>e</span><span>-</span><span>iceblue</span><span></</span><span>id</span><span>></span>
<span><</span><span>name</span><span>></span><span>e</span><span>-</span><span>iceblue</span><span></</span><span>name</span><span>></span>
<span><</span><span>url</span><span>></span><span>http:</span><span>//repo.e-iceblue.com/nexus/content/groups/public/</url> </span>
<span></</span><span>repository</span><span>></span>
<span></</span><span>repositories</span><span>></span>
<span><</span><span>dependencies</span><span>></span>
<span><</span><span>dependency</span><span>></span>
<span><</span><span>groupId</span><span>></span><span>e</span><span>-</span><span>iceblue</span><span></</span><span>groupId</span><span>></span>
<span><</span><span>artifactId</span><span>></span><span>spire</span><span>.</span><span>pdf</span><span>.</span><span>free</span><span></</span><span>artifactId</span><span>></span>
<span><</span><span>version</span><span>></span><span>2.6</span><span>.</span><span>3</span><span></</span><span>version</span><span>></span>
<span></</span><span>dependency</span><span>></span>
<span></</span><span>dependencies</span><span>></span>
<span><</span><span>repositories</span><span>></span>  
        <span><</span><span>repository</span><span>></span>  
            <span><</span><span>id</span><span>></span><span>com</span><span>.</span><span>e</span><span>-</span><span>iceblue</span><span></</span><span>id</span><span>></span>  
            <span><</span><span>name</span><span>></span><span>e</span><span>-</span><span>iceblue</span><span></</span><span>name</span><span>></span>  
            <span><</span><span>url</span><span>></span><span>http:</span><span>//repo.e-iceblue.com/nexus/content/groups/public/</url> </span>
        <span></</span><span>repository</span><span>></span>  
<span></</span><span>repositories</span><span>></span>  
<span><</span><span>dependencies</span><span>></span>  
    <span><</span><span>dependency</span><span>></span>  
        <span><</span><span>groupId</span><span>></span><span>e</span><span>-</span><span>iceblue</span><span></</span><span>groupId</span><span>></span>  
        <span><</span><span>artifactId</span><span>></span><span>spire</span><span>.</span><span>pdf</span><span>.</span><span>free</span><span></</span><span>artifactId</span><span>></span>  
        <span><</span><span>version</span><span>></span><span>2.6</span><span>.</span><span>3</span><span></</span><span>version</span><span>></span>  
    <span></</span><span>dependency</span><span>></span>  
<span></</span><span>dependencies</span><span>></span>  
<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>2.6.3</version> </dependency> </dependencies>

For non-maven projects, download Free Spire.PDF for Java pack from this website and add Spire.Pdf.jar in the lib folder into your project as a dependency.

Add attachments

The library provides a PdfAttachmentCollection.add(PdfAttachment attachment) method which is used to add attachments to a PDF file. The following code snippet shows how to attach txt, image, PDF and Word files to a PDF file.

<span>import</span> <span>com.spire.pdf.PdfDocument</span><span>;</span>
<span>import</span> <span>com.spire.pdf.attachments.PdfAttachment</span><span>;</span>
<span>public</span> <span>class</span> <span>AddAttachments</span> <span>{</span>
<span>public</span> <span>static</span> <span>void</span> <span>main</span><span>(</span><span>String</span><span>[]</span> <span>args</span><span>){</span>
<span>//Create a PdfDocument instance</span>
<span>PdfDocument</span> <span>pdf</span> <span>=</span> <span>new</span> <span>PdfDocument</span><span>();</span>
<span>//Attach txt file to PDF</span>
<span>PdfAttachment</span> <span>attachment</span> <span>=</span> <span>new</span> <span>PdfAttachment</span><span>(</span><span>"Input.txt"</span><span>);</span>
<span>attachment</span><span>.</span><span>setDescription</span><span>(</span><span>"Input.txt"</span><span>);</span>
<span>attachment</span><span>.</span><span>setMimeType</span><span>(</span><span>"application/txt"</span><span>);</span>
<span>pdf</span><span>.</span><span>getAttachments</span><span>().</span><span>add</span><span>(</span><span>attachment</span><span>);</span>
<span>//Attach image file to PDF</span>
<span>attachment</span> <span>=</span> <span>new</span> <span>PdfAttachment</span><span>(</span><span>"panda.jpg"</span><span>);</span>
<span>attachment</span><span>.</span><span>setDescription</span><span>(</span><span>"panda.jpg"</span><span>);</span>
<span>attachment</span><span>.</span><span>setMimeType</span><span>(</span><span>"image/jpg"</span><span>);</span>
<span>pdf</span><span>.</span><span>getAttachments</span><span>().</span><span>add</span><span>(</span><span>attachment</span><span>);</span>
<span>//Attach PDF file to PDF</span>
<span>attachment</span> <span>=</span> <span>new</span> <span>PdfAttachment</span><span>(</span><span>"Example.pdf"</span><span>);</span>
<span>attachment</span><span>.</span><span>setDescription</span><span>(</span><span>"Example.pdf"</span><span>);</span>
<span>attachment</span><span>.</span><span>setMimeType</span><span>(</span><span>"application/pdf"</span><span>);</span>
<span>pdf</span><span>.</span><span>getAttachments</span><span>().</span><span>add</span><span>(</span><span>attachment</span><span>);</span>
<span>//Attach Word file to PDF</span>
<span>attachment</span> <span>=</span> <span>new</span> <span>PdfAttachment</span><span>(</span><span>"Template.docx"</span><span>);</span>
<span>attachment</span><span>.</span><span>setDescription</span><span>(</span><span>"Template.docx"</span><span>);</span>
<span>attachment</span><span>.</span><span>setMimeType</span><span>(</span><span>"application/msword"</span><span>);</span>
<span>pdf</span><span>.</span><span>getAttachments</span><span>().</span><span>add</span><span>(</span><span>attachment</span><span>);</span>
<span>//Save the result file</span>
<span>pdf</span><span>.</span><span>saveToFile</span><span>(</span><span>"AddAttachments.pdf"</span><span>);</span>
<span>}</span>
<span>}</span>
<span>import</span> <span>com.spire.pdf.PdfDocument</span><span>;</span>
<span>import</span> <span>com.spire.pdf.attachments.PdfAttachment</span><span>;</span>

<span>public</span> <span>class</span> <span>AddAttachments</span> <span>{</span>
    <span>public</span> <span>static</span> <span>void</span> <span>main</span><span>(</span><span>String</span><span>[]</span> <span>args</span><span>){</span>
        <span>//Create a PdfDocument instance</span>
        <span>PdfDocument</span> <span>pdf</span> <span>=</span> <span>new</span> <span>PdfDocument</span><span>();</span>

        <span>//Attach txt file to PDF</span>
        <span>PdfAttachment</span> <span>attachment</span> <span>=</span> <span>new</span> <span>PdfAttachment</span><span>(</span><span>"Input.txt"</span><span>);</span>
        <span>attachment</span><span>.</span><span>setDescription</span><span>(</span><span>"Input.txt"</span><span>);</span>
        <span>attachment</span><span>.</span><span>setMimeType</span><span>(</span><span>"application/txt"</span><span>);</span>
        <span>pdf</span><span>.</span><span>getAttachments</span><span>().</span><span>add</span><span>(</span><span>attachment</span><span>);</span>

        <span>//Attach image file to PDF</span>
        <span>attachment</span> <span>=</span> <span>new</span> <span>PdfAttachment</span><span>(</span><span>"panda.jpg"</span><span>);</span>
        <span>attachment</span><span>.</span><span>setDescription</span><span>(</span><span>"panda.jpg"</span><span>);</span>
        <span>attachment</span><span>.</span><span>setMimeType</span><span>(</span><span>"image/jpg"</span><span>);</span>
        <span>pdf</span><span>.</span><span>getAttachments</span><span>().</span><span>add</span><span>(</span><span>attachment</span><span>);</span>

        <span>//Attach PDF file to PDF</span>
        <span>attachment</span> <span>=</span> <span>new</span> <span>PdfAttachment</span><span>(</span><span>"Example.pdf"</span><span>);</span>
        <span>attachment</span><span>.</span><span>setDescription</span><span>(</span><span>"Example.pdf"</span><span>);</span>
        <span>attachment</span><span>.</span><span>setMimeType</span><span>(</span><span>"application/pdf"</span><span>);</span>
        <span>pdf</span><span>.</span><span>getAttachments</span><span>().</span><span>add</span><span>(</span><span>attachment</span><span>);</span>

        <span>//Attach Word file to PDF</span>
        <span>attachment</span> <span>=</span> <span>new</span> <span>PdfAttachment</span><span>(</span><span>"Template.docx"</span><span>);</span>
        <span>attachment</span><span>.</span><span>setDescription</span><span>(</span><span>"Template.docx"</span><span>);</span>
        <span>attachment</span><span>.</span><span>setMimeType</span><span>(</span><span>"application/msword"</span><span>);</span>
        <span>pdf</span><span>.</span><span>getAttachments</span><span>().</span><span>add</span><span>(</span><span>attachment</span><span>);</span>

        <span>//Save the result file</span>
        <span>pdf</span><span>.</span><span>saveToFile</span><span>(</span><span>"AddAttachments.pdf"</span><span>);</span>

    <span>}</span>
<span>}</span>
import com.spire.pdf.PdfDocument; import com.spire.pdf.attachments.PdfAttachment; public class AddAttachments { public static void main(String[] args){ //Create a PdfDocument instance PdfDocument pdf = new PdfDocument(); //Attach txt file to PDF PdfAttachment attachment = new PdfAttachment("Input.txt"); attachment.setDescription("Input.txt"); attachment.setMimeType("application/txt"); pdf.getAttachments().add(attachment); //Attach image file to PDF attachment = new PdfAttachment("panda.jpg"); attachment.setDescription("panda.jpg"); attachment.setMimeType("image/jpg"); pdf.getAttachments().add(attachment); //Attach PDF file to PDF attachment = new PdfAttachment("Example.pdf"); attachment.setDescription("Example.pdf"); attachment.setMimeType("application/pdf"); pdf.getAttachments().add(attachment); //Attach Word file to PDF attachment = new PdfAttachment("Template.docx"); attachment.setDescription("Template.docx"); attachment.setMimeType("application/msword"); pdf.getAttachments().add(attachment); //Save the result file pdf.saveToFile("AddAttachments.pdf"); } }

Extract attachments

To extract attachments, you first need to get the attachment collection of a PDF file by using PdfDocument.getAttachments() method, second, loop through the collection, extract and save each attachment to disk.

<span>import</span> <span>com.spire.pdf.PdfDocument</span><span>;</span>
<span>import</span> <span>com.spire.pdf.attachments.PdfAttachmentCollection</span><span>;</span>
<span>import</span> <span>java.io.*</span><span>;</span>
<span>public</span> <span>class</span> <span>ExtractAttachments</span> <span>{</span>
<span>public</span> <span>static</span> <span>void</span> <span>main</span><span>(</span><span>String</span><span>[]</span> <span>args</span><span>)</span> <span>throws</span> <span>IOException</span> <span>{</span>
<span>//Load the PDF file</span>
<span>PdfDocument</span> <span>pdf</span> <span>=</span> <span>new</span> <span>PdfDocument</span><span>();</span>
<span>pdf</span><span>.</span><span>loadFromFile</span><span>(</span><span>"AddAttachments.pdf"</span><span>);</span>
<span>//Get the attachment collection of the PDF file</span>
<span>PdfAttachmentCollection</span> <span>attachments</span> <span>=</span> <span>pdf</span><span>.</span><span>getAttachments</span><span>();</span>
<span>//Loop through the collection and extract all the attachments in the PDF file</span>
<span>for</span> <span>(</span><span>int</span> <span>i</span> <span>=</span> <span>0</span><span>;</span> <span>i</span> <span><</span> <span>attachments</span><span>.</span><span>getCount</span><span>();</span> <span>i</span><span>++)</span> <span>{</span>
<span>File</span> <span>file</span> <span>=</span> <span>new</span> <span>File</span><span>(</span><span>"Attachments/"</span> <span>+</span> <span>attachments</span><span>.</span><span>get</span><span>(</span><span>i</span><span>).</span><span>getFileName</span><span>());</span>
<span>OutputStream</span> <span>output</span> <span>=</span> <span>new</span> <span>FileOutputStream</span><span>(</span><span>file</span><span>);</span>
<span>BufferedOutputStream</span> <span>bufferedOutput</span> <span>=</span> <span>new</span> <span>BufferedOutputStream</span><span>(</span><span>output</span><span>);</span>
<span>bufferedOutput</span><span>.</span><span>write</span><span>(</span><span>attachments</span><span>.</span><span>get</span><span>(</span><span>i</span><span>).</span><span>getData</span><span>());</span>
<span>bufferedOutput</span><span>.</span><span>close</span><span>();</span>
<span>}</span>
<span>}</span>
<span>}</span>
<span>import</span> <span>com.spire.pdf.PdfDocument</span><span>;</span>
<span>import</span> <span>com.spire.pdf.attachments.PdfAttachmentCollection</span><span>;</span>

<span>import</span> <span>java.io.*</span><span>;</span>

<span>public</span> <span>class</span> <span>ExtractAttachments</span> <span>{</span>
    <span>public</span> <span>static</span> <span>void</span> <span>main</span><span>(</span><span>String</span><span>[]</span> <span>args</span><span>)</span> <span>throws</span> <span>IOException</span> <span>{</span>
        <span>//Load the PDF file</span>
        <span>PdfDocument</span> <span>pdf</span> <span>=</span> <span>new</span> <span>PdfDocument</span><span>();</span>
        <span>pdf</span><span>.</span><span>loadFromFile</span><span>(</span><span>"AddAttachments.pdf"</span><span>);</span>

        <span>//Get the attachment collection of the PDF file</span>
        <span>PdfAttachmentCollection</span> <span>attachments</span> <span>=</span> <span>pdf</span><span>.</span><span>getAttachments</span><span>();</span>

        <span>//Loop through the collection and extract all the attachments in the PDF file</span>
        <span>for</span> <span>(</span><span>int</span> <span>i</span> <span>=</span> <span>0</span><span>;</span> <span>i</span> <span><</span> <span>attachments</span><span>.</span><span>getCount</span><span>();</span> <span>i</span><span>++)</span> <span>{</span>
            <span>File</span> <span>file</span> <span>=</span> <span>new</span> <span>File</span><span>(</span><span>"Attachments/"</span> <span>+</span> <span>attachments</span><span>.</span><span>get</span><span>(</span><span>i</span><span>).</span><span>getFileName</span><span>());</span>
            <span>OutputStream</span> <span>output</span> <span>=</span> <span>new</span> <span>FileOutputStream</span><span>(</span><span>file</span><span>);</span>
            <span>BufferedOutputStream</span> <span>bufferedOutput</span> <span>=</span> <span>new</span> <span>BufferedOutputStream</span><span>(</span><span>output</span><span>);</span>
            <span>bufferedOutput</span><span>.</span><span>write</span><span>(</span><span>attachments</span><span>.</span><span>get</span><span>(</span><span>i</span><span>).</span><span>getData</span><span>());</span>
            <span>bufferedOutput</span><span>.</span><span>close</span><span>();</span>
        <span>}</span>
    <span>}</span>
<span>}</span>
import com.spire.pdf.PdfDocument; import com.spire.pdf.attachments.PdfAttachmentCollection; import java.io.*; public class ExtractAttachments { public static void main(String[] args) throws IOException { //Load the PDF file PdfDocument pdf = new PdfDocument(); pdf.loadFromFile("AddAttachments.pdf"); //Get the attachment collection of the PDF file PdfAttachmentCollection attachments = pdf.getAttachments(); //Loop through the collection and extract all the attachments in the PDF file for (int i = 0; i < attachments.getCount(); i++) { File file = new File("Attachments/" + attachments.get(i).getFileName()); OutputStream output = new FileOutputStream(file); BufferedOutputStream bufferedOutput = new BufferedOutputStream(output); bufferedOutput.write(attachments.get(i).getData()); bufferedOutput.close(); } } }

Delete attachments

You can easily delete all of the attachments from a PDF file by using the PdfAttachmentCollection.clear() method.

<span>import</span> <span>com.spire.pdf.PdfDocument</span><span>;</span>
<span>import</span> <span>com.spire.pdf.attachments.PdfAttachmentCollection</span><span>;</span>
<span>public</span> <span>class</span> <span>DeleteAttachments</span> <span>{</span>
<span>public</span> <span>static</span> <span>void</span> <span>main</span><span>(</span><span>String</span><span>[]</span> <span>args</span><span>){</span>
<span>//Load the PDF file</span>
<span>PdfDocument</span> <span>pdf</span> <span>=</span> <span>new</span> <span>PdfDocument</span><span>();</span>
<span>pdf</span><span>.</span><span>loadFromFile</span><span>(</span><span>"AddAttachments.pdf"</span><span>);</span>
<span>//Get the attachment collection of the PDF file</span>
<span>PdfAttachmentCollection</span> <span>attachments</span> <span>=</span> <span>pdf</span><span>.</span><span>getAttachments</span><span>();</span>
<span>//Delete all the attachments from the PDF file</span>
<span>attachments</span><span>.</span><span>clear</span><span>();</span>
<span>//Save the result file</span>
<span>pdf</span><span>.</span><span>saveToFile</span><span>(</span><span>"DeleteAttachments.pdf"</span><span>);</span>
<span>}</span>
<span>}</span>
<span>import</span> <span>com.spire.pdf.PdfDocument</span><span>;</span>
<span>import</span> <span>com.spire.pdf.attachments.PdfAttachmentCollection</span><span>;</span>

<span>public</span> <span>class</span> <span>DeleteAttachments</span> <span>{</span>
    <span>public</span> <span>static</span> <span>void</span> <span>main</span><span>(</span><span>String</span><span>[]</span> <span>args</span><span>){</span>
        <span>//Load the PDF file</span>
        <span>PdfDocument</span> <span>pdf</span> <span>=</span> <span>new</span> <span>PdfDocument</span><span>();</span>
        <span>pdf</span><span>.</span><span>loadFromFile</span><span>(</span><span>"AddAttachments.pdf"</span><span>);</span>

        <span>//Get the attachment collection of the PDF file</span>
        <span>PdfAttachmentCollection</span> <span>attachments</span> <span>=</span> <span>pdf</span><span>.</span><span>getAttachments</span><span>();</span>
        <span>//Delete all the attachments from the PDF file</span>
        <span>attachments</span><span>.</span><span>clear</span><span>();</span>

        <span>//Save the result file</span>
        <span>pdf</span><span>.</span><span>saveToFile</span><span>(</span><span>"DeleteAttachments.pdf"</span><span>);</span>
    <span>}</span>
<span>}</span>
import com.spire.pdf.PdfDocument; import com.spire.pdf.attachments.PdfAttachmentCollection; public class DeleteAttachments { public static void main(String[] args){ //Load the PDF file PdfDocument pdf = new PdfDocument(); pdf.loadFromFile("AddAttachments.pdf"); //Get the attachment collection of the PDF file PdfAttachmentCollection attachments = pdf.getAttachments(); //Delete all the attachments from the PDF file attachments.clear(); //Save the result file pdf.saveToFile("DeleteAttachments.pdf"); } }

原文链接:Add, Extract and Delete Attachments in PDF in Java

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
Do not let dream just be your dream.
别让梦想只停留在梦里
评论 抢沙发

请登录后发表评论

    暂无评论内容