【发布时间】:2015-04-30 01:57:39
【问题描述】:
我们正在开发 AngularJS 应用程序。要求是以 HTML 格式在新选项卡中显示文档。因此,我们正在实现一个转换器,它基本上会将办公文档(doc、docx 和 odt)转换为 HTML 查看器。我们已经使用Apache POI 实现了转换器。我们编写了三个转换器来将 doc、docx 和 odt 转换为 HTML。
问题
文本转换工作正常,但是当文档包含任何图像时会出现问题。所以转换器通过在我的本地系统上下载图像来提取图像,reference code:
protected void doGenerateHTMLFile( String fileInName )
throws IOException
{
String root = "target";
String fileOutName = root + "/" + fileInName + ".html";
long startTime = System.currentTimeMillis();
XWPFDocument document = new XWPFDocument( AbstractXWPFPOIConverterTest.class.getResourceAsStream( fileInName ) );
XHTMLOptions options = XHTMLOptions.create();// .indent( 4 );
// Extract image
File imageFolder = new File( root + "/images/" + fileInName );
options.setExtractor( new FileImageExtractor( imageFolder ) );
// URI resolver
options.URIResolver( new FileURIResolver( imageFolder ) );
OutputStream out = new FileOutputStream( new File( fileOutName ) );
XHTMLConverter.getInstance().convert( document, out, options );
}
现在下一个任务是将转换后的文档显示为 HTML(它包括用于包含图像的本地文件系统路径)不会将图像显示为 JS:
Not allowed to load local resource: file:///C:/Users/admin/M_Test/image/image1.JPG
更新
我已将图像路径更改为我的网站路径:http:\localhost:111\temp\ebe6a869-3df7-4ef4-b798-5ed323e4090f\images\myimage/word/media/image1.JPG at @ 987654325@
但在转换时,它会附加我的项目路径,例如:C:\MY_DRIVE\PROJECTS\OutSource\svn\IAP-Dynamic-Sql\http:\localhost:111\temp\ebe6a869-3df7- 4ef4-b798-5ed323e4090f\images\myimage/word/media/image1.JPG,
它怎么只能是我的本地主机路径?
因此,我们无法在新标签页中将文档加载到格式良好的文件中。
这是将 doc 转换为 HTML 的正确方法还是可以采用任何更好的方法?
【问题讨论】:
-
我认为您需要将图像 URL 路径到新的 FileURIResolver(File baseURL) 而不是本地文件夹
-
@KostyaShkryob 我已将图像更改为我的网站路径为 http:\localhost:111\temp\ebe6a869-3df7-4ef4-b798-5ed323e4090f\images\myimage/word/media/image1.JPG ,但是在转换时它会附加我的项目的路径,例如: C:\MY_DRIVE\PROJECTS\OutSource\svn\IAP-Dynamic-Sql\http:\localhost:111\temp\ebe6a869-3df7-4ef4-b798-5ed323e4090f\images \myimage/word/media/image1.JPG,它怎么只能是我的本地主机路径。
标签: java javascript html angularjs apache