自己平时做试验敲的代码,主要就是c++代码,同学们有时要交流。直接给别人源代码,怕是大都直接编译,然后交作业。最后还是什么都学不到。所以想把代码给与人浏览,并防止他人直接复制。
最简单的方法就是对着自己的代码进行截图,然后把图片发给别人看,其中的繁琐就不说了,不可取。
PDF文档内容可以加保护,并且方便浏览,所以立即到网上搜索相关软件。
找到了个 perl 写的开源软件 code2pdf,试了下,可以直接把cpp文件转换成pdf,但不怎么完善而且不支持语法高亮,所以弃之。
好像直接把 code 文件 转换成 pdf 没有。倒是发现了,很大把code 转成 html ,html在转成pdf,而且可以支持语法高亮。
code 转 html 首先想到的是 vim 的脚本 TOhtml ,转换后的html效果和vim编辑窗口试图一模一样,不错,不过对中文支持不好,需要把生成的html文件在转换成UTF8编码才可
vim脚本的转换的好处就是,语法高亮和你平时vim一样,看着舒坦。
最后发现一款软件highlight 也不错,支持很多类型的源代码文件,而起着色方案是第三方的,可以选择,可定制性高,对中文支持很好,生成的html文件即是 utf8 编码 ,
不过前提是代码源文件也得是utf8编码,所以用这个软件前,需把源码文件用utf8编码,这个推荐。
备注:若要完整支持中文最后先把相应源代码文件用 utf8(with bom)保存,推荐工具UltraCodingSwitch或者EncodingConverter-1.0 编码
有了html,接着把html转换成pdf即可 ,首先尝试了下htmldoc这个软件,但他有损的,把html颜色全去了,就是白底黑字,不爽。
后来发现个利器wkhtmltopdf,支持中文 语法高亮。转换后的效果和 html浏览效果一模一样,linux下windows下都可以用。不过要求html文件本身是utf8编码。
写了个简单的脚本,支持文件拖拽,把html文件拖拽到该脚本上,即可生成相应的pdf文件。
脚本如下:
"wkhtmltopdf.exe" %1 %~n1.pdf pause
用vim脚本生成的html 和 highlight 对同一源代码文件,生成两个 html ,最终生成相应pdf效果如下,记得给他人浏览前,给pdf加保护(pdf rights protector):
vim脚本生成的html效果:
highlight生成的html效果:
c++ 源代码:
1 // wtjhash.cpp : 定义应用程序的类行为。 2 // 3 4 #include "stdafx.h" 5 #include "wtjhash.h" 6 #include "wtjhashDlg.h" 7 8 #ifdef _DEBUG 9 #define new DEBUG_NEW 10 #endif 11 12 13 // CwtjhashApp 14 15 BEGIN_MESSAGE_MAP(CwtjhashApp, CWinApp) 16 ON_COMMAND(ID_HELP, &CWinApp::OnHelp) 17 END_MESSAGE_MAP() 18 19 20 // CwtjhashApp 构造 21 22 CwtjhashApp::CwtjhashApp() 23 { 24 // 支持重新启动管理器 25 m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART; 26 27 // TODO: 在此处添加构造代码, 28 // 将所有重要的初始化放置在 InitInstance 中 29 }