首页 > 代码库 > java程序替换word2007中的图片

java程序替换word2007中的图片

1、新建word2007文档h2do.docx;

2、QQ截图粘贴到文档,添加些文字;

3、用winrar打开(修改扩展名docx为rar或右键->打开方式->选择winrar程序),目录结构如下:

.

│  [Content_Types].xml

├─docProps

│      app.xml

│      core.xml

├─word

│  │  comments.xml

│  │  document.xml

│  │  endnotes.xml

│  │  fontTable.xml

│  │  footnotes.xml

│  │  numbering.xml

│  │  settings.xml

│  │  styles.xml

│  │  webSettings.xml

│  │

│  ├─media

│  │      image1.png

│  │      image2.png

│  │

│  ├─theme

│  │      theme1.xml

│  │

│  └─_rels

│          document.xml.rels

└─_rels

        .rels

以下代码通过java程序替换word文件中的图片image1.png

public static void main(String[] args) throws Throwable
{
    ZipInputStream  zis = new ZipInputStream (new FileInputStream ("h2do.docx") );
    ZipOutputStream zos = new ZipOutputStream(new FileOutputStream("e2say.docx"));
    
    ZipEntry ze = null;
    byte[] b = new byte[1024];
    while((ze = zis.getNextEntry()) != null)
    {
        System.out.println(ze.getName() + ":" + ze.getMethod());
        ZipEntry entry = new ZipEntry(ze.getName());
        zos.putNextEntry(entry);
        
        /*将源压缩文件中每个文件写至新压缩文件*/
        InputStream is = zis;
        if(ze.getName().endsWith(".xml"))
        {
            String line = null;
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            while((line = br.readLine()) != null)
            {
                //TODO:进行查证替换
                zos.write((line+"\r\n").getBytes());
            }
        }else{//非xml文件,二进制流数据
            //替换图片
            if(ze.getName().endsWith("image1.png")){
                is = new FileInputStream("temp.png");
            }

            int r = -1; 
            while((r = is.read(b)) != -1){
                zos.write(b, 0, r);
            }
            
        }
        
        if(is != zis){
            is.close();
        }
    }
    
    zos.close();
    
}


java程序替换word2007中的图片