Java 实现在线给word 文档添加水印

1:描述

    在线编辑文档后需要添加专属水印。防止文档被盗用。

2:方案

用 pageoffice 提供的 添加水印的方法

3:核心代码

(1)后台方法添加文字水印

doc.getWaterMark().setText("PageOffice开发平台");

(2)后台方法添加图片水印

doc.getWaterMark().setImage("doc/logo.jpg");

(3)用 js 方法插入文字水印 

document.getElementById("PageOfficeCtrl1").SetWordWaterMark( “PageOffice开发平台” ); 

(4)用 js 方法插入图片水印

 function AfterDocumentOpened() {
             /**  
               *document.getElementById("PageOfficeCtrl1").SetWordWaterMarkImage( ImageURL, ImageWidth, IsWashout ); 
               *ImageURL  字符串类型,必选参数,图片的路径。
               *ImageWidth  整数类型,必选参数,图片的宽度(单位:厘米)。如果是0表示采用图片默认宽度。
               *IsWashout  布尔类型,必选参数,是否冲蚀。true:冲蚀,false:不冲蚀
               */
             document.getElementById("PageOfficeCtrl1").SetWordWaterMarkImage("doc/logo.jpg",20,false); 
           }  

 

3:实现效果

cf4d00ff62020bc1ee77343f37cf519308c.jpg

5b132adc0d34a355abf29f88c4acd4aa6e8.jpg

 

具体的实现代码 和有关pageoffice 内容到卓正官网下载 完整的试用程序包,部署Samples示例,查看效果以及详细的代码。

http://www.zhuozhengsoft.com/dowm/

536dc81d3345448e631ebe5c8939e0cacca.jpg

cc7098fc4d3fa7c097c0eca3530261e1e8d.jpg

注意,添加水印的功能需要企业版才可以实现。(PageOffice V4.0 企业版试用序列号:I7TGD-71VV-FYD8-4NMYP)

可以看看视频教程,快速了解 pageoffice

0cd8498e4b35f5fd6a4f8f0d46692704c16.jpg

 

转载于:https://my.oschina.net/u/3507515/blog/3004615

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Apache POI库来实现Java添加Word文档水印。以下是一个简单的示例代码: ```java import java.io.*; import org.apache.poi.xwpf.usermodel.*; import org.apache.poi.util.IOUtils; public class AddWatermarkToWord { public static void main(String[] args) { try (XWPFDocument doc = new XWPFDocument(new FileInputStream("input.docx"))) { // 创建水印图片 InputStream is = new FileInputStream("watermark.png"); byte[] bytes = IOUtils.toByteArray(is); doc.createPicture(doc.getNextPicNameNumber(XWPFDocument.PICTURE_TYPE_PNG), doc.getNextPicNameNumber(XWPFDocument.PICTURE_TYPE_PNG), bytes, Units.toEMU(200), Units.toEMU(200)); // 将水印设置为所有页面的背景图像 for (XWPFParagraph p : doc.getParagraphs()) { for (XWPFRun r : p.getRuns()) { if (r.getCTR().getDrawingList().size() > 0) { for (CTDrawing ctDrawing : r.getCTR().getDrawingList()) { if (ctDrawing.getInlineArray().length > 0) { for (CTInline ctInline : ctDrawing.getInlineArray()) { if (ctInline.getGraphic().getGraphicData(). getPic().getBlipFill().getBlip().getEmbed() != null) { String blipId = ctInline.getGraphic().getGraphicData(). getPic().getBlipFill().getBlip().getEmbed(); XWPFPictureData picData = doc.getPictureDataByID(blipId); if (picData != null && "image/png".equals(picData. getPackagePart().getContentType())) { CTBackground ctBackground = p.getCTP().addNewPPr().addNewPBdr(). addNewShd(); ctBackground.setFill("FFFFFF"); ctBackground.setColor("auto"); ctBackground.setVal(STShd.CLEAR); ctBackground.setThemeFill(STThemeColor.BACKGROUND_1); ctBackground.setThemeFillTint(0); ctBackground.setThemeFillShade(0); ctBackground.setPatternFill(null); ctBackground.setBgColor(null); String watermarkId = ctBackground.addNewPicture().addNewBlipFill(). addNewBlip().getAttrValueArray(0); ctBackground.getPictureArray(0). addNewExtent().setCx(Units.toEMU(400)); ctBackground.getPictureArray(0). addNewExtent().setCy(Units.toEMU(400)); ctBackground.getPictureArray(0). addNewEffectLst(); ctBackground.getPictureArray(0). addNewDocPr().setId(1); ctBackground.getPictureArray(0). addNewCstate().setVal(STPicture.STRETCH); XWPFPictureData watermarkData = doc.addPictureData(new ByteArrayInputStream(bytes), XWPFDocument.PICTURE_TYPE_PNG); ctBackground.getPictureArray(0). getBlipFill().getBlip().setEmbed(watermarkId, watermarkData.getName(), watermarkData.getID()); ctBackground.getPictureArray(0). getBlipFill().setSourceRect(null); } } } } } } } } // 保存添加水印后的文档 doc.write(new FileOutputStream("output.docx")); } catch (Exception ex) { ex.printStackTrace(); } } } ``` 在上面的代码中,我们首先打开输入的Word文档,然后创建一个水印图片,将其设置为所有页面的背景图像。最后,我们将修改后的文档保存到输出文件中。 请注意,此代码仅适用于Word 2007及更高版本,因为它使用了OpenXML格式。如果您需要处理较旧版本Word文档,您需要使用不同的库,例如Apache POIFS。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值