在我的應用程序的一部分中,用戶可以複製Word或rtf文檔並將其粘貼到表單上的文本框中,然後將表單提交到任何圖像以及大量格式化將從表單字段內容中刪除。通過使用Coldfusion傳遞文本框從.rtf中剝離圖像
我想要達到相同的結果,但是通過直接從文件中讀取而不是通過手動形式提交,即去除隱藏的字符和圖像數據,只留下文本和換行/回車。
我該如何做到類似的事情?
在我的應用程序的一部分中,用戶可以複製Word或rtf文檔並將其粘貼到表單上的文本框中,然後將表單提交到任何圖像以及大量格式化將從表單字段內容中刪除。通過使用Coldfusion傳遞文本框從.rtf中剝離圖像
我想要達到相同的結果,但是通過直接從文件中讀取而不是通過手動形式提交,即去除隱藏的字符和圖像數據,只留下文本和換行/回車。
我該如何做到類似的事情?
如果你只是想提取從Word文檔中的文本,你可以嘗試POI。 CF9已經包含了一個可以處理大多數.doc或.docx文件的版本。 (它確實不是句柄.rtf文件)。對於CF8,您將需要使用javaLoader加載更新的版本。 Reading Office documents with ColdFusion (2)。
我發現這個博客帖子可能有助於:http://www.leavethatthingalone.com/blog/index.cfm/2005/6/11/Using-ColdFusion-to-convert-RTF-to-XHTML
這個過程將RTF文件,以XML,然後你可以用ColdFusion的XML標記讀取轉換後的文件。
過程
請注意,該庫自動創建xml文件。如果你的輸入文件mydoc.rtf您的XML輸出文件是mydoc.xml此進程創建
輸出示例:
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<?xml:stylesheet type="text/xsl" href="mydoc.xsl"?>
<!-- generated by Majix from c:\doc.rtf on Mon Jan 31 12:04:03 EST 2011 using template MyDoc -->
<!DOCTYPE mydoc PUBLIC "-//TetraSix//DTD mydoc v1.1//EN" "mydoc.dtd" [
<!NOTATION wmf PUBLIC "-/TetraSix/NOTATION Windows Metafile/EN" "wmf">
<!ENTITY g001 SYSTEM "images/doc_001.wmf" NDATA wmf>
]>
<mydoc>
<p>This is my rtf document</p>
<p></p>
<p><graphic url='images/doc_001.wmf'/></p>
<p></p>
<p></p>
</mydoc>
我使用在ColdFusion 9鏈接庫沒有任何問題,創建了自己的試驗檯。
請注意,我跳過博客文章中的第二個rereplacenocase
,因爲它導致了malfored xml文檔。
一旦你有你的XML文件,你可以像這樣閱讀:
<cffile action="read" file="c:\doc.xml" variable="xmldoc">
<cfdump var="#xmlparse(xmldoc)#" />
在該XML對象得到的:
有一件事讓我困擾於Majix,它在幾個地方使用了System.exit(..)。我發現了可以關閉你的jvm的難題。所以,如果你真的使用它,我建議在服務器上使用它之前,重新編譯你自己的版本(沒有任何System.exit調用)。 – Leigh 2011-01-31 03:10:44