代码转换为PDF文档

时间:2024-03-06 11:02:17

自己平时做试验敲的代码,主要就是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 }