`

Java 插入附件到PDF文档

阅读更多

在文档中插入附件,可以起到与源文档配套使用的目的,以一种更简便的方式对文档起到补充说明的作用。下面将介绍通过Java编程插入附件到PDF文档中的方法。这里插入的文档可以是常见的文档类型,如Word、Excel、Ppt、Txt或者其他文件类型。插入方法,分两种情况,一种是直接加载文档内容作为附件添加到PDF文档,另一种是通过给PDF文档添加注释并添加文档到注释的形式。两种方式中可根据文档需要,选择相应的附件添加方法。

 

使用工具:Free Spire.PDF for Java v2.2.2(免费版)

 

关于jar文件添加:

步骤1下载安装包,解压。并复制文件夹lib下的jar文件。


 步骤2在程序中新建一个directory目录,将步骤1中的jar文件复制到该目录下。

步骤3鼠标选中复制后的jar文件,点击鼠标右键,选择“Add as Library”。完成jar文件导入。

 

Java代码(供参考)

import com.spire.pdf.PdfDocument;
import com.spire.pdf.annotations.*;
import com.spire.pdf.attachments.PdfAttachment;
import com.spire.pdf.graphics.*;

import java.awt.*;
import java.awt.geom.Dimension2D;
import java.awt.geom.Rectangle2D;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class AttachFiles {

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

        //实例化PdfDocument类的对象
        PdfDocument doc = new PdfDocument();

        //加载需要添加附件的PDF文档
        doc.loadFromFile("test.pdf");

        //加载附件文档(Excel)并作为附件添加到PDF
        PdfAttachment attachment = new PdfAttachment("Sample.xlsx");
        doc.getAttachments().add(attachment);

        //在PDF页面指定位置绘制标签
        String label = "TestReport.docx";
        PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", Font.BOLD, 14));
        double x = 40;
        double y = doc.getPages().get(0).getActualSize().getHeight() -800;
        doc.getPages().get(0).getCanvas().drawString(label, font, PdfBrushes.getOrange(), x, y);

        //以注释的形式添加附件到PDF
        String filePath = "测试文档.docx";
        byte[] data = toByteArray(filePath);
        Dimension2D size = font.measureString(label);
        Rectangle2D bound = new Rectangle2D.Float((float) (x + size.getWidth() + 3), (float) y, 10, 15);
        PdfAttachmentAnnotation annotation = new PdfAttachmentAnnotation(bound, filePath, data);
        annotation.setColor(new PdfRGBColor(new Color(0, 128, 128)));
        annotation.setFlags(PdfAnnotationFlags.Default);
        annotation.setIcon(PdfAttachmentIcon.Graph);
        annotation.setText("点击打开测试报告文档.docx");
        doc.getPages().get(0).getAnnotationsWidget().add(annotation);

        //保存文档
        doc.saveToFile("Attachments.pdf");
    }

    //读取文件到byte数组
    public static byte[] toByteArray(String filePath) throws IOException {

        File file = new File(filePath);
        long fileSize = file.length();
        if (fileSize > Integer.MAX_VALUE) {
            System.out.println("file too big...");
            return null;
        }
        FileInputStream fi = new FileInputStream(file);
        byte[] buffer = new byte[(int) fileSize];
        int offset = 0;
        int numRead = 0;
        while (offset < buffer.length
                && (numRead = fi.read(buffer, offset, buffer.length - offset)) >= 0) {
            offset += numRead;
        }

        if (offset != buffer.length) {
            throw new IOException("Could not completely read file "
                    + file.getName());
        }
        fi.close();
        return buffer;
    }
}

 

附件添加效果(如下图):


 

(本文完)

 

  • 大小: 66.8 KB
  • 大小: 197 KB
0
0
分享到:
评论

相关推荐

    java使用itext实现pdf文件下载

    在Java开发中,生成和处理PDF文档是一项常见的需求。Itext是一个强大的库,它允许开发者在Java环境中创建、编辑和修改PDF文档。本教程将详细讲解如何使用Itext库实现PDF文件的下载,包括通过系统路径下载和通过...

    通过Aspose实现文件对象嵌入Word功能

    Aspose是一个强大的文件处理工具,尤其在Java环境中,它提供了丰富的API来操作各种文档格式,如Word、Excel、PDF等。在这个场景中,我们将聚焦于如何利用Aspose库在Word文档中嵌入文件对象,这一功能通常被称为OLE...

    免费PDF控件Spire.PDF

    插入页眉页脚,输入数据表,自动对大型表格进行分页外,Spire.PDF for .NET还支持PDF数字签名,将HTML转换成PDF格式,提取PDF文档中的文本信息和图片,存为文本格式和各种图片格式,甚至可以将PDF中的附件提取出来。...

    aspose-pdf-17.3.0.rar

    此外,Aspose.Pdf还支持对PDF文档进行高级操作,例如添加书签、创建表单字段、嵌入字体、处理PDF附件、添加数字签名等。在17.3.0版本中,可能会有新的特性或改进,如更好的图像处理性能,更丰富的表单交互,或者对...

    PDF模板报表导出,所需要的附件

    3. **iText库**:这是Java平台上的一个开源库,专门用于创建、修改和操作PDF文档。在"iText-5.0.6.jar"和"iTextAsian.jar"中,iText库提供了丰富的API,支持在PDF中添加文本、图像、表格等,并且"iTextAsian.jar"是...

    java操作pdf和javamail的合包

    PDF(Portable Document Format)是一种广泛使用的文档格式,用于保持内容的原始格式和布局。在Java中,有多个库可以用来创建、读取和修改PDF文件。这里提到的可能是Apache PDFBox或iText库。`从java应用程序动态...

    教你如何将java代码拷贝到有道云笔记

    - 有道云笔记的其他功能:有道云笔记除了基本的笔记功能外,还支持插入图片、附件、语音笔记等多媒体功能,甚至可以进行团队协作、文档共享等,大大拓展了笔记的用途。 - MyEclipse的代码美化:MyEclipse本身也提供...

    java Word 转 PDF格式(csdn)————程序.pdf

    这里,我们首先创建了一个新的PDF文档,然后删除了带有版权信息的第一页。这样,生成的新PDF就不会包含版权提示了。 除了文档转换,本节还提到了自定义表单的相关操作。在一些业务系统中,自定义表单是必不可少的,...

    itextpdf-5.5.10

    iTextPDF是一款功能强大的Java库,专用于创建、修改和处理PDF文档。版本5.5.10是其发展的一个里程碑,提供了丰富的API和稳定的功能,使得开发者能够轻松地在应用程序中集成PDF操作。本文将深入探讨iTextPDF 5.5.10的...

    jsp版的kindeditor附件上传组件

    jsp版KindEditor附件上传组件不仅为用户提供了便捷的文件上传和插入功能,也展示了Java技术在Web开发领域的强大应用能力。通过深入理解其工作原理和技术实现,开发者可以更好地利用KindEditor提升网站或应用的编辑...

    aspose.words操作word 一些关键方法

    例如,你可以将一个报告的摘要插入到主报告中,或者将已签名的合同作为附件插入。通过编程接口,可以精确控制插入的位置,如在特定段落或页眉页脚中。 2. 页面设置:页面设置是文档格式化的重要组成部分,Aspose....

    ASPOSE文档及应用

    10. 数据导入导出:支持从不同数据源(如CSV、XML、数据库)导入数据到文档,或者从文档导出数据到其他格式。 在实际应用中,ASPOSE常被用于企业级软件开发,例如报表系统、自动化工作流、文档管理系统等。通过...

    Eclipse模板化生成Word&PDF;文档.zip

    Java后端使用freemarker基于.ftl配置文件模板化模式生成文档,内容可以包括文本、图片、表文本格、目录、附件(excel等文件),适用于已经规范化的各种报告等文件;将后端生成的xml格式文档转换为word格式以及pdf...

    struts2PDF教程.rar

    这个"struts2PDF教程.rar"文件很可能包含了一系列关于如何在Struts2框架中生成和处理PDF文档的教程资料。PDF(Portable Document Format)是一种通用的文件格式,常用于在不同平台之间共享文档,保持格式一致性。 ...

    itext导出pdf

    这个库的强大之处在于它的灵活性和功能多样性,使得开发者能够轻松地实现PDF文档的生成、编辑和解析。在标题中提到的"itext插件导出pdf文档"实际上是指使用IText库来编写程序,将数据或者内容输出为PDF格式的文件。 ...

    WQeditor在线文档编辑

    3. **附件上传**:除了文字和图片,WQeditor还允许用户上传各种类型的附件,如PDF、Word文档、Excel表格等,便于分享和协作。 4. **代码编辑**:对于需要插入代码的场景,编辑器提供了代码高亮和格式化功能,使得...

    itextpdf.jar,mail.jar,ant.jar,itext-asian等

    例如,你可以使用iText来创建一个新的PDF文档,然后在其中添加表格,设置表头,插入段落,并定义标题的样式。`itext-asian.jar`是iText的扩展,专门支持亚洲语言,如中文、日文和韩文,解决了非拉丁字符集的显示问题...

    java jdk实列宝典 光盘源代码

    批处理,介绍如何一次执行一批sql语句,这些sql语句用插入、更新和删除等相关操作; 提交和回滚transaction.java; 使用PreparedStatement,动态执行sql语句,UsingPreparedStatement.java; 读写二进制数据,Binary...

Global site tag (gtag.js) - Google Analytics