/* * Power by www.xiaoi.com */ package com.eastrobot.doc.samples; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Collection; import com.eastrobot.doc.service.impl.WatermarkServiceImpl; import com.eastrobot.doc.util.BaseTests; import org.apache.commons.io.IOUtils; import org.apache.poi.ddf.EscherComplexProperty; import org.apache.poi.ddf.EscherContainerRecord; import org.apache.poi.ddf.EscherOptRecord; import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.hwpf.usermodel.OfficeDrawing; import org.apache.poi.hwpf.usermodel.OfficeDrawings; import org.apache.poi.util.StringUtil; import org.apache.poi.xwpf.model.XWPFHeaderFooterPolicy; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.junit.Test; /** * @author <a href="mailto:[email protected]">eko.zhan</a> * @date 2018年8月31日 下午1:41:38 * @version 1.0 */ public class WatermarkWordTests extends BaseTests { /** * 给 docx 文件加水印 * @author eko.zhan at 2018年8月31日 下午1:41:50 * @throws IOException */ @Test public void testDocx() throws IOException { String filepath = "E:\\ConvertTester\\docx\\NVR5X-I人脸比对配置-ekozhan.docx"; WatermarkServiceImpl service = new WatermarkServiceImpl(); byte[] bytes = service.handle(new File(filepath), "中华民国100"); // FileOutputStream out = new FileOutputStream("E:\\1.docx"); // IOUtils.write(bytes, out); try (FileOutputStream out = new FileOutputStream("E:\\1.docx")){ IOUtils.write(bytes, out); } } @Test public void testDocx2() throws IOException { String filepath = "E:\\ConvertTester\\docx\\NVR5X-I人脸比对配置-ekozhan.docx"; XWPFDocument doc = new XWPFDocument(new FileInputStream(filepath)); XWPFHeaderFooterPolicy policy = new XWPFHeaderFooterPolicy(doc); policy.createWatermark("ekozhan123"); doc.write(new FileOutputStream("E:\\ConvertTester\\docx\\NVR5X-I人脸比对配置-ekozhan-11.docx")); doc.close(); } @Test public void testDoc() throws IOException { String filepath = "E:\\ConvertTester\\docx\\请稍候在注册表里注册.doc"; File originFile = new File(filepath); InputStream in = new FileInputStream(originFile); HWPFDocument doc = new HWPFDocument(in); if ( doc.getOfficeDrawingsHeaders() != null ) { System.out.println( "=== Document part: HEADER ===" ); for ( OfficeDrawing officeDrawing : doc .getOfficeDrawingsHeaders().getOfficeDrawings() ) { System.out.println( officeDrawing ); } } if ( doc.getOfficeDrawingsHeaders() != null ) { System.out.println( "=== Document part: MAIN ===" ); for ( OfficeDrawing officeDrawing : doc .getOfficeDrawingsMain().getOfficeDrawings() ) { System.out.println( officeDrawing ); } } if (true) return; OfficeDrawings officeDrawings = doc.getOfficeDrawingsHeaders(); OfficeDrawing officeDrawingAt = officeDrawings.getOfficeDrawingAt(0); Collection<OfficeDrawing> officeDrawings2 = officeDrawings.getOfficeDrawings(); OfficeDrawing drawing = doc.getOfficeDrawingsHeaders().getOfficeDrawings().iterator().next(); EscherContainerRecord escherContainerRecord = drawing.getOfficeArtSpContainer(); EscherOptRecord officeArtFOPT = escherContainerRecord.getChildById((short) 0xF00B); EscherComplexProperty gtextUNICODE = officeArtFOPT.lookup(0x00c0); String text = StringUtil.getFromUnicodeLE(gtextUNICODE.getComplexData()); System.out.println(text); doc.close(); } }