中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » 其它操作系统综合讨论区 » 关于txt转htm的问题,欢迎大家讨论
作者:
标题: 关于txt转htm的问题,欢迎大家讨论 上一主题 | 下一主题
zzhh612
中级用户




积分 278
发帖 103
注册 2006-10-21
状态 离线
『楼 主』:  关于txt转htm的问题,欢迎大家讨论

本人平时喜欢收集一些文本文档的资料,本想做一个txt转htm的批处理,将收集的大量东西转为htm,再编译成CHM的电子书,没想到刚着手,却先被txt转htm的问题难住了,本要在批处理专栏发帖的,想想这又不是DOS的问题,所以就在这发了,望版主不要说我发错地方了..

一种方法是一些电子书制作软件本身支持对txt的编译,它保持了文本的原样,但有一个致命的弱点就是不能支持全文搜索.这对于较大的CHM来说是相当不好的.弱点二是对于单行较长的,在浏览时不能自动换行,要通过横向滚动条拖动才能看完.

网上也很少有这种小软件,华军有一个也不过是通过在<pre></pre>间插入文本的方法,这种方法转成的htm可以保持txt的原始风格,且编译成CHM后可以支持全文搜索,但也是对于单行较长的,在浏览时不能自动换行.感觉很不便.

我到是用了一个笨点的方法,就是先用&nbsp;替换文本内所有的空格,然后将文本每行行首加上<br>再将整个文本放入<p></P>之间,最后加上开始和结尾的代码,将扩展名改为htm就可以了.这先将文本转成htm再编译成chm,保持了文本的原有风格,而对于较长的行也能自动换行,并且也支持全文搜索,可有一点不足,就是转换后的htm文件比原来的txt文件大了近两倍(这是由于空格的替换造成的,但这是为了保持文本原有风格的代价),这对于大量的文本来说也是不太理想的,由于我网页方面知识有限,希望能有更精通的人来说一说文本转htm的最佳方法.
最好方法简单,易于实现,并且克服上述的缺点.

[ Last edited by zzhh612 on 2007-4-6 at 11:50 AM ]

2007-4-6 11:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 2 楼』:  


楼主的想法先赞一个!

楼主可以搜索一下论坛,以前有过txt2html的相关讨论。

另外,可以把自己写的bat代码发出来,让大家来帮你逐步完善。


2007-4-6 12:23
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
本是
银牌会员





积分 2201
发帖 789
注册 2005-1-27
状态 离线
『第 3 楼』:  

每2个西文空格可替换成1个全角汉字空格,这样体积上一致。整个文件体积会因此比“空格转&nbsp”小一些。



my major is english----my love is dos----my teacher is the buddha----my friends--how about U
2007-4-6 21:16
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
estar
中级用户





积分 346
发帖 103
注册 2004-4-6
状态 离线
『第 4 楼』:  

txt2html.vbs
'By est, electronicstar@126.com
'Copyright CN-DOS
set oSh=CreateObject("WScript.Shell")
If lcase(right(WScript.FullName,11))="wscript.exe" Then
        oSh.Run "cmd /ccscript //NoLogo //e:vbscript " & WScript.ScriptFullName
        WScript.Quit
End If

Set objDOM = CreateObject("htmlfile")
objDOM.write "<html><body><div id='targetDiv'></div></body></html>"
Set targetDiv=objDOM.getElementById("targetDiv")
targetDiv.innerText=WScript.StdIn.ReadAll
WScript.Echo objDOM.documentElement.outerHTML
用法

cscript //nologo < D:\test.txt > D:\test.htm

2007-4-6 22:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zzhh612
中级用户




积分 278
发帖 103
注册 2006-10-21
状态 离线
『第 5 楼』:  

楼上的方法与我的方法相似,只是用的是DIV标签代替了P,这种方法的缺点是对于文本格式中有较多的空格时,转换出来的文档会比原文档大很多,试了一下,40k的文本转换成htm后变成了57k.虽然只有17k 之差,可对于大量的文件就可观了.而用PRE标签基本可以保持大小不变化不大,只是不能自动换行,能两者兼顾吗,当然不是苛求,仅是探讨而已.

2007-4-7 09:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
estar
中级用户





积分 346
发帖 103
注册 2004-4-6
状态 离线
『第 6 楼』:  



  Quote:
可对于大量的文件就可观了

那么你zip一下嘛

今天懒得写pre版的了,明天再来

2007-4-7 13:20
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: