在 mediawiki 实现导出 中文pdf
问题描述
mediawiki 中导出pdf的插件很多,可支持中文文字的插件就不少了。本文作者根据网上资料,亲测如下方式,可实现中文文字和图片pdf导出功能。
主要参照这篇文章实现: 使用Mediawiki构建个人知识库
主要参照这篇文章实现: 使用Mediawiki构建个人知识库
这篇文章方法正确,可文章提到了要修改文件,却没有给出修改方法。后来作者通过痛苦地加打印语句调试后,才解决了问题。
这也是写这篇博客的原因,分享经验,节约时间。
下载文件
mpdf: 下载对应的版本
https://www.mediawiki.org/wiki/Extension:Mpdf
pdfexport
https://www.mediawiki.org/wiki/Extension:Pdf_Export
https://www.mediawiki.org/wiki/Extension:Mpdf
pdfexport
https://www.mediawiki.org/wiki/Extension:Pdf_Export
配置
将 pdfexport 及 mpdf 解压到 mediawiki/extension 目录下
在 mediawiki/LocalSetting.php 中新增如下配置:
1. mediawiki/Mpdf/mpdf/config_font.php:
1) windosw 的字体配置路径
define("_MPDF_SYSTEM_TTFONTS", 'C:/Windows/Fonts/');
2) 查找如下代码段,取消注释。
如果想使用“微软雅黑”字体,将 "Sun-ExtA.ttf" 改成“msyh.ttf”, "Sun-ExtB.ttf" 改成“msyhbd.ttf”即可
2. mediawiki/Mpdf/mpdf/config_cp.php:
在 mediawiki/LocalSetting.php 中新增如下配置:
require_once("$IP/extensions/PdfExport/PdfExport.php");
#使用Mpdf作为PdfExport的后端,但必须配置支持ckj字体
$wgPdfExportMPdf = $IP . '/extensions/Mpdf/mpdf/mpdf.php';
文件修改
1. mediawiki/Mpdf/mpdf/config_font.php:
1) windosw 的字体配置路径
define("_MPDF_SYSTEM_TTFONTS", 'C:/Windows/Fonts/');
2) 查找如下代码段,取消注释。
"sun-exta" => array(
'R' => "Sun-ExtA.ttf",
'sip-ext' => 'sun-extb',
),
"sun-extb" => array(
'R' => "Sun-ExtB.ttf",
),
如果想使用“微软雅黑”字体,将 "Sun-ExtA.ttf" 改成“msyh.ttf”, "Sun-ExtB.ttf" 改成“msyhbd.ttf”即可
"sun-exta" => array(
'R' => "msyh.ttf",
'sip-ext' => 'sun-extb',
),
"sun-extb" => array(
'R' => "msyhbd.ttf",
),
2. mediawiki/Mpdf/mpdf/config_cp.php:
修改如下代码段
3. mediawiki/Mpdf/mpdf/config.php
修改成
$this->useAdobeCJK = true;
4. mediawiki/PdfExport/converters/MPdfConverter.php
查找“new mPDF", 修改成如下格式
CASE "zh":
$unifonts = "sun-exta,sun-extb";
break;
3. mediawiki/Mpdf/mpdf/config.php
修改成
$this->useAdobeCJK = true;
4. mediawiki/PdfExport/converters/MPdfConverter.php
查找“new mPDF", 修改成如下格式
$mpdf = new mPDF('zh');
$mpdf->SetAutoFont(AUTOFONT_ALL);
$mpdf->WriteHTML($html);
经验总结
1. mpdf 路径设置。参考的文中的内容,就少些了 Mpdf 这个路径。可能是因为版本发生变化了吧。第二句的关键就是要定义 MPdf 这个类。如果找不到这个文件,那么将提示“找不到pdf转换程序”
2. 字体路径: windows 下,需要更改 config_fonts.php 中的默认加载路径。
3. php 语句后都需要加分号。否则会提示语句未结束。
4. 如果发现有php文件配置出错了。依然可以采用程序的调试办法:“不断缩小错误范围的方式”,中间可加入各种打印语句 echo "123" 这样的。
解决这个问题的过程很辛苦,中间几乎放弃,可最终结果还是很满意的。越来越明白,不放弃,按照思路不断尝试,总是可以解决的。更何况这还是前人就解决过的问题呢。
2. 字体路径: windows 下,需要更改 config_fonts.php 中的默认加载路径。
3. php 语句后都需要加分号。否则会提示语句未结束。
4. 如果发现有php文件配置出错了。依然可以采用程序的调试办法:“不断缩小错误范围的方式”,中间可加入各种打印语句 echo "123" 这样的。
解决这个问题的过程很辛苦,中间几乎放弃,可最终结果还是很满意的。越来越明白,不放弃,按照思路不断尝试,总是可以解决的。更何况这还是前人就解决过的问题呢。
参考资料
MediaWiki上传图片
http://www.zzbaike.com/wiki/MediaWiki%E4%B8%8A%E4%BC%A0%E5%9B%BE%E7%89%87
MediaWiki基本设置 包含图片等的设置
https://www.cnblogs.com/ycyoes/p/5482805.html
安装教程
[Debian]LNMP 环境下安装和配置 MediaWiki 教程(日期:20181009)
https://24dian30.com/manage/program/2371.html