zoukankan      html  css  js  c++  java
  • 由去掉word文档中的一个GoLand复制后残留的底纹说起

    首先,是有个很难去掉的底纹,就是当黑底的Goland中复制代码,以保留格式方式黏贴后,会保留字体颜色、大小和“底纹”。

    就是保留的这个底纹,想去掉一直没成功,既不是文字的底纹,也不是页面边框里的底纹。

    • 为什么要去除,是因为wps复制保留的文档,看上去还可以。但是微软的office打开,行之间露出来了,影响阅读、难看的要死,不如去掉。

    发扬二杠子精神,做为程序员,能不能用什么读取文件属性,查看(最好是能去除)这个属性。

    GitHub上搜了下,搜word没搜到,在百度搜了下,看到个docx4j的似乎是java的一个库,然后又在github里以docx搜了下,搜到个Go语言的操作库(https://github.com/nguyenthenguyen/docx)。因为我不会Java,会点Go,就用它了。

    写了几行测试代码。读出word,发现doc的读不成功,再看和它自带例子区别,改文档为docx的。能读出来。

    看了下接受word内容的结构体,看里面 有两个结构体ReplaceDocx和Docx,属性相近,摘录个:

    type ReplaceDocx struct {
       zipReader ZipData
       content   string
       links     string
       headers   map[string]string
       footers   map[string]string
    }

    看了下内容,格式更像是存储在content中。将内容复制处了,看颜色都是十六进制显示的,看了下word中的底色是 2B2B2B(微信截图的时候截图框右下角有显示颜色数值)。

    搜了下果然有,给替换了下,写入新文件发现终于去掉了:

    docx2.SetContent(strings.ReplaceAll(contextStr, `<w:shd w:val="clear" w:fill="2B2B2B"/>`, ""))

    这个元素位置是在  <w:body> 子元素<w:p>再子元素,接着<w:r>子元素, 再 <w:rPr>子元素下有个 w:shd 名字的元素

    测试文档只有一行, 把我正式的文档弄过来试下,又没成功。。额,首先是doc格式的,需要改成docx,在用wps保存的时候,发现能保存很多种,还有xml格式的(心里咯噔了下)。

    改成docx还是不行,后来发现w:shd那个元素条目变成了这样:

    <w:shd w:val="clear" w:color="auto" w:fill="2B2B2B"/>

    两个替换都加上就好了。

    而这次我不再是将代码读取文档,复制context属性查找。而是另存为文件未xml格式,再用notepad打开查找到的。

    而且发现,这个xml格式仍能正常的用wps打开。

    以前认为doc的比较通用,兼容性好,看来还是应该转用docx了,更高级些吧。或者,那个xml格式不正是一直想找的记录日志的方式么?有word的排版方便,还有内容的文本化。

    因为这个xml文件可以wps当做word打开,所以直接xml方式直接文本删除掉,那都不用重新了吧。

    所以最终简洁方式是文档转为xml格式,删除其中的对应颜色底纹 w:shd  元素。然后看个人喜好是不是要将文件再另存为docx了。

    问题是解决了,去除了“底纹”。但是其实效果并不好,没了底纹,很多原先字体看上去都看不清了。

    查找w:shd 含义时,看到个介绍xml格式word文档意义的网页(https://www.cnblogs.com/forlina/archive/2011/06/09/2076559.html),虽然没介绍w:shd,但有其他一些常见的。

    关于微软的office有没提供 xml和docx的另存为,因为没office这个正版软件,没做测试。

  • 相关阅读:
    02数组基本操作
    01数组创建
    java流程控制
    assignment1
    Lecture 1: Introduction
    Lecture 14:Radial Basis Function Network
    Lecture 13:Deep Learning
    机器学习基石笔记16——机器可以怎样学得更好(4)
    机器学习基石笔记15——机器可以怎样学得更好(3)
    机器学习基石笔记14——机器可以怎样学得更好(2)
  • 原文地址:https://www.cnblogs.com/xiarl/p/15394157.html
Copyright © 2011-2022 走看看