java 用poi给doc添加水印 基于vb或者各种插件就不要来答了。
展开全部package com.ymo.word;import com.jacob.activeX.ActiveXComponent;import com.jacob.com.ComThread;import com.jacob.com.Dispatch;import com.jacob.com.Variant;public class TestJacobWord {private ActiveXComponent wrdCom = null;private Dispatch doc = null;private Dispatch activeDoc = null;private Dispatch docSelect = null;private Dispatch docs = null;private static TestJacobWord instance = null;private String docName = "";public static TestJacobWord getInstance() {if (instance == null) {instance = new TestJacobWord();}return instance;}private boolean initWord() {boolean flag = false;ComThread.InitSTA();wrdCom = new ActiveXComponent("word.Application");try {docs = wrdCom.getProperty("Documents").toDispatch();wrdCom.setProperty("Visible", new Variant(false));flag = true;} catch (Exception e) {flag = false;e.printStackTrace();}return flag;}private void createNewDocument() {doc = Dispatch.call(docs, "Add").toDispatch();docSelect = Dispatch.get(wrdCom, "Selection").toDispatch();}private void getActiveDoc() {activeDoc = wrdCom.getProperty("ActiveWindow").toDispatch();System.out.println(activeDoc.getProgramId());}private void openDocument(String docPath) {if (this.doc != null) {closeDocument();}this.doc = Dispatch.call(docs, "Open", docPath, new Variant(false),new Variant(false)).toDispatch();docSelect = Dispatch.get(wrdCom, "Selection").toDispatch();}private void closeDocument() {if (doc != null) {Dispatch.call(doc, "Save");Dispatch.call(doc, "Close", new Variant(true));doc = null;}}private void setImgWaterMark(String waterMarkPath) {Dispatch activePan = Dispatch.get(activeDoc, "ActivePane").toDispatch();Dispatch view = Dispatch.get(activePan, "View").toDispatch();Dispatch.put(view, "SeekView", new Variant(9));Dispatch headfooter = Dispatch.get(docSelect, "HeaderFooter").toDispatch();// 取得图形对象Dispatch shapes = Dispatch.get(headfooter, "Shapes").toDispatch();Dispatch pic = Dispatch.call(shapes, "AddPicture", waterMarkPath).toDispatch();Dispatch.call(pic, "Select");Dispatch.put(pic, "Left", new Variant(10));Dispatch.put(pic, "Top", new Variant(200));Dispatch.put(pic, "Width", new Variant(150));Dispatch.put(pic, "Height", new Variant(80));Dispatch.put(view, "SeekView", new Variant(0));}public void setTextWaterMark(String waterMarkStr) {Dispatch activePan = Dispatch.get(activeDoc, "ActivePane").toDispatch();Dispatch view = Dispatch.get(activePan, "View").toDispatch();Dispatch.put(view, "SeekView", new Variant(9));Dispatch headfooter = Dispatch.get(docSelect, "HeaderFooter").toDispatch();Dispatch shapes = Dispatch.get(headfooter, "Shapes").toDispatch();Dispatch selection = Dispatch.call(shapes, "AddTextEffect",new Variant(9), waterMarkStr, "宋体", new Variant(1),new Variant(false), new Variant(false), new Variant(0),new Variant(0)).toDispatch();Dispatch.call(selection, "Select");Dispatch shapeRange = Dispatch.get(docSelect, "ShapeRange").toDispatch();Dispatch.put(shapeRange, "Name", "PowerPlusWaterMarkObject1");Dispatch textEffect = Dispatch.get(shapeRange, "TextEffect").toDispatch();Dispatch.put(textEffect, "NormalizedHeight", new Boolean(false));Dispatch line = Dispatch.get(shapeRange, "Line").toDispatch();Dispatch.put(line, "Visible", new Boolean(false));Dispatch fill = Dispatch.get(shapeRange, "Fill").toDispatch();Dispatch.put(fill, "Visible", new Boolean(true));// 设置水印透明度Dispatch.put(fill, "Transparency", new Variant(0.5));Dispatch foreColor = Dispatch.get(fill, "ForeColor").toDispatch();Dispatch.put(foreColor, "RGB", new Variant(16711620));Dispatch.call(fill, "Solid");// 设置水印旋转Dispatch.put(shapeRange, "Rotation", new Variant(315));Dispatch.put(shapeRange, "LockAspectRatio", new Boolean(true));Dispatch.put(shapeRange, "Height", new Variant(117.0709));Dispatch.put(shapeRange, "Width", new Variant(468.2835));Dispatch.put(shapeRange, "Left", new Variant(-999995));Dispatch.put(shapeRange, "Top", new Variant(-999995));Dispatch wrapFormat = Dispatch.get(shapeRange, "WrapFormat").toDispatch();// 是否允许交叠Dispatch.put(wrapFormat, "AllowOverlap", new Variant(true));Dispatch.put(wrapFormat, "Side", new Variant(3));Dispatch.put(wrapFormat, "Type", new Variant(3));Dispatch.put(shapeRange, "RelativeHorizontalPosition", new Variant(0));Dispatch.put(shapeRange, "RelativeVerticalPosition", new Variant(0));Dispatch.put(view, "SeekView", new Variant(0));}private void clos...
java使用itext生成word添加水印,不是pdf
1.在Word中,可以利用“绘图”工具栏中的“文本框”按钮,在文档的任何地方插入文本框。
在文本框插入图形或文本之后,再单击“绘图”工具栏的“置于文字之后”按钮,将图形或文本隐藏在文档的正文下面,形成水印。
2.快速设置水印的方法。
选择“工具”菜单的“设置增强功能”命令,打开对话框。
利用“增强功能”工具栏的“文本水印”按钮,单击此按钮,可以打开“水印”对话框。
3.可以利用所选图形做水印。
选择“插入”菜单的“图片”,再选择“来自文件”,选择一幅您自己喜欢的图片。
有了图片以后,单击鼠标右键,弹出菜单,选择“设定图形格式”,再选择“环绕”,可见到“穿越型”与“上下型”之间,有一个“无”,选择“无”即可。
java用poi导出word文档,我要导出一个表格,表格的单元格中还要有...
有个最简单,不用使用任何 poi 或其他第三方类库的方法生成 excel ,或 word ,你把一个生成好的 word 例子用文件另存为 xml , docx 之类,然后你再直接用记事本去打开这个 docx ,你就会发现是 xml 格式,这个时候,你在程序里面就直接用普通代码生成这个 xml 就可以了。
关于WORD水印想在WORD中加入一张水印图片,可是WORD默认
1. 制作好文档后,通过“视图→页眉页脚”命令,调出“页眉页脚”工具栏,单击其中的“显示→隐藏文档正文文字”按钮,隐藏正文部分的文字内容。
2. 选择“插入”菜单中的“文本框”命令,在页眉的下方插入一个空文本框。
3. 在文本框内加入作为水印的文字、图形等内容,右击图片,选择快捷菜单中的“设置图片格式”命令,在对话框中“图片”选项卡下,通过“图像控制”改变图像的颜色,对比度和亮度,并手动调整图片的大小。
4. 通过“设置文本框格式”命令,把文本框的线条色改为无线条色。
5. 单击“页眉页脚”工具栏的“关闭”按钮,退出“页眉页脚”编辑。
完成上述步骤的操作,水印制作得以完成,这样就为每一页都添加了相同的水印。
java poi XWPFTable操作word表格的问题?
1.下载下载3.8beta4版本,请记得一定要下载该版本,其他版本读取word模板并改写内容生成新的文件后,打开新文件时会提示“word无法读取文档,文档可能损坏。
”2.集成到项目这一步很简单,只要把下载后解压得到的poi-3.8-beta4-20110826.jar和poi-scratchpad-3.8-beta4-20110826.jar两个文件复制到java web项目的lib目录下就行了3.制作word模板把需要变动的值全部用代码来代替,例如你需要改变名称的值,则可以在模板中用name来表示。
详细见附件中的doc文件。
4.调用接口方法实现对word的读写操作整个过程就是先读取模板,然后修改内容,再重新生成新的文档保存到本地或者输出文件流提供下载,下面分别是生成新文档和输出文件流两种方式的代码片断,详细的代码请见下列代码中的readwriteWord()两个重载方法。
用Java给jpg图片加文字水印,加的水印盖住了原来的图片,怎么办。
jpg文件上的水印的清除方法:如果需要将带水印的JPG转换成05H的PDG:1、 将PDG批量更名为JPG。
如果下载的时候就已经是JPG,则此步省略。
2、用ComicEnhancer Pro打开带水印的JPG,色彩选“单色”,水印没了吧?不过这个时候文字多半也会变得很细,可以通过增加“Gamma校正”值,或用“曲线”来加黑。
注意“Gamma校正”和“曲线”选一个足矣。
调节好以后,转换成TIFF。
3、将TIFF文件更名为PDG,并且符合PDG文件命名规范,然后用高版本DjVuToy的“PDG压缩”功能转换成05H的PDG。
注意转换的时候把“转换为快速版”选项去掉。
如果不需要转换成PDG,而是希望在去掉水印的同时尽可能保持清晰:1、将PDG批量更名为JPG。
如果下载的时候就已经是JPG,则此步省略。
2、用ComicEnhancer Pro打开带水印的JPG,将“高亮度”设置为125,看到那神奇的效果了吗?如果希望对文字的影响尽可能小,还可以尝试将“高亮值”设置为210。
3、下面就看你高兴了,可以直接存为JPG,也可以在色彩选“16级灰度”、“8级灰度”、“4级灰度”,然后转换成PNG。
灰度级数越少,图像损失越多,文件越小,16级灰度基本上肉眼看不出文字部分有任何损失,4级灰度则很明显,可以结合“曲线”或“Gamma校正”等加以改善。
Java poi怎么导入
展开全部 本篇面向对象为Java的初学者,从下载必备软件到创建一个空白的POI工程,已经熟练掌握环境搭建的请跳过此文。
开发环境为windowsXP-SP2,Eclipse3.2,JDK1.5.07,其实差不多都行,不会有太大的差异。
本文从POI下载开始讲解,前提是开发环境包括系统变量等等已经正确设置完毕。
1.POI的下载截至本文发表,POI最新版本是3.0.1,距离上一个Final版本有3年了吧,以至于我差点儿就把他放弃了——以为没人管了。
官方的公告讲,这一版主要是追加了一些新的特性和BUG修正,不过稍微有点儿遗憾的是,还不能很好的操作Excel2007。
POI官方网址: ?http://poi.apache.org/ JAR包下载: ?http://apache.mirror.phpchina.com/poi/release/bin/poi-bin-3.0.1-FINAL-20070705.zip 源码下载: ?http://apache.mirror.phpchina.com/poi/release/src/poi-src-3.0.1-FINAL-20070705.zip 下载上面的JAR和源码(源码不是必须的,但是为了早日修得正果,深入系统的看看POI代码还是有必要的)并解压待用。
2.用Eclipse搭建项目? 打开Eclipse ?依次点击File->New->Java Project ?输入项目名称,本例中设置为POI ?单击完成 ?在项目上点击右键->New->Folder ?输入文件夹名称lib ?把刚才解压的poi-3.0.1-FINAL-20070705.jar复制过来 ?右键点击项目,选择Properties ?在左侧列表里选中Java Build Path,右侧选中Libraries ?点击Add JARs,选择POI项目的lib下的所有文件 ?两次OK确认,回到Eclipse界面 小技巧,快捷操作:可以用鼠标左键选中poi-3.0.1-FINAL-20070705.jar但不松开,拖到任务栏的Eclipse图标上等候1秒左右,Eclipse会自动弹起来,依然不松开移动到lib文件夹上,这个时候鼠标后面跟个十字符号,松开左键,就完成了复制动作。
这个是对整个windows系统都好用的快捷复制方式,视源盘符和目标盘符的不同偶尔会用到Ctrl键。
到此为止,我们做好了POI学习的前提准备,接下来将从最简单的文档创建开始一步一步学习怎样让POI更好的为我们工作。
第一讲 :基本的Excel读写本文主要演示一下POI的基本操作,例如怎样读取和创建一个具体的Excel文件。
按照惯例,拿HelloWorld说事儿。
说明:本文主要内容皆包含于官方帮助手册,之所以要拿出来,出于两个原因,手册是英文的+手册是对应2.5.1的。
核心代码如下,注释部分为讲解。
这里只挑干的讲,完整的代码请参考(下载代码)。
//创建一个空白的WorkBookHSSFWorkbook wb = new HSSFWorkbook();//基于上面的WorkBook创建属于此WorkBook的Sheet,//3.0.1版在使用全角Sheet名的时候不必再setEncdoing了,个人感觉方便了许多。
HSSFSheet st = wb.createSheet("测试页");//创建属于上面Sheet的Row,参数0可以是0~65535之间的任何一个,//注意,尽管参数是Int类型,但是Excel最多支持65536行HSSFRow row = st.createRow(0);//创建属于上面Row的Cell,参数0可以是0~255之间的任何一个,//同样,是因为Excel最大支持的列数为256列HSSFCell cell = row.createCell((short) 0);//设置此单元格的格式为文本,此句可以省略,Excel会自动识别。
//其他还有几种常用的格式,请参考本文底部的补充部分。
cell.setCellType(HSSFCell.CELL_TYPE_STRING);//此处是3.0.1版的改进之处,上一版可以直接setCellValue("Hello, World!"),//但是在3.0.1里,被deprecated了。
cell.setCellValue(new HSSFRichTextString("Hello, World!"));//创建一个文件输出流,指定到C盘根目录下(C盘都有吧?)//xls是Excel97-2003的标准扩展名,2007是xlsx,目前的POI能直接生产的还是xls格式,//如果此处把扩展名改成xlsx,在用Excel2007打开此文件时会报错。
FileOutputStream writeFile = new FileOutputStream("c:/helloworld.xls");//把WorkBook写到流里wb.write(writeFile);//记得手动关闭流,官方文档已经做了特别说明,说POI不负责关闭用户打开的流。
所以...writeFile.close();上面就是创建一个新文档的简易代码,下面的例子是读取刚才创建的Excel并把读取到的内容显示在控制台上。
//指定要读取的文件,本例使用上面生成的helloworld.xlsFileInputStream readFile = new FileInputStream("c:/helloworld.xls");//创建一个WorkBook,从指定的文件流中创建,即上面指定了的文件流HSSFWorkbook wb = new HSSFWorkbook(readFile);//获取名称为“测试页”的sheet//注意,如果不能确定具体的名称,可以用getSheetAt(int)方法取得SheetHSSFSheet st = wb.getSheet("测试页");//获得第一行,同上,如果此行没有被创建过则抛出异常HSSFRow row = st.getRow(0);//获取第一个单元格,如果没有被创建过则抛出异常HSSFCell cell = row.getCell((short) 0);//把cell中的内容按字符串方式读取出来,并显示在控制台上//注意,getRichStringCellValue()方法是3.0.1新追加的,//老版本中的getStringCellValue()方法被deprecated了System.out.println(cell.getRichStringCellValue());//记得关闭流readFile.close();上面对创建和读取分别举例说明,回顾...
转载请注明出处51数据库 » java poi给word加水印