2014-04-11 9 views
1

DOCX4J를 사용하여 DOCX를 HTML로 변환합니다. 변환을 성공적으로 완료하고 html 형식을 얻었습니다. html 형식을 사용하여 EMAIL 본문으로 포함하여 전자 메일을 보냅니다. 하지만 다음과 같습니다 몇 가지 문제가 .... 공간과 총알 내가 작성한 코드를 찾아주세요 DOCX를 HTML 이미지로 변환

지는 전자 메일 본문

  • 에서 이미지를 표시 할 수 없습니다
    1. ,

      WordprocessingMLPackage wordMLPackage; 
      wordMLPackage = Docx4J.load(new java.io.File(resourcePath2)); 
      HTMLSettings htmlSettings = Docx4J.createHTMLSettings(); 
      htmlSettings.setImageDirPath(imageFolder + resourcePath2 + "_files"); 
      htmlSettings.setImageTargetUri(imageFolder +resourcePath2.substring(resourcePath2.lastIndexOf("/")+1) + "_files"); 
      htmlSettings.setWmlPackage(wordMLPackage); 
      
      OutputStream os; 
      os = new ByteArrayOutputStream(); 
      Docx4jProperties.setProperty("docx4j.Convert.Out.HTML.OutputMethodXML", true); 
      Docx4J.toHTML(htmlSettings, os, Docx4J.FLAG_SAVE_FLAT_XML); 
      DOCX = ((ByteArrayOutputStream)os).toString(); 
      
  • +0

    에서 다운로드 할 수 있습니다 ? – hd1

    +0

    사용자가 첨부 파일을 원하지 않아 이메일 본문 자체에 전체 DOCX가 필요합니다. – user3522392

    +0

    공백과 글 머리 기호는 아마도 별도의 질문 일 필요가 있습니다. OpenXML 예제는 예상대로 처리되지 않습니다. – JasonPlutext

    답변

    0

    이미지가 이메일 본문에서 작동하려면 데이터 URI를 사용하거나 웹에 도달 할 수있는 위치에 이미지를 게시해야합니다.

    public interface ConversionImageHandler { 
    
    /** 
    * @param picture 
    * @param relationship of the image 
    * @param part of the image, if it is an internal image, otherwise null 
    * @return uri for the image we've saved, or null 
    * @throws Docx4JException this exception will be logged, but not propagated 
    */ 
    public String handleImage(AbstractWordXmlPicture picture, Relationship relationship, BinaryPart part) throws Docx4JException; 
    } 
    

    및 htmlSettings.setImageHandler와 함께 사용 docx4j을 구성

    는 두 경우의 구현을 작성해야합니다.

    docx4j 소스 코드의 기존 구현을보고 AbstractConversionImageHandler (예 : 데이터 URI가 필요한 경우 createEncodedImage)의 도우미 메소드를 활용할 수 있습니다.

    2

    전자 메일 메시지에 DOCX를 부착하지 왜 당신의 pom.xml

    <dependency> 
        <groupId>fr.opensagres.xdocreport</groupId> 
        <artifactId>org.apache.poi.xwpf.converter.xhtml</artifactId> 
        <version>1.0.4</version> 
    </dependency> 
    

    에 받는다는 종속성에 대한 코드

    package tcg.doc.web.managedBeans; 
    
    import java.io.File; 
    import java.io.FileInputStream; 
    import java.io.FileNotFoundException; 
    import java.io.FileOutputStream; 
    import java.io.IOException; 
    import java.io.InputStream; 
    import java.io.OutputStream; 
    
    import org.apache.poi.xwpf.converter.core.FileImageExtractor; 
    import org.apache.poi.xwpf.converter.core.FileURIResolver; 
    import org.apache.poi.xwpf.converter.xhtml.XHTMLConverter; 
    import org.apache.poi.xwpf.converter.xhtml.XHTMLOptions; 
    import org.apache.poi.xwpf.usermodel.XWPFDocument; 
    import org.springframework.beans.factory.annotation.Qualifier; 
    import org.springframework.context.annotation.Scope; 
    import org.springframework.stereotype.Component; 
    
    @Component 
    @Scope("session") 
    @Qualifier("ConvertWord") 
    
    
    public class ConvertWord { 
        private static final String docName = "TestDocx.docx"; 
        private static final String outputlFolderPath = "d:/"; 
    
    
        String htmlNamePath = "docHtml.html"; 
        String zipName="_tmp.zip"; 
        File docFile = new File(outputlFolderPath+docName); 
        File zipFile = new File(zipName); 
    
    
    
    
         public void ConvertWordToHtml() { 
    
          try { 
    
           // 1) Load DOCX into XWPFDocument 
           InputStream doc = new FileInputStream(new File(outputlFolderPath+docName)); 
           System.out.println("InputStream"+doc); 
           XWPFDocument document = new XWPFDocument(doc); 
    
           // 2) Prepare XHTML options (here we set the IURIResolver to load images from a "word/media" folder) 
           XHTMLOptions options = XHTMLOptions.create(); //.URIResolver(new FileURIResolver(new File("word/media")));; 
    
           // Extract image 
           String root = "target"; 
           File imageFolder = new File(root + "/images/" + doc); 
           options.setExtractor(new FileImageExtractor(imageFolder)); 
           // URI resolver 
           options.URIResolver(new FileURIResolver(imageFolder)); 
    
    
           OutputStream out = new FileOutputStream(new File(htmlPath())); 
           XHTMLConverter.getInstance().convert(document, out, options); 
    
    
           System.out.println("OutputStream "+out.toString()); 
          } catch (FileNotFoundException ex) { 
    
          } catch (IOException ex) { 
    
          } 
         } 
    
         public static void main(String[] args) { 
         ConvertWord cwoWord=new ConvertWord(); 
         cwoWord.ConvertWordToHtml(); 
         System.out.println(); 
        } 
    
    
    
         public String htmlPath(){ 
         // d:/docHtml.html 
          return outputlFolderPath+htmlNamePath; 
         } 
    
         public String zipPath(){ 
          // d:/_tmp.zip 
          return outputlFolderPath+zipName; 
         } 
    
    } 
    

    에 다음과 같이 추가하거나 Here