0
안녕, 나는 docx4j의 api.I 필요에 따라 줄 간격을 설정해야 사용 DOCX하는 문서를 변환하려합니다.
인용문
안녕, 나는 docx4j의 api.I 필요에 따라 줄 간격을 설정해야 사용 DOCX하는 문서를 변환하려합니다.
인용문
다음과 같은 수정 사용할 수 있습니다
@@ -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를 사용하는 것이 좋습니다.
Thanq u 너무. – user2211381
@JasonPlutext LineSpacingDescriptor lsd = p.getLineSpacing(); 여기에있는 p는 무엇입니까? 이 속성을 가져올 객체를 설정하고 찾을 수 없습니다. – sandy
@JasonPlutext 언급 된 P는 POI에서 온 것입니다. Docx4j를 사용하여 처음부터 새 문서를 만드는 경우 whoch 속성을 사용하여 단락의 줄 간격을 설정할 수 있습니까? – sandy