apache - mpdf 错误地显示 ascii<115

标签 apache character-encoding fonts pdf-generation mpdf

直到最近,mpdf 对我来说工作正常。现在好像不能显示ascii值小于115(字母s)的符号了。我的系统管理员无法记忆起对系统的任何重大更改。我没有对我的代码进行任何更改。这是重现问题的测试脚本:

<?php //PHP 5.4.15

include('/opt/local/apache2/htdocs/mpdf/mpdf.php'); // mpdf 5.6 (and previously 5.5), apache 2.4

$good='stuvwxyz{}|'; //ascii >=115
$bad='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr';

$mpdf=new mPDF();
$mpdf->WriteHTML("$bad <br> $good"); //note that <br> renders just fine
$mpdf->Output();
exit;
?>

产生这个输出:

incorrect characters

我认为这一定是字体问题。但我使用的是默认的嵌入式 mpdf 字体 (DejaVu)。知道为什么会发生这种情况吗?

没有错误:

  • mpdf 不会抛出任何错误,即使在调试时也是如此
  • apache 错误日志没有任何内容

预计到达时间 1:

命令行 运行上述脚本会生成一个有效且可读的 pdf 文件。使用的 php 和 mpdf 版本相同。 该问题仅在从浏览器运行时出现(已测试 FF、IE、Chrome)。无法使用 Acrobat Reader、Ghostwriter 和 Evince 读取问题文件。

预计到达时间 2:

我们已将问题定位到我们的生产 Apache 2.4 服务器。我们的开发服务器(最小安装)毫无困难地输出测试脚本。

这些是在我们的生产服务器上运行的模块:

LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule access_compat_module modules/mod_access_compat.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
LoadModule reqtimeout_module modules/mod_reqtimeout.so
LoadModule filter_module modules/mod_filter.so
LoadModule mime_module modules/mod_mime.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule env_module modules/mod_env.so
LoadModule headers_module modules/mod_headers.so
LoadModule unique_id_module modules/mod_unique_id.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule version_module modules/mod_version.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_express_module modules/mod_proxy_express.so
LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
LoadModule ssl_module modules/mod_ssl.so
LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so
LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so
LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so
LoadModule unixd_module modules/mod_unixd.so
LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule dir_module modules/mod_dir.so
LoadModule userdir_module modules/mod_userdir.so
LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule php5_module        modules/libphp5.so
LoadModule security2_module modules/mod_security2.so

ETA对输出文件的一些分析:

% python pdfid.py mpdf.pdf

PDFiD 0.0.12 mpdf.pdf
PDF Header: %PDF-1.4
obj                   13
endobj                13
stream                 4
endstream              4
xref                   1
trailer                1
startxref              1
/Page                  1
/Encrypt               0
/ObjStm                0
/JS                    0
/JavaScript            0
/AA                    0
/OpenAction            1
/AcroForm              0
/JBIG2Decode           0
/RichMedia             0
/Launch                0
/EmbeddedFile          0
/Colors > 2^24         0


% python pdf-parser.py mpdf.pdf

PDF Comment '%PDF-1.4\n'

PDF Comment '%\xe2\xe3\xcf\xd3\n'

obj 3 0
Type: /Page
Referencing: 1 0 R, 2 0 R, 4 0 R

<<
/Type /Page
/Parent 1 0 R
/MediaBox [0 0 595.280 841.890]
/TrimBox [0.000 0.000 595.280 841.890]
/Resources 2 0 R
/Group
<<
/Type /Group
/S /Transparency
/CS /DeviceRGB
>>
/Contents 4 0 R
>>


obj 4 0
Type:
Referencing:
Contains stream

<<
/Filter /FlateDecode
/Length 132
>>


obj 1 0
Type: /Pages
Referencing: 3 0 R

<<
/Type /Pages
/Kids [3 0 R ]
/Count 1
/MediaBox [0 0 595.280 841.890]
>>


obj 5 0
Type: /Font
Referencing: 6 0 R, 7 0 R

<<
/Type /Font
/Subtype /Type0
/BaseFont /MPDFAA+DejaVuSerifCondensed
/Encoding /Identity-H
/DescendantFonts [6 0 R]
/ToUnicode 7 0 R
>>


obj 6 0
Type: /Font
Referencing: 8 0 R, 9 0 R, 10 0 R

<<
/Type /Font
/Subtype /CIDFontType2
/BaseFont /MPDFAA+DejaVuSerifCondensed
/CIDSystemInfo 8 0 R
/FontDescriptor 9 0 R
/DW 540
/W [ 32 [ 286 361 414 754 572 855 801 247 351 351 450 754 286 304 286 303 ]
48 57 572 58 59 303 60 62 754 63 [ 482 900 650 661 688 721 657 624 719 785 355 360 672 598 921 787 738 605 738 677 616 600 758 650 925 641 594 625 351 303 351 754 450 450 536 576 504 576 532 333 576 580 288 279 545 288 853 580 542 576 576 430 461 361 580 508 770 507 508 474 572 303 572 754 ]
]
/CIDToGIDMap 10 0 R
>>


obj 7 0
Type:
Referencing:
Contains stream

<<
/Length 345
>>


obj 8 0
Type:
Referencing:

<<
/Registry (Adobe)
/Ordering (UCS)
/Supplement 0
>>


obj 9 0
Type: /FontDescriptor
Referencing: 11 0 R

<<
/Type /FontDescriptor
/FontName /MPDFAA+DejaVuSerifCondensed
/Ascent 928
/Descent -236
/CapHeight 928
/Flags 4
/FontBBox [-693 -347 1512 1242]
/ItalicAngle 0
/StemV 87
/MissingWidth 540
/Style
<<
/Panose <0 0 2 6 6 6 5 6 5 2 2 4>
>>
/FontFile2 11 0 R
>>


obj 10 0
Type:
Referencing:
Contains stream

<<
/Length 302
/Filter /FlateDecode
>>


obj 11 0
Type:
Referencing:
Contains stream

<<
/Length 11270
/Filter /FlateDecode
/Length1 19752
>>


obj 2 0
Type:
Referencing: 5 0 R

<<
/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font
<<
/F1 5 0 R
>>
>>


obj 12 0
Type:
Referencing:

<<
/Producer (\ufffd\ufffd)
/CreationDate (20130610101337-03'00')
/ModDate (20130610101337-03'00')
>>


obj 13 0
Type: /Catalog
Referencing: 1 0 R, 3 0 R

<<
/Type /Catalog
/Pages 1 0 R
/OpenAction [3 0 R /XYZ null null 1]
/PageLayout /OneColumn
>>


xref

trailer
<<
/Size 14
/Root 130R
/Info 120R
/ID [<7e16ee374f9301bc714ec37fbcaf2e35><7e16ee374f9301bc714ec37fbcaf2e35>]
>>

startxref 14000

PDF Comment '%%EOF'

最佳答案

我们还没有弄清楚这个问题,但是可以通过只使用核心字体来规避。要以这种方式调用 mPDF:

$mpdf=new mPDF('c');

我希望这对受这个奇怪问题困扰的其他人有所帮助。

关于apache - mpdf 错误地显示 ascii<115,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16984550/

相关文章:

java - 使用 Tomcat 配置 Apache Web 服务器并尝试部署 war 文件

linux - Apache 目录被禁止

apache - document.location.href 中的特殊字符

mysql修改默认字符集latin1为utf8

java - 从 MQSeries 读取/写入字符字节

java - 文件编码: saved content is different than when read

css - Microsoft Edge 中未显示字体

asp.net - 有没有办法以编程方式确定字体文件是否具有特定的Unicode字形?

php - httpd.conf 文件在哪里?

java - 如何仅更改 swing 应用程序的所有字体的大小?