当前位置: 首页 > 知识库问答 >
问题:

PhantomJS呈现页面字体

尉迟哲瀚
2023-03-14

我正在使用PhantomJS进行网页截图。

我看到过其他关于@font-face问题的帖子,但我页面上的字体呈现正确。我唯一的问题是,每次截图时,字体显示与前一个截图略有不同。所以尽管他们的渲染是正确的,但他们在截图上的外观是不一致的。

我已经尝试了许多修复,大多数都是基于这样的假设,即这与页面准备好之前拍摄的截图有关,但这似乎不是问题所在。例如,我已经延迟了截图,以便字体有时间加载和呈现,但这并不能解决问题。

我已经附上截图来显示区别。问题是,我需要呈现的屏幕截图是准确的上下文,我正在使用它。

注意,我也尝试过CasperJS(知道它是基于PhantomJS的,所以不希望它有任何不同)。

共有1个答案

濮阳和泰
2023-03-14

您是否厌倦了在DOM上观看与字体相关的事件?您也可以尝试每X秒拍摄一次截图,生成一个时刻-时刻的概述(注意,这将产生大量空的和重复的图像。如果这是一个问题,尝试简单地设置一个最小文件大小或检查两个文件是否有相同的大小)。

var page = require('webpage').create();

page.open("http://www.slashdot.org", function (status) {
    phantom.exit();
}); 

var i = 0;
setInterval(function() {

    i += 1;
    page.render("/tmp/screenshots/screenshot-" + i + ".png");

}, 50);
 类似资料:
  • 问题内容: 我正在寻找一个示例,该示例请求一个网页,等待JavaScript呈现(JavaScript修改DOM),然后获取页面的HTML。 这应该是一个简单的示例,并且带有明显的PhantomJS用例。我找不到合适的示例,文档似乎全部关于命令行使用。 问题答案: 根据您的评论,我猜您有2个选择 尝试找到phantomjs节点模块-https: //github.com/amir20/phanto

  • 我要求在JSF2.2页面上输入2个输入值。我们正在使用Primefaces控件。然后通过h:command按钮将这些值提交给托管bean方法。 然后,基于这些值,我想将同一JSF页面上的一个单独的输出字段设置为一个特定的值。 因此,我目前的问题是尝试连接一个托管bean,以便它将一个值返回到我的JSF页面上的字段,在本例中,字段名是mgrs。主要的问题是,我要处理的是生成返回值的第三方库,我不确定

  • 问题内容: 是否可以从字符串创建页面? 例: 我已经尝试了上面的方法,但是没有运气。 另外,我认为值得一提的是我正在使用带有phantomjs-node(https://github.com/sgentle/phantomjs- node)的nodejs 谢谢! 问题答案: 查看phantomjs API,page.open需要URL作为第一个参数,而不是HTML字符串。这就是为什么您尝试的方法不

  • 我正在尝试使用Spring Security性和AngularJS设置默认SuccessUrl,但是成功登录后,html页面将加载到网络中,但没有显示。这是我的安全配置 但是,我仍然显示登录页面,而不是hello.jsp页面。登录的Angular服务: 有人知道为什么吗?

  • 我在与反应和生命周期作斗争。我尝试实现一个非常简单的Next按钮,它显示下一个页面和下一组项。当我手动将状态偏移量更改为3时,页面将与下一项一起正确呈现。但是当我通过使用按钮使用setState时,新项不会加载。我想这和生命周期有关,但我还不明白。

  • 问题内容: 当我想获取URL页面的源时,在Windows7上使用Selenium和PhantomJS时遇到麻烦。 仅返回。我之前睡过一会儿,但没有帮助。 这是我的代码: 在具有相同版本PhantomJS的Linux上,它可以完美运行。它还适用于Windows Server 2003。 问题答案: 默认情况下,phantomjs使用SSLv3,但ssl中的错误后许多站点都迁移到tls。这就是为什么您