aspose.words在特定内容加水印Word转PDF

        由于导出的PDF添加水印的内容有的在表格中有的在文本段落中,所以需要遍历每个段落,判断改段落在哪个位置后插入水印,在表格Cell中插入水印需要进行特殊处理。new Paragraph()后将水印图形添加入段落后,才能将该段落添加到表格中以达到水印添加到表格中。

public static void wordToPdf(File docFile,File pdfFile,String keyword) throws Exception {
        //使用aspose需要获取凭证
        if (!getLicense()) {
            throw new KitException("获取凭证失败!");
        }

        Document doc = new Document(String.valueOf(docFile));

        // 遍历文档中的每个段落
        for (Object paragraph : doc.getChildNodes(NodeType.PARAGRAPH, true)) {
            Paragraph para = (Paragraph) paragraph;
            // 如果找到关键词所在的段落
            if (para.getText().contains(keyword)) {
                WatermarkProperties watermarkProperties = new WatermarkProperties();
                watermarkProperties.setHeight(30);
                watermarkProperties.setWidth(300);
                Shape shape = WatermarkUtil.shapeMore(doc,watermarkProperties,-50,0);

                while (para != null) {
                    Node parentNode = para.getParentNode();

                    if (parentNode.getNodeType() == NodeType.BODY) {
                        para.getParentNode().appendChild(shape);
                        // 已经到达Body节点,添加后退出循环
                        break;
                    } else if (parentNode.getNodeType() == NodeType.CELL) {
                        // 如果父节点是Cell类型,可以选择处理Cell内的段落或进一步上溯到Row和Table
                        Cell cell = (Cell) parentNode;
                        Paragraph nodes = new Paragraph(doc);
                        nodes.appendChild(shape);
                        cell.appendChild(nodes);
                        break;
                    } else {
                        // 对于其他类型的节点,直接上溯
                        para = (Paragraph) parentNode;
                    }
                }
            }
        }
        // 保存文档
        doc.save(String.valueOf(pdfFile),SaveFormat.PDF);
    }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值