2013-04-17 6 views

답변

1

다음과 같은 수정 사용할 수 있습니다

@@ -20,23 +20,30 @@ 

package org.docx4j.convert.in; 


import java.io.FileInputStream; 
+import java.math.BigInteger; 

import org.apache.log4j.Logger; 
import org.apache.poi.hwpf.HWPFDocument; 
import org.apache.poi.hwpf.usermodel.CharacterRun; 
+import org.apache.poi.hwpf.usermodel.LineSpacingDescriptor; 
import org.apache.poi.hwpf.usermodel.Paragraph; 
import org.apache.poi.hwpf.usermodel.Range; 
import org.apache.poi.hwpf.usermodel.Section; 
import org.apache.poi.hwpf.usermodel.Table; 
import org.apache.poi.hwpf.usermodel.TableCell; 
import org.apache.poi.hwpf.usermodel.TableRow; 
+import org.docx4j.XmlUtils; 
+import org.docx4j.jaxb.Context; 
import org.docx4j.openpackaging.io.SaveToZipFile; 
import org.docx4j.openpackaging.packages.WordprocessingMLPackage; 
import org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart; 
+import org.docx4j.wml.PPr; 
+import org.docx4j.wml.PPrBase.Spacing; 
+import org.docx4j.wml.STLineSpacingRule; 

@@ -152,10 +161,26 @@ public class Doc { 
      wmlP = documentPart.createStyledParagraphOfText(stripSpace(styleName), null); 

     } else { 
      wmlP = documentPart.createParagraphOfText(null); 
     } 
+  
+  LineSpacingDescriptor lsd = p.getLineSpacing(); 
+  if (lsd==null || lsd.isEmpty()) { 
+   // do nothing 
+  } else { 
+   PPr pPr = wmlP.getPPr(); 
+   if (pPr==null) { 
+    pPr = Context.getWmlObjectFactory().createPPr(); 
+    wmlP.setPPr(pPr); 
+   } 
+   Spacing spacing = Context.getWmlObjectFactory().createPPrBaseSpacing(); 
+   spacing.setLine(lsd._dyaLine); 
+   spacing.setLineRule(STLineSpacingRule.AUTO); 
+   pPr.setSpacing(spacing); 
+  } 
+  

을하지만 볼 _dyaLine 없습니다.

docx4j는 Apache POI의 HWPF를 사용하여 바이너리 .doc을 읽으며 POI에 _dyaLine에 대한 getter가 필요합니다.

docx로 가져 오는 doc은 개념보다 기본적인 개념 증명입니다.

doc를 docx로 변환하고 다양한 기능을 유지하려면 JODConverter를 통해 LibreOffice/OpenOffice를 사용하는 것이 좋습니다.

+0

Thanq u 너무. – user2211381

+0

@JasonPlutext LineSpacingDescriptor lsd = p.getLineSpacing(); 여기에있는 p는 무엇입니까? 이 속성을 가져올 객체를 설정하고 찾을 수 없습니다. – sandy

+0

@JasonPlutext 언급 된 P는 POI에서 온 것입니다. Docx4j를 사용하여 처음부터 새 문서를 만드는 경우 whoch 속성을 사용하여 단락의 줄 간격을 설정할 수 있습니까? – sandy