]> source.dussan.org Git - poi.git/commitdiff
add line breaks (0xb) support
authorSergey Vladimirov <sergey@apache.org>
Tue, 12 Jul 2011 14:40:06 +0000 (14:40 +0000)
committerSergey Vladimirov <sergey@apache.org>
Tue, 12 Jul 2011 14:40:06 +0000 (14:40 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1145609 13f79535-47bb-0310-9956-ffa450edef68

src/scratchpad/src/org/apache/poi/hwpf/converter/AbstractWordConverter.java
src/scratchpad/src/org/apache/poi/hwpf/converter/HtmlDocumentFacade.java
src/scratchpad/src/org/apache/poi/hwpf/converter/WordToFoConverter.java
src/scratchpad/src/org/apache/poi/hwpf/converter/WordToHtmlConverter.java

index 2f740f5131118f1ef978e419f1825aed2e95b484..64494a9c8c765a0da936ef4ff0cce9a5277a5ac8 100644 (file)
@@ -155,7 +155,31 @@ public abstract class AbstractWordConverter
                     || ( text.charAt( text.length() - 1 ) == BEL_MARK && currentTableLevel != 0 ) )
                 text = text.substring( 0, text.length() - 1 );
 
-            outputCharacters( block, characterRun, text );
+            {
+                // line breaks
+                StringBuilder stringBuilder = new StringBuilder();
+                for ( char charChar : text.toCharArray() )
+                {
+                    if ( charChar == 11 )
+                    {
+                        if ( stringBuilder.length() > 0 )
+                        {
+                            outputCharacters( block, characterRun, stringBuilder.toString() );
+                            stringBuilder.setLength( 0 );
+                        }
+                        processLineBreak(block, characterRun);
+                    }
+                    else
+                    {
+                        stringBuilder.append( charChar );
+                    }
+                }
+                if ( stringBuilder.length() > 0 )
+                {
+                    outputCharacters( block, characterRun, stringBuilder.toString() );
+                    stringBuilder.setLength( 0 );
+                }
+            }
 
             haveAnyText |= text.trim().length() != 0;
         }
@@ -293,6 +317,9 @@ public abstract class AbstractWordConverter
     protected abstract void processImage( Element currentBlock,
             boolean inlined, Picture picture );
 
+    protected abstract void processLineBreak( Element block,
+            CharacterRun characterRun );
+
     protected abstract void processPageref( HWPFDocumentCore wordDocument,
             Element currentBlock, Range textRange, int currentTableLevel,
             String pageref );
index 186f037a5a85a27645b36899c1fd1ade1aa587c0..d43fd44945cd8f041bd520af0907b5b347ef8997 100644 (file)
@@ -82,6 +82,11 @@ public class HtmlDocumentFacade
         return basicLink;
     }
 
+    public Element createLineBreak()
+    {
+        return document.createElement( "br" );
+    }
+
     public Element createListItem()
     {
         return document.createElement( "li" );
index e1f47d7385ec4d97f76d6170ce2bdaf283fe0e7d..7d118dbca5aa5f07607a190c289186d954e350fe 100644 (file)
@@ -294,6 +294,12 @@ public class WordToFoConverter extends AbstractWordConverter
                         + "' can be here" ) );
     }
 
+    @Override
+    protected void processLineBreak( Element block, CharacterRun characterRun )
+    {
+        block.appendChild( foDocumentFacade.createBlock() );
+    }
+
     protected void processPageref( HWPFDocumentCore hwpfDocument,
             Element currentBlock, Range textRange, int currentTableLevel,
             String pageref )
index 4c8e03f2914247edffe8eb3822795a015d4a37ff..5daf0375b853561d43de2d04a0a31e834f015ae3 100644 (file)
@@ -251,6 +251,12 @@ public class WordToHtmlConverter extends AbstractWordConverter
                     basicLink );
     }
 
+    @Override
+    protected void processLineBreak( Element block, CharacterRun characterRun )
+    {
+        block.appendChild( htmlDocumentFacade.createLineBreak() );
+    }
+
     /**
      * This method shall store image bytes in external file and convert it if
      * necessary. Images shall be stored using PNG format. Other formats may be