• Docx4j将html转成word时,br标签为软回车的问题修改


    docx4j版本:3.0.1

    修改jar包:docx4j-ImportXHTML

    maven配置为:

    具体代码位置:orgdocx4jconvertinxhtmlXHTMLImporterImpl.java 中 processInlineBoxContent方法

    代码修改前:

    代码修改后:

    	private void processInlineBoxContent(InlineBox inlineBox, Styleable s,
    			Map<String, CSSValue> cssMap) {
    				
    		
    		if (inlineBox.getTextNode()==null) {
                    
                if (s.getElement().getNodeName().equals("br") ) {
                    
    //                R run = Context.getWmlObjectFactory().createR();
    //                getListForRun().getContent().add(run);                
    //           		run.getContent().add(Context.getWmlObjectFactory().createBr());
                	Element ele = s.getElement();
    		    	if(null != ele){
    		    		Attr attrNode = ele.getAttributeNode("style");
    		        	if (attrNode != null && attrNode.getValue().contains("page-break-after: always")) {
    		        		Br br = Context.getWmlObjectFactory().createBr();
    		        		P p = Context.getWmlObjectFactory().createP();
    		        		// Create object for r
    		        		R r = Context.getWmlObjectFactory().createR();
    		        		p.getContent().add(r);
    		        	    br.setType(STBrType.PAGE);
    		        	    r.getContent().add(br);
    		        	    this.contentContextStack.peek().getContent().add(p);
    		        	}
    //		        	wordMLPackage.getMainDocumentPart().addObject(p);
    		    	}
                	
                	
                } else {
                	log.debug("InlineBox has no TextNode, so skipping" );
                	
                	// TODO .. a span in a span or a?
                	// need to traverse, how?
                	
                }
                
            } else  {
                log.debug( inlineBox.getTextNode().getTextContent() );  // don't use .getText()
    
                String theText = inlineBox.getTextNode().getTextContent(); 
                log.debug("Processing " + theText);
                
                paraStillEmpty = false;   
                
                String cssClass = getClassAttribute(s.getElement());
            	if (cssClass!=null) {
            	 	cssClass=cssClass.trim();
            	}
                addRun(cssClass, cssMap, theText);
        	            
    //                                    else {
    //                                    	// Get it from the parent element eg p
    //                        	            //Map cssMap = styleReference.getCascadedPropertiesMap(e);
    //                        	            run.setRPr(
    //                        	            		addRunProperties( cssMap ));                                    	                                    	
    //                                    }
            }
    	}
    

      

  • 相关阅读:
    try catch finally return
    github结合TortoiseGit使用sshkey,无需输入账号和密码
    github上fork别人的代码之后,如何保持和原作者同步的更新
    第9章 浅度和深度复制
    9.7结构类型
    excel在msdn上的说明文档
    9.6接口和抽象类
    [LeetCode]N-Queens II
    鸟哥Linux私房菜知识汇总8至9章
    Memcahce(MC)系列(三)Memcached它PHP转让
  • 原文地址:https://www.cnblogs.com/Iqiaoxun/p/7019331.html
Copyright © 2020-2023  润新知