• 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 ));                                    	                                    	
    //                                    }
            }
    	}
    

      

  • 相关阅读:
    Arduino Uno微控制器采用的是Atmel的ATmega328
    关于arduino与SPI
    fopen和fopen_s用法的比较
    C语言中 malloc
    补码原理——负数为什么要用补码表示
    晶振
    晶振(crystal)与谐振荡器(oscillator)
    LCD显示器缺陷自动化检测方案
    arduino 动态内存不足问题
    文档生成工具——Doxygen
  • 原文地址:https://www.cnblogs.com/Iqiaoxun/p/7019331.html
Copyright © 2020-2023  润新知