如何转换 html 文件为 TEXT 文件?(50分)

  • 主题发起人 主题发起人 question
  • 开始时间 开始时间
Q

question

Unregistered / Unconfirmed
GUEST, unregistred user!
需要转换的 html 文件比较简单,所以我想得到类似在 IE 中全选后拷贝下来
的文档。
 
删除尖括号与尖括号括起的内容即可。
用程序也很容易实现,查找左尖括号,再搜索右尖括号,删除它们之间的内容和本身,再循环下一次、直到查完。
 
差不多就这样
 
有转换为 RTF 的构件吗?不需要支持图片
 
你可以找到html2txt这个程序参考一下。这个程序就是解决这个问题的。
 
估计转换为rtf也不是很难,不考虑图片的话,剩下的只有font, size color
等等,呵呵,想着是不难,不知道做着怎么样,
 
这里有一个HTML语法解析的控件,可能对你有用。
http://vcl.vclxx.com/DELPHI/D32FREE/HTMLPRSR.ZIP
 
我试过了,比较好用,用其中的TextBetween属性可以轻松的得到HTML中的文本。
如果下载有问题,说一声,我Email给你。
使用本单元中定义的类可以解析(和更新)任何HTML数据。

以下是我翻的简单说明,将就着看吧;-)

使用本单元须按一下步骤进行:
1、建立一个THtmlParser对象,将其Text属性设为你想解析的HTML文本;
2、使用以下两个方法在文本中自由移动:
NextTag --- 移动到下一个HTML标签(当Text属性被设置时,当前位置为文本起始处;
PrevTag --- 移动到上一个HTML标签
当前标签可由Tag属性获得。
TextBetween属性的内容为两个标签之间的文本。
3、其他有用的方法:
LoadFromFile --- 从磁盘中指定文件调入文本。
SaveToFile --- 将文本存盘。
GotoBeginning --- 设置文本起始处为当前位置(Tag和TextBetween两个属性置空)。
GotoEnd --- 设置文本结尾处为当前位置(Tag和TextBetween两个属性置空)。
RemoveTag --- 删除当前的标签
InsertTag --- 在当前标签之前插入一个新标签。
InsertText --- 在当前位置插入一些文本。
4、使用TTag对象存取<>之间的任何文本。
Name --- 标签名(如:'TABLE','IMG' 和'/BODY'),总是以大写形式返回。
Params --- 包括所有参数的TStringList。
     (每一行的形式,如'width=100' 或 'ALT="my image"')
提示:可以使用TStringList的Names,Values属性

最新的版本在"Delphi Super Page"可以得到。(http://delphi.icm.edu.pl)
 
深度历险有一个能够转换 HTML 成 .RTF 的类 (1.0 Beta 3 版,附源码),在
全部免费构件/工具 > 其他非可视构件或单元-2 > 其他类 > SCROOGE.ZIP
http://vcl.vclxx.com/DELPHI/D32FREE/SCROOGE.ZIP
 
一个简单的例子:

procedure TForm1.htmtotxt1Click(Sender: TObject);
var
sels,sele:longint;
s:string;
begin
s := richedit1.Text;
screen.Cursor := crHourGlass;
while pos('<',s) <> 0 do
begin
sels := pos('<',s);
sele := pos('>',s);
if sele = 0 then break;
if sels > sele then break;
delete(s,sels,sele-sels+1);
end;
richedit1.Text := s;
richedit1.perform(wm_vscroll,sb_top,0);
screen.Cursor := crDefault;
end;
 
如果用 删除尖括号与尖括号括起的内容 的
方法,要注意空格  
 
最简单的办法HTML控件的GetPlainText方法:
memo1.lilns.text:=html1.GetPlainText(false,false);
 
多人接受答案了。
 
后退
顶部