0

我将一个 doc 文件转换为 html 并在我的 jeditorepane 上显示该 doc 文件。

该程序正在我的管理员帐户上运行。当我在我的 windows xp 中使用用户帐户登录时,该文件不显示。

try
{

               File docFile=new File("c:\\159.doc");   // file object was created
             FileInputStream finStream=new FileInputStream(docFile.getAbsolutePath()); 
             HWPFDocument doc=new HWPFDocument(finStream);

       WordExtractor wordExtract=new WordExtractor(doc);
         Document newDocument = DocumentBuilderFactory.newInstance() .newDocumentBuilder().newDocument();
    WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(newDocument) ;

    wordToHtmlConverter.processDocument(doc);

    StringWriter stringWriter = new StringWriter();
    Transformer transformer = TransformerFactory.newInstance()
            .newTransformer();
    transformer.setOutputProperty( OutputKeys.INDENT, "yes" );
    transformer.setOutputProperty( OutputKeys.ENCODING, "utf-8" );
    transformer.setOutputProperty( OutputKeys.METHOD, "html" );
    transformer.transform(
            new DOMSource( wordToHtmlConverter.getDocument() ),
            new StreamResult( stringWriter ) );

    String html = stringWriter.toString();

          System.out.println(html);


        FileOutputStream fos; 
            DataOutputStream dos;

           File file= new File("C:\\my.html");
      fos = new FileOutputStream(file);
      dos=new DataOutputStream(fos);
     // dos.writeInt();
      dos.writeUTF(html);

     JEditorPane editorPane = new JEditorPane();
    editorPane.setContentType("text/html");
     editorPane.setEditable(false);


            editorPane.setPage(file.toURL());

           JScrollPane scrollPane = new JScrollPane(editorPane);     

               JFrame f = new JFrame("O'Reilly & Associates");
     // Next line requires Java 1.3
                  f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                 f.getContentPane().add(scrollPane);
                f.setSize(512, 342);
                f.setVisible(true);
    }catch(Exception e)
    {

    }
4

1 回答 1

1

你不应该DataOutputStream来编写一个已经是你的 HTML 格式的字符串,因为这会为你创建一个二进制文件。C:\\my.html当您在记事本中打开时,您会明白这一点。它看起来不像您的常规 HTML 文件,并且很可能以不可打印的字符而不是<HTML>标记开头。

相反,您可以使用一个简单的FileWriter

File file= new File("C:\\my.html");
FileWriter fw = new FileWriter(file);
fw.write(html);
fw.flush();
fw.close();

编辑 :

还建议使用file.toURI().toURL()而不是,file.toURL()因为后者是一种已弃用的方法。根据java文档

此方法不会自动转义 URL 中的非法字符。建议新代码将抽象路径名转换为 URL,首先通过 toURI 方法将其转换为 URI,然后通过 URI.toURL 方法将 URI 转换为 URL。

于 2012-05-29T09:04:25.180 回答