Pdf2htmlEX的作者是国人,项目地址https://github.com/coolwanglu/pdf2htmlEX,pdf2htmlEX利用现代Web技术以HTML格式呈现PDF文件。具有大量公式和图形的学术论文?布局复杂的杂志?没问题!pdf2htmlEX还是一种在线发布工具,可以灵活地适应许多不同的用例。

安装和配置

安装依赖

sudo yum install  cmake gcc gnu-getopt java-1.8.0-openjdk libpng-devel fontforge-devel cairo-devel poppler-devel libspiro-devel freetype-devel  poppler-data libjpeg-turbo-devel git make gcc-c++

更新fontforge版本并安装,避免安装pdf2htmlEX时报fontforge版本问题

git clone https://github.com/coolwanglu/fontforge.git fontforge
cd fontforge
./autogen.sh
./configure
make
sudo make install

下载 pdf2htmlEX 软件包

git clone https://github.com/coolwanglu/pdf2htmlEX.git

设置环境变量 (为了长久有效,将PKG_CONFIG_PATH、LD_LIBRARY_PATH写入 /etc/profile 文件里)

vi /etc/profile
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
source /etc/profile 或者 . /etc/profile

注:直接使用命令 《export PATH=$PATH:路径》 可以把这个路径加入环境变量,但是退出shell后这个命令行就失效了。要想永久生效,需要把这行添加到环境变量文件里。有两个文件可选:“/etc/profile”和用户主目录下的“.bash_profile”,“/etc/profile”对系统里所有用户都有效,用户主目录下的“.bash_profile”只对这个用户有效。

编译安装

cd pdf2htmlEX
cmake . && make && sudo make install

验证安装 当前目录下多一个test_pdf2html.html文件则成功

[root@test www_gaosumei_com]# pdf2htmlEX --zoom 1.3 test_pdf2html.pdf
Preprocessing: 19/19
Working: 19/19

可能遇到的问题

一、安装pdfpdf2html问题

1、package ‘libfontforge>=2.0.0’ not found, fontforge版本太低

首先去下载作者指定的fotforge-devel版本,再根据INSTALL-git.md中的说明安装

./autogen.sh;
./configure;
make;
sudo make install;

2、fontforge更新好继续安装pdf2html仍报版本问题

Trying to locate cairo-svg…
— checking for module ‘libfontforge>=2.0.0’
— package ‘libfontforge>=2.0.0’ not found
CMake Error at /usr/share/cmake/Modules/FindPkgConfig.cmake:279 (message):

解决方法:设置环境变量

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
source /etc/profile

3、[ 97%] Generating share/base.min.css, share/fancy.min.css
make[2]: execvp: share/build_css.sh: Permission denied
make[2]: execvp: share/build_js.sh: Permission denied

原因:下载好直接复制到服务器的

解决方法:更改权限

chmod -R 777 share/build_css.sh 
chmod -R 777 share/build_js.sh

4、从 https://github.com/pdf2htmlEX/pdf2htmlEX 下载pdf2html安装包,以为它比 https://github.com/coolwanglu/pdf2htmlEX 新且有人维护,但安装时报一系列问题,最终还是使用了后者。

5、缺少 poppler ,需安装

wget http://poppler.freedesktop.org/poppler-0.35.0.tar.xz
tar -xf poppler-0.35.0.tar.xz
cd poppler-0.35.0
./configure --enable-xpdf-headers --enable-libopenjpeg
make && make install

6、pdf2htmlEX -v 报问题 pdf2htmlEX: error while loading shared libraries: libfontforge.so.2: cannot open shared object file: No such file or directory

原因及解决方法一:刚安装好时运行pdf2htmlEX -v成功,之后运行又报错,原因是之前设置的PKG_CONFIG_PATH、LD_LIBRARY_PATH是临时变量,退出shell后设置就生效了。解决方法: 要长期有效需要将环境变量配置写在 /etc/profile 里 。

原因及解决方法二:./tests: error while loading shared libraries: xxx.so.0:cannot open shared object file: No such file or directory
出现这类错误表示,系统不知道xxx.so放在哪个目录下,这时候就要在/etc/ld.so.conf中加入xxx.so所在的目录。
一般而言,有很多的so会存放在/usr/local/lib这个目录底下,去这个目录底下找,果然发现自己所需要的.so文件。
所以,在/etc/ld.so.conf中加入/usr/local/lib这一行,保存之后,再运行:/sbin/ldconfig –v更新一下配置即可。

二、安装fontforge问题

1、-bash: ./autogen.sh: Permission denied

原因:权限引起的,文件是在window下载后再传到linux环境的

解决方法:修改权限或使用 sh ./autogen.sh

2、Preparing build … ERROR: libtoolize failed

原因:未安装libtool-ltdl-devel

解决方法:yum install libtool-ltdl-devel

3、No package ‘pango’ found No package ‘pangoxft’ found

解决方法:yum install pango-devel

4、执行./configure时执行不下去,报错: .libs/libgunicode_la-ucharmap.o:/usr/local/fontforge/Unicode/ucharmap.c:629:
more undefined references to `libiconv’ follow

解决方法:需要安装libiconv,并在编译时指定libiconv的位置

wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
tar -zxvf libiconv-1.13.1.tar.gz
cd libiconv-1.13.1
./configure --prefix=/usr/local/libiconv
make
make install
在编译出错的地方重新编译,指定 iconv的位置:
./configure --with-iconv=/usr/local/libiconv

三、pdf2htmlEX –help 中文解释

help:
用法: pdf2htmlEX [options] <input.pdf> [<output.html>]
-f,--first-page <int>         需要转换的起始页 (默认: 1)
-l,--last-page <int>          需要转换的最后一页 (默认: 2147483647)
--zoom <fp>                   缩放比例
--fit-width <fp>              适合宽度 <fp> 像素
--fit-height <fp>             适合高度 <fp> 像素
--use-cropbox <int>           使用剪切框 (default: 1)
--hdpi <fp>                   图像水平分辨率 (default: 144)
--vdpi <fp>                   图像垂直分辨率 (default: 144)
--embed <string>              指定哪些元素应该被嵌入到输出
--embed-css <int>             将CSS文件嵌入到输出中 (default: 1)
--embed-font <int>            将字体文件嵌入到输出中 (default: 1)
--embed-image <int>           将图片文件嵌入到输出中 (default: 1)
--embed-javascript <int>      将javascript文件嵌入到输出中 (default: 1)
--embed-outline <int>         将链接嵌入到输出中 (default: 1)
--split-pages <int>           将页面分割为单独的文件 (default: 0)
--dest-dir <string>           指定目标目录 (default: ".")
--css-filename <string>       生成的css文件的文件名 (default: "")
--page-filename <string>      分割的网页名称  (default:"")
--outline-filename <string>   生成的链接文件名称 (default:"")
--process-nontext <int>       渲染图行,文字除外 (default: 1)
--process-outline <int>       在html中显示链接 (default: 1)
--printing <int>              支持打印 (default: 1)
--fallback <int>              在备用模式下输出 (default: 0)
--embed-external-font <int>   嵌入局部匹配的外部字体 (default: 1)
--font-format <string>        嵌入的字体文件后缀 (ttf,otf,woff,svg) (default: "woff")
--decompose-ligature <int>    分解连字-> fi (default:0)
--auto-hint <int>             使用fontforge的autohint上的字体时不提示 (default: 0)
--external-hint-tool <string> 字体外部提示工具 (overrides --auto-hint) (default: "")
--stretch-narrow-glyph <int>  伸展狭窄的字形,而不是填充 (default: 0)
--squeeze-wide-glyph <int>    收缩较宽的字形,而不是截断 (default: 1)
--override-fstype <int>       clear the fstype bits in TTF/OTF fonts (default:0)
--process-type3 <int>         convert Type 3 fonts for web (experimental) (default: 0)
--heps <fp>                   合并文本的水平临界值,单位:像素(default: 1)
--veps <fp>                   vertical threshold for merging text, in pixels (default: 1)
--space-threshold <fp>        断字临界值 (临界值 * em) (default:0.125)
--font-size-multiplier <fp>   一个大于1的值增加渲染精度 (default: 4)
--space-as-offset <int>       把空格字符作为偏移量 (default: 0)
--tounicode <int>             如何处理ToUnicode的CMap (0=auto, 1=force,-1=ignore) (default: 0)
--optimize-text <int>         尽量减少用于文本的HTML元素的数目 (default: 0)
--bg-format <string>          指定背景图像格式 (default: "png")
-o,--owner-password <string>  所有者密码 (为了加密文件)
-u,--user-password <string>   用户密码 (为了加密文件)
--no-drm <int>                覆盖文档的 DRM 设置 (default: 0)
--clean-tmp <int>             转换后删除临时文件 (default: 1)
--data-dir <string>           指定的数据目录 (default: ".\share\pdf2htmlEX")
--debug <int>                 打印调试信息 (default: 0)
-v,--version                  打印版权和版本信息
-h,--help                     打印使用帮助信息

四、常用命令

1、转码操作

  • pdf2htmlEX pdf/test.pdf –debug=1 #开启debug模式,用于监控转码过程
  • pdf2htmlEX -f 3 -l 5 –fit-width=1024 –bg-format=jpg pdf/test.pdf #只有第三,第四和第五页转换,该页的宽度为1024像素。生成JPEG格式背景图像
  • pdf2htmlEX –embed=cfijo –dest-dir=out pdf/test.pdf # 分离所有资源(字体,图片,CSS和JavaScript)并将存储在指定的out文件中
  • pdf2htmlEX –embed=cfijo –split-pages=1 –dest-dir=out –page-filename=test-%d.page pdf/test.pdf #分离所有资源(字体,图片,CSS和JavaScript) 并按照–split-pages分离所有页面test-%d.page,存放在指定out目录
  • pdf2htmlEX pdf/test.pdf –optimize-text =1 #分栏时每一行文字生成在一个div标签内

2、查看pdf字体

pdffonts test.pdf

#emb:字体是否内置

3、减少生成的html的字体大小

https://github.com/yu-liang-kono/pdf2htmlEXOptimize

最后修改日期:2021年11月9日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。