jacob修改页眉水印

http://wenwen.soso.com/z/q380024230.htm

 

 

mport com.jacob.activeX.ActiveXComponent;
import com.jacob.com.ComThread;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;public class WordBean
{
    //代表一个word程序
    ActiveXComponent msWordApp = null;
   
    //代表进行word文件处理
    Dispatch document = null;
   
    public WordBean()
    {
        if (msWordApp == null)
        {
            ComThread.InitSTA();
            msWordApp = new ActiveXComponent("Word.Application");
        }
    }
   
    //TODO 设置文档是是否前台打开word
    public void setVisible(boolean visible)
    {
        msWordApp.setProperty("Visible", new Variant(visible));
        //与上一句作用相同
        //   Dispatch.put(msWordApp, "Visible", new Variant(visible));
    }
   
    //TODO 创建一个新的文档
    public void createNewDocument()
    {
        //document表示word的所有文档窗口,(word是多文档窗口应用程序)
        Dispatch documents = Dispatch.get(msWordApp, "Documents").toDispatch();
        //调用add方法来创建一个新的文档
        document = Dispatch.call(documents, "Add").toDispatch();
    }
   
    //TODO 打开一个word文档
    public void openFile(String wordFilePath)
    {
        Dispatch documents = Dispatch.get(msWordApp, "Documents").toDispatch();
        document = Dispatch.call(documents, "Open", wordFilePath, new Variant(true)/**是否进行版本转换**/
       
        , new Variant(false)/**是否是只读**/
       
        ).toDispatch();
        //        document =
        //            Dispatch.invoke(documents,
        //                "Open",
        //                Dispatch.Method,
        //                new Object[] {wordFilePath, new Variant(true), new Variant(false)},
        //                new int[1]).toDispatch();
    }
       
    /**
     * 文档设置图片水印
     *
     * @param waterMarkPath
     *            水印路径  */
    public void setWaterMark(String waterMarkPath)
    {
        Dispatch activeWindow = Dispatch.get(msWordApp, "ActiveWindow").toDispatch();
        // 取得活动窗格对象
        Dispatch activePan = Dispatch.get(activeWindow, "ActivePane").toDispatch();
        // 取得视窗对象
        Dispatch view = Dispatch.get(activePan, "View").toDispatch();
        // 打开页眉,值为9,页脚为10
        Dispatch.put(view, "SeekView", new Variant(9));
        Dispatch docSelection = Dispatch.get(activeWindow, "Selection").toDispatch();
        //获取页眉和页脚
        Dispatch headfooter = Dispatch.get(docSelection, "HeaderFooter").toDispatch();
        // 获取水印图形对象
        Dispatch shapes = Dispatch.get(headfooter, "Shapes").toDispatch();
        // 给文档全部加上水印,设置了水印效果,内容,字体,大小,是否加粗,是否斜体,左边距,上边距。
        //调用shapes对象的AddPicture方法将全路径为picname的图片插入当前文档
        Dispatch picture = Dispatch.call(shapes, "AddPicture", waterMarkPath).toDispatch();
    
        //选择当前word文档的水印
        Dispatch.call(picture, "Select");
        Dispatch.put(picture, "Left", new Variant(0));
        Dispatch.put(picture, "Top", new Variant(150));
        Dispatch.put(picture, "Width", new Variant(150));
        Dispatch.put(picture, "Height", new Variant(150));
       
        //关闭页眉
        Dispatch.put(view, "SeekView", new Variant(0));
       
    }
   
    public void save()
    {
        Dispatch.call(document, "Save");
    }
   
    public void saveFileAs(String fileName)
    {
        Dispatch.call(document, "SaveAs", fileName);
    }
   
    public void closeDocument()
    {
        Dispatch.call(document, "Close", "-1");
        document = null;
    }
   
    public void closeWord()
    {
        Dispatch.call(msWordApp, "Quit");
        ComThread.Release();
        msWordApp = null;
        document = null;
    }
   
    public static void main(String[] args)
    {
        WordBean bean = new WordBean();
        bean.setVisible(false);
        bean.createNewDocument();
        bean.insertText("你好");
        bean.setWaterMark("c:\\pic.jpg");
        bean.saveFileAs("c:\\a.doc");
        bean.closeDocument();
        bean.closeWord();
       
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java Jacob 是一个 Java 与 Microsoft Office 交互的开源项目。它可以实现 Java 与 Office 应用程序(如 Word、Excel、PowerPoint)之间的互操作,包括打开、读取、编辑和保存文档。如果您需要对 PDF 文件添加水印,可以使用 iText 库。下面是一个简单的示例代码: ```java import java.io.File; import java.io.FileOutputStream; import com.itextpdf.text.Document; import com.itextpdf.text.Element; import com.itextpdf.text.Font; import com.itextpdf.text.PageSize; import com.itextpdf.text.Paragraph; import com.itextpdf.text.pdf.PdfContentByte; import com.itextpdf.text.pdf.PdfWriter; public class AddWatermark { public static void main(String[] args) { try { // 创建文档对象 Document document = new Document(PageSize.A4, 50, 50, 50, 50); PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(new File("test.pdf"))); document.open(); // 添加水印 PdfContentByte content = writer.getDirectContent(); Font font = new Font(Font.FontFamily.HELVETICA, 40); Paragraph watermark = new Paragraph("Confidential", font); watermark.setAlignment(Element.ALIGN_CENTER); content.beginText(); float width = PageSize.A4.getWidth(); float height = PageSize.A4.getHeight(); content.showTextAligned(Element.ALIGN_CENTER, watermark, width / 2, height / 2, 45); content.endText(); // 关闭文档 document.close(); } catch (Exception e) { e.printStackTrace(); } } } ``` 上述代码使用 iText 库创建了一个名为 "test.pdf" 的 PDF 文件,并在其中添加了一个名为 "Confidential" 的水印。如果您需要更改水印的样式或位置,请修改上述代码中的相应参数即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值