note6:spire.pdf免费版

博客介绍了对PDF文件抽取指定页处理的功能实现。使用Spire.pdf免费版时存在不能处理超10页文件的问题,给出了相关提示及商业版收费信息。最终通过更换Maven依赖包iTextPDF解决该问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、实现功能:对pdf文件抽取出指定页进行处理

2、问题:spire.pdf免费版不能处理超过10页的文件

<dependency>
    <groupId>e-iceblue</groupId>
    <artifactId>spire.pdf.free</artifactId>
    <version>5.1.0</version>
</dependency>

【截图在公司内部软件上,不能外传,大概就是在文件第11页会显示:

spire.pdf

Tree version is limited to 10 pages of PDF。

This limitation is enforced during loading and creating files.

When converting PDF to image, the first 10 pages of PDF files will be converted to Image format successfully.

Upgrade to Commecial edition of Spire.pdf(http://www.e-icebule.com/Introduce/pdf-for-java.html) 】

上图是商业版的收费价格。

3、解决:

换maven依赖包:itextpdf

实现方法如下:

/**
*pdfBytes文件
*list位置坐标 格式:页数,横坐标,纵坐标,缩放大小 eg:1,100,100,30
*imageBytes待插入图片
*在文件的指定页中插入图片
*/
public static byte[] mergeImageByte(byte[] pdfBytes,List<String> list,byte[] imageBytes) throws Exception{
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    //读取源文件
    PdfReader pdfReader = new PdfReader(pdfBytes);
    PdfStamper stamper = new PdfStamper(pdfReader,byteArrayOutputStream);
    //pdf页数
    int count = pdfReader.getNumberOfPages();
    //插入的图片
    Image contractImg = Image.getInstance(imageBytes);
    for(int i =0;i<list.size();i++){
        String str = (String)list.get(i);   //如果盖多页则分开处理
        String[] split = str.split(","); // 取出一组坐标中的元素
        int page = Integer.parseInt(split[0]);
        int x = Integer.parseInt(split[1]);
        int y = Integer.parseInt(split[2]);
        int point = Integer.parseInt(split[3]);
        //将图片放在pdf文件的第page页
        PdfContentByte pages = stamper.getOverContent(page);
        pages.saveState();
        PdfGState pdfGState = new PdfGState();

        //设置图片的透明度
        pdfGState.setFillOpacity(1.2F);
        pages.setGState(pdfGState);
        //图片缩放
        int width = (int)Math.round(contracting.getWidth()*point*0.01);
        int height = (int)MAth.round(contracting.getHeight()*point*0.01);
        //设置图片在PDF该页中的位置
        Rectangle pagesize = pdfReader.getPageSize(idx);
        int pageHeight = (int)pagesize.getHeight();
        int pageWidth = (int)pageSize.getWidth();
        contractImg.setAbsolutePosition(pagewidth-width-x,pageHeight-height-y);
        //设置图片的大小
        contractImg.scaleAbsolute(width, height);
        //将图片添加到pdf文件中
        pages.addImage(contractImg);
        pages.restoreState();
        stamper.setFormFlattening(true);
}
        stamper.close();
        pdfReader.close();
        byteArrayOutputStream.close();
        return byteArrayOutputStream.toByteArray();
    }

Free Spire.PDF for .NET 是 Spire.PDF for .NET 的免费版本,无需购买即可用于个人或商业用途。使用该组件,程序员可以 在.NET 程序中创建、读取、写入、编辑和操作 PDF 文档。这个控件能支持的功能十分全面,例如文档安全性设置(电子签名),提取 PDF 文本、附件、图片,PDF 合并和拆分,更新 Metadata,设置 Section,绘制图形、插入图片、表格制作和加工、导入数据等等。除此以外,Spire.PDF 还可以将 TXT 文本、图片、HTML 高质量地转换为 PDF 文件格式。 主要功能如下: 1.高质量的文档转换。Free Spire.PDF for .NET 支持 PDF 到 Word、XPS、SVG、EMF、Text 和图片(EMF、JPG、PNG、BMP、TIFF)的格式转换。也支持从 XML、HTML、RTF、XPS、Text、图片等格式生成 PDF 文档。 2.文档操作及域功能。支持合并、拆分 PDF 文档,在原有的 PDF 文档页添加覆盖页。同时,Spire.PDF 提供导入、邮戳、小册子功能,以及帮助用户从数据库读取数据并填充到域的域填写功能。 3. 安全性设置。用户可以通过设置密码和数字签名来保护 PDF 文档。用户密码和所有者密码可以确定加密的 PDF 文档的可读性、可修改性、是否可打印等有选择性的限制。与此同时,数字签名作为一个更有效的方法,可以应用于维护和对PDF文档进行身份验证。 4.数据提取。支持快速高效地从 PDF 文档提取图片、文本、PDF 分页,以及附件。 5.文件属性设置。支持对 Metadata、文件属性、页面方向、页面大小进行设置。其中文件属性包括文件限制(打印、页面提取、加评论等方面的权限限制)以及文件描述属性(文件名称、作者、主题、关键字等)。使用 Spire.PDF for .NET,用户还可以根据自己阅读喜好设定默认打开页码,分页模式,缩放比例和打印缩放,等等。 6.其他功能。 支持多种语言,支持字体格式、对齐方式设置。 绘制文字,图片,图形。 支持添加图层,透明图像,Color Space,条形码到 PDF。 支持 PDF/A-1b、PDF/x1a:2001 格式。 添加梯状图形和矢量图像到指定位置。 添加并格式化表格。 插入交互元素,例如添加自定义的 Annotation、Action、JavaScript、附件、书签等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值