【0916更新】 pdf2htmlEX: 高保真PDF至HTML转换器
Tofloor
poster avatar
coolwanglu
deepin
2012-09-01 09:42
Author
[0916 更新]
新增两个demo
http://coolwanglu.github.com/pdf2htmlEX/demo/cheat.html
http://coolwanglu.github.com/pdf2htmlEX ... eneve.html

* 完全去掉了boost
* 降低了C++11的依赖,GCC最低支持至4.4.6
* 支持超链接(文内链接精确到页)
* 解决了一部分字体编码问题

先上Demo: http://coolwanglu.github.com/pdf2htmlEX/demo/demo.html
还有大家可能会关心的CJK http://coolwanglu.github.com/pdf2htmlEX/demo/chn.html

项目主页: https://github.com/coolwanglu/pdf2htmlEX

传统pdf2html有两种:
一种相当于pdf2text加一些比较弱的格式,基本跟pdf2text也差不了多少
另一种是把所有渲染成图片然后嵌到一个html,结果是文字信息都丢失(不能选择,拷贝),生成的文件还巨大。

pdf2htmlEX结合二者优点,既保留了文字,又保留了格式。
具体来说有如下特性
1.从pdf提取字体
2.保证渲染准确性,针对web进行优化(包括减少文件大小,文字行合并,(为HTML文字选择)字体重编码等等)
3.其他内容用图片显示
4.单文件输出,一个HTML搞定一切

下载编译安装:
依赖:
较新的poppler (0.20.3),自己编译时记得加参数--enable-xpdf-headers
fontforge,需要git版本 https://github.com/fontforge/fontforge  许多特性/bug是开发pdf2htmlEX时提交的
boost c++库,具体依赖的组件见项目主页
cmake和支持c++11的gcc

或者PPA https://launchpad.net/~coolwanglu/+archive/pdf2htmlex

欢迎各种意见,建议,fork,bug report
Reply Favorite View the author
All Replies
deepin
deepin
2012-09-01 17:05
#1
是你的原创作品吗,如果是,要赞一个!
Reply View the author
a14331990
deepin
2012-09-01 18:59
#2
我试了下 效果很不错
有警告
Warning: fontforge failed.
Warning: cannot read font info for f1
另外你的ppa里面的fontforge包似乎是空的
fontforge_0.0.20120828+git1-1ubuntu3_amd64.deb (13.4 KiB)
一定要最新的fontforge么? fontforge-20120731b可以吗?
谢谢。

后来我自己编译了一份git版的fontforge就没有警告了
仿照这里写的configure参数
https://launchpadlibrarian.net/11386101 ... ING.txt.gz
./configure --prefix=/home/leo/fontforge --with-regular-link --enable-devicetables --enable-type3 --disable-freetype --without-x --disable-pyextension

用firefox查看生成网页 字体也正常了
用火狐的show font in selection查看所有字体都是UntitledTTF  但有的pdf生成的网页却可以用show font in selection正确显示字体名字
请问--zoom这个参数怎么算的 我每回要设成2.25才能填满窗口 a4的pdf 1366x768的屏幕 可以考虑把2.25设成默认或提供配置文件吗
Reply View the author
coolwanglu
deepin
2012-09-01 22:17
#3
是你的原创作品吗,如果是,要赞一个!
是原创的,还在不断开发中。 ;)
Reply View the author
coolwanglu
deepin
2012-09-01 22:22
#4
我试了下 效果很不错
有警告
Warning: fontforge failed.
Warning: cannot read font info for f1
另外你的ppa里面的fontforge包似乎是空的
fontforge_0.0.20120828+git1-1ubuntu3_amd64.deb (13.4 KiB)
一定要最新的fontforge么? fontforge-20120731b可以吗?
谢谢。

后来我自己编译了一份git版的fontforge就没有警告了
仿照这里写的configure参数
https://launchpadlibrarian.net/11386101 ... ING.txt.gz
./configure --prefix=/home/leo/fontforge --with-regular-link --enable-devicetables --enable-type3 --disable-freetype --without-x --disable-pyextension

用firefox查看生成网页 字体也正常了
用火狐的show font in selection查看所有字体都是UntitledTTF  但有的pdf生成的网页却可以用show font in selection正确显示字体名字
请问--zoom这个参数怎么算的 我每回要设成2.25才能填满窗口 a4的pdf 1366x768的屏幕 可以考虑把2.25设成默认或提供配置文件吗
感谢反馈,我回头去确认一下ppa的fontforge。给fontforge打包恶心死我了
fontforge是因为有一些功能/bug是开发pdf2htmlEX时提交的,至少要8月份的。

字体名我没有做特别处理,所以字体名应该是沿用PDF里的,不过没有确认。
而且PDF内嵌字体也不一定有有意义的字体名。

--zoom是这样的,PDF默认DPI是72,zoom的意思就是说本机DPI是72*zoom。默认参数是1主要是为了调试方便,但是特别按照a4和1366设默认值感觉也不太合理。比如有的幻灯片海报什么的。
回头我考虑加个类似~/pdf2htmlEX.conf之类的吧 ;)
Reply View the author
a14331990
deepin
2012-09-01 22:50
#5
[quote]我试了下 效果很不错
有警告
Warning: fontforge failed.
Warning: cannot read font info for f1
另外你的ppa里面的fontforge包似乎是空的
fontforge_0.0.20120828+git1-1ubuntu3_amd64.deb (13.4 KiB)
一定要最新的fontforge么? fontforge-20120731b可以吗?
谢谢。

后来我自己编译了一份git版的fontforge就没有警告了
仿照这里写的configure参数
https://launchpadlibrarian.net/11386101 ... ING.txt.gz
./configure --prefix=/home/leo/fontforge --with-regular-link --enable-devicetables --enable-type3 --disable-freetype --without-x --disable-pyextension

用firefox查看生成网页 字体也正常了
用火狐的show font in selection查看所有字体都是UntitledTTF  但有的pdf生成的网页却可以用show font in selection正确显示字体名字
请问--zoom这个参数怎么算的 我每回要设成2.25才能填满窗口 a4的pdf 1366x768的屏幕 可以考虑把2.25设成默认或提供配置文件吗
感谢反馈,我回头去确认一下ppa的fontforge。给fontforge打包恶心死我了
fontforge是因为有一些功能/bug是开发pdf2htmlEX时提交的,至少要8月份的。

字体名我没有做特别处理,所以字体名应该是沿用PDF里的,不过没有确认。
而且PDF内嵌字体也不一定有有意义的字体名。

--zoom是这样的,PDF默认DPI是72,zoom的意思就是说本机DPI是72*zoom。默认参数是1主要是为了调试方便,但是特别按照a4和1366设默认值感觉也不太合理。比如有的幻灯片海报什么的。
回头我考虑加个类似~/pdf2htmlEX.conf之类的吧 ;)[/quote]

关于字体名称应该是生成pdf的软件有问题
只有用永中Office生成的pdf才是UntitledTTF
其余的pdf试了很多都是正常的

另外fontforge和poppler的版本都太高 用来替换系统包可能破坏其他软件的依赖
应该只需要编译打包
libpoppler27和fontforge-nox
全部放进特定文件夹比如/opt/pdf2htmlex/
再写启动脚本/usr/bin/pdf2htmlex
Reply View the author
coolwanglu
deepin
2012-09-02 03:07
#6
[quote][quote]我试了下 效果很不错
有警告
Warning: fontforge failed.
Warning: cannot read font info for f1
另外你的ppa里面的fontforge包似乎是空的
fontforge_0.0.20120828+git1-1ubuntu3_amd64.deb (13.4 KiB)
一定要最新的fontforge么? fontforge-20120731b可以吗?
谢谢。

后来我自己编译了一份git版的fontforge就没有警告了
仿照这里写的configure参数
https://launchpadlibrarian.net/11386101 ... ING.txt.gz
./configure --prefix=/home/leo/fontforge --with-regular-link --enable-devicetables --enable-type3 --disable-freetype --without-x --disable-pyextension

用firefox查看生成网页 字体也正常了
用火狐的show font in selection查看所有字体都是UntitledTTF  但有的pdf生成的网页却可以用show font in selection正确显示字体名字
请问--zoom这个参数怎么算的 我每回要设成2.25才能填满窗口 a4的pdf 1366x768的屏幕 可以考虑把2.25设成默认或提供配置文件吗
感谢反馈,我回头去确认一下ppa的fontforge。给fontforge打包恶心死我了
fontforge是因为有一些功能/bug是开发pdf2htmlEX时提交的,至少要8月份的。

字体名我没有做特别处理,所以字体名应该是沿用PDF里的,不过没有确认。
而且PDF内嵌字体也不一定有有意义的字体名。

--zoom是这样的,PDF默认DPI是72,zoom的意思就是说本机DPI是72*zoom。默认参数是1主要是为了调试方便,但是特别按照a4和1366设默认值感觉也不太合理。比如有的幻灯片海报什么的。
回头我考虑加个类似~/pdf2htmlEX.conf之类的吧 ;)[/quote]

关于字体名称应该是生成pdf的软件有问题
只有用永中Office生成的pdf才是UntitledTTF
其余的pdf试了很多都是正常的

另外fontforge和poppler的版本都太高 用来替换系统包可能破坏其他软件的依赖
应该只需要编译打包
libpoppler27和fontforge-nox
全部放进特定文件夹比如/opt/pdf2htmlex/
再写启动脚本/usr/bin/pdf2htmlex[/quote]

有道理
不过目前我还是先把fontforge折腾好,打包总搞不定。
另外nox好象不行,fontforge-nox 是不包括fontforge的
Reply View the author
cxbii
deepin
2012-09-02 03:38
#7
稳定后,可否deb打包呢?
Reply View the author
coolwanglu
deepin
2012-09-02 08:46
#8
稳定后,可否deb打包呢?
现在已经有PPA了,见1楼
Reply View the author
coolwanglu
deepin
2012-09-03 09:47
#9
我试了下 效果很不错
有警告
Warning: fontforge failed.
Warning: cannot read font info for f1
另外你的ppa里面的fontforge包似乎是空的
fontforge_0.0.20120828+git1-1ubuntu3_amd64.deb (13.4 KiB)
一定要最新的fontforge么? fontforge-20120731b可以吗?
谢谢。

后来我自己编译了一份git版的fontforge就没有警告了
仿照这里写的configure参数
https://launchpadlibrarian.net/11386101 ... ING.txt.gz
./configure --prefix=/home/leo/fontforge --with-regular-link --enable-devicetables --enable-type3 --disable-freetype --without-x --disable-pyextension

用firefox查看生成网页 字体也正常了
用火狐的show font in selection查看所有字体都是UntitledTTF  但有的pdf生成的网页却可以用show font in selection正确显示字体名字
请问--zoom这个参数怎么算的 我每回要设成2.25才能填满窗口 a4的pdf 1366x768的屏幕 可以考虑把2.25设成默认或提供配置文件吗
突然想到,其实你可以设个alias,比较方便
Reply View the author