Java 添加附件到PDF文档

2025-10-19 23:28:53

1、步骤1:在Java程序中新建一个文件夹可命名为Lib。并将以下路径中的2个jar文件复制到新建的文件夹下。

Java 添加附件到PDF文档

2、步骤2:复制文件后,添加到引用类库:选中这两个jar文件,点击鼠标右键,选择“Build Path” – “Add to Build Path”。完成引用。

Java 添加附件到PDF文档

1、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;

    }

}

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

Java 添加附件到PDF文档

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢