Home >> web前端 >> web页面打印时,部分字体消失

web页面打印时,部分字体消失

web font print invisible

最近碰到一例web页面打印时,部分字体消失的情况。原因可能有几个方面,

1. KB2753842

如果你也有相似状况,而这个状况恰好发生在 2012年11月11日之后的几天,那么很有可能是 KB2753842这个windows update的更新造成的。KB2753842造成Flexi/PhotoPRINT和其他使用Type-1 字体的软件,比如 CorelDraw, QuarkExpress等等,都无法列印此类字体。

截止到本稿(2012年12月28日),针对此更新的进一步更新尚未发布。因此,如果你安装了KB2753842,可以简单的先把其卸载,然后应该能解决你目前的问题了。

如果你的系统是自动安装系统更新的,最好能把KB2753842的更新隐藏掉。否则,某日你又得重来一次了。

2. css

因为css文件造成的打印问题多出现在页面的打印排版上,而且也造成打印字体的丢失,css文件加载的类型:media,默认为 all, 如果一个页面的css指定了 media=”screen”,而css内又使用了web font,那么在打印页面,因为 css未能加载(media=screen),那么有些字体就会消失了。一个简单的解决方式,就是把media明确声明 media=”all”,而不是 media=”screen”, 或者针对 screen, print,分别使用不同的css文件。

如果碰巧你也使用jquery.printElement的话,下面的一段代码可以强制对打印区域加载当前所有的css文件。尽管这在很多情况下是不需要的。

$(‘.printable-area’).printElement({
overrideElementCSS:
$.map($(‘link[rel=stylesheet]’),
function (ir) {
return { href: ir.href, media: ‘all’ };
})
});

overrideElementCSS参数可以用来加载所有指定的css文件,如此可以达到一个近似效果(或者说是一个偷懒的效果)。


(原文链接 http://ddbiz.com/?p=1282)

留言/有话要说

Copyright © 2012 Dimensions Data Business. All rights reserved.
server process 10.500 seconds.
WP-Backgrounds Lite by InoPlugs Web Design and Juwelier Schönmann 1010 Wien