pdfium舍弃v8依赖

Step 3 去除v8依赖

用文本编辑器打开pdfium根目录下的pdfium.gyp文件,找到‘javascript‘及‘jsapi‘依赖(47行左右):

      ‘dependencies‘: [
        ‘safemath‘,
        ‘fdrm‘,
        ‘fpdfdoc‘,
        ‘fpdfapi‘,
        ‘fpdftext‘,
        ‘formfiller‘,
        ‘fxcodec‘,
        ‘fxcrt‘,
        ‘fxedit‘,
        ‘fxge‘,
        ‘javascript‘,
        ‘jsapi‘,
        ‘pdfwindow‘,
      ],

将其移除并删除对应的工程(734行至812行):

    {
      ‘target_name‘: ‘javascript‘,
      ‘type‘: ‘static_library‘,
        ‘include_dirs‘: [
          ‘<(DEPTH)/v8‘,
          ‘<(DEPTH)/v8/include‘,
        ],
      ‘dependencies‘: [
        ‘<(DEPTH)/v8/tools/gyp/v8.gyp:v8‘,
        ‘<(DEPTH)/v8/tools/gyp/v8.gyp:v8_libplatform‘,
      ],
      ‘export_dependent_settings‘: [
        ‘<(DEPTH)/v8/tools/gyp/v8.gyp:v8‘,
      ],
      ‘ldflags‘: [ ‘-L<(PRODUCT_DIR)‘,],
      ‘sources‘: [
        ‘fpdfsdk/include/javascript/app.h‘,
        ‘fpdfsdk/include/javascript/color.h‘,
        ‘fpdfsdk/include/javascript/console.h‘,
        ‘fpdfsdk/include/javascript/Consts.h‘,
        ‘fpdfsdk/include/javascript/Document.h‘,
        ‘fpdfsdk/include/javascript/event.h‘,
        ‘fpdfsdk/include/javascript/Field.h‘,
        ‘fpdfsdk/include/javascript/global.h‘,
        ‘fpdfsdk/include/javascript/Icon.h‘,
        ‘fpdfsdk/include/javascript/IJavaScript.h‘,
        ‘fpdfsdk/include/javascript/JavaScript.h‘,
        ‘fpdfsdk/include/javascript/JS_Console.h‘,
        ‘fpdfsdk/include/javascript/JS_Context.h‘,
        ‘fpdfsdk/include/javascript/JS_Define.h‘,
        ‘fpdfsdk/include/javascript/JS_EventHandler.h‘,
        ‘fpdfsdk/include/javascript/JS_GlobalData.h‘,
        ‘fpdfsdk/include/javascript/JS_Module.h‘,
        ‘fpdfsdk/include/javascript/JS_Object.h‘,
        ‘fpdfsdk/include/javascript/JS_Runtime.h‘,
        ‘fpdfsdk/include/javascript/JS_Value.h‘,
        ‘fpdfsdk/include/javascript/PublicMethods.h‘,
        ‘fpdfsdk/include/javascript/report.h‘,
        ‘fpdfsdk/include/javascript/resource.h‘,
        ‘fpdfsdk/include/javascript/util.h‘,
        ‘fpdfsdk/src/javascript/app.cpp‘,
        ‘fpdfsdk/src/javascript/color.cpp‘,
        ‘fpdfsdk/src/javascript/console.cpp‘,
        ‘fpdfsdk/src/javascript/Consts.cpp‘,
        ‘fpdfsdk/src/javascript/Document.cpp‘,
        ‘fpdfsdk/src/javascript/event.cpp‘,
        ‘fpdfsdk/src/javascript/Field.cpp‘,
        ‘fpdfsdk/src/javascript/global.cpp‘,
        ‘fpdfsdk/src/javascript/Icon.cpp‘,
        ‘fpdfsdk/src/javascript/JS_Context.cpp‘,
        ‘fpdfsdk/src/javascript/JS_EventHandler.cpp‘,
        ‘fpdfsdk/src/javascript/JS_GlobalData.cpp‘,
        ‘fpdfsdk/src/javascript/JS_Object.cpp‘,
        ‘fpdfsdk/src/javascript/JS_Runtime.cpp‘,
        ‘fpdfsdk/src/javascript/JS_Value.cpp‘,
        ‘fpdfsdk/src/javascript/PublicMethods.cpp‘,
        ‘fpdfsdk/src/javascript/report.cpp‘,
        ‘fpdfsdk/src/javascript/util.cpp‘,
      ],
    },
    {
      ‘target_name‘: ‘jsapi‘,
      ‘type‘: ‘static_library‘,
      ‘dependencies‘: [
        ‘<(DEPTH)/v8/tools/gyp/v8.gyp:v8‘,
      ],
      ‘export_dependent_settings‘: [
        ‘<(DEPTH)/v8/tools/gyp/v8.gyp:v8‘,
      ],
      ‘include_dirs‘: [
        ‘<(DEPTH)/v8‘,
        ‘<(DEPTH)/v8/include‘,
      ],
      ‘ldflags‘: [ ‘-L<(PRODUCT_DIR)‘,],
      ‘sources‘: [
        ‘fpdfsdk/include/jsapi/fxjs_v8.h‘,
        ‘fpdfsdk/src/jsapi/fxjs_v8.cpp‘,
      ],
    },

‘javascript‘是将pdf js规定的对象嵌入到js引擎中,使得PDF引擎使用的js引擎是标准js的超集。

‘jsapi‘则是导入v8的接口

如果是在windows平台下编译,到这里就可以直接使用gyp生成vs工程了。如果是linux平台的还需要进一步移除源码中对js的引用,均位于

fpdfsdk/src/fsdk_mgr.cpp

文件中。

  • 注释掉第11行的头文件应用
//#include "../include/javascript/IJavaScript.h"
  • 注释掉215行GetJSRuntimeFactory()函数及其引用(235-238)
CJS_RuntimeFactory* GetJSRuntimeFactory()
{
	static CJS_RuntimeFactory s_JSRuntimeFactory;
	return &s_JSRuntimeFactory;
}

	m_pJSRuntimeFactory = NULL;
	m_pJSRuntimeFactory = GetJSRuntimeFactory();
	m_pJSRuntimeFactory->AddRef();
  • 置CPDFDoc_Environment::GetJSRuntime()函数返回NULL
IFXJS_Runtime* CPDFDoc_Environment::GetJSRuntime()
{
	/*if(!IsJSInitiated())
		return NULL;
	assert(m_pJSRuntimeFactory);
	if(!m_pJSRuntime)
		m_pJSRuntime = m_pJSRuntimeFactory->NewJSRuntime(this);
	return m_pJSRuntime;*/
	return NULL;
}

OK,前置任务完成!进入编译。

https://zhuanlan.zhihu.com/p/37729756

原文地址:https://www.cnblogs.com/hshy/p/12010194.html

时间: 2024-10-14 19:26:53

pdfium舍弃v8依赖的相关文章

【MySQL】安装MySQL

// 查询 [[email protected] yum.repos.d]# yum install mysql 已加载插件:fastestmirror, langpacks Repository base is listed more than once in the configuration Repository updates is listed more than once in the configuration Repository extras is listed more th

星云链智能合约开发(二):Mac下安装星云链

Golang环境搭建 版本用最新版:1.10.2 安装 brew install go 配置环境变量 vi ~/.bash_profile 打开.bash_profile文件,按"i"键可进行编辑,添加: export GOROOT=/usr/local/go export GOPATH=/Users/apple/go-workspace export GOBIN=$GOPATH/bin 说明: /usr/local/go:是本地golang安装的路径 /Users/apple/go-

原生JS的使用,包括jquery和原生JS获取节点、jquery和原生JS修改属性的比较

一.前言 相比于JS这条直达终点.满是荆棘的小路,jquery无疑是康庄大道了,足够的简洁.易用给了它辉煌的地位.然而,毕竟是绕着道的插件,当小路走着走着变成大路的时候,曾经的大路也就失去了他自身的优势了. 原生JS虽然没有jquery那么的好用.便捷,或者说没有jquery那样让我们使用的如此顺手,甚至是无法舍弃的依赖.可是我们依然不得不扔掉手中这根陪伴我们多年的拐杖,我们不是瘸子,我们不曾腐朽,我们还可以独立前行. 二.正文 1. jquery和原生JS获取节点的比较 //这是HTML代码,

阿里云MySQL安装到centos,并链接。

Last login: Wed Jan 22 11:21:17 on ttys001 wulaguixiaomianyangdeMacBook-Pro:~ xingwen$ ssh [email protected] [email protected]'s password: Last failed login: Wed Jan 22 11:26:02 CST 2020 from 117.22.255.130 on ssh:notty There were 81 failed login att

为什么V8引擎这么快?(转载)

转自:http://www.cnblogs.com/yumianhu/p/3707427.html 转载请注明出处:http://blog.csdn.net/horkychen Google研发的V8 JavaScript引擎性能优异.我们请熟悉内部程序实现的作者依源代码来看看V8是如何加速的. 作者:Community Engine公司研发部研发工程师Hajime Morita   Google的Chrome中的V8 JavaScript引擎,由于性能良好吸引了相当的注目.它是Google特别

为什么V8引擎这么快?[转]

转载请注明出处:http://blog.csdn.net/horkychen Google研发的V8 JavaScript引擎性能优异.我们请熟悉内部程序实现的作者依源代码来看看V8是如何加速的. 作者:Community Engine公司研发部研发工程师Hajime Morita   Google的Chrome中的V8 JavaScript引擎,由于性能良好吸引了相当的注目.它是Google特别为了Chrome可以高速运行网页应用(WebApp)而开发的.Chrome利用Apple领导的Web

Chrome V8引擎系列随笔 (1):Math.Random()函数概览

先让大家来看一幅图,这幅图是V8引擎4.7版本和4.9版本Math.Random()函数的值的分布图,我可以这么理解 .从下图中,也许你会认为这是个二维码?其实这幅图告诉我们一个道理,第二张图的点的分布更加的密集,也就是说Math.Random()函数能表示的数字更多了,大家在.NET中肯定也用过GUID吧,至于GUID为什么会永不重复,大家有没有想过呢? 还是让我们先来看看官方怎么解释Math.Random()吧,它是返回了一个正数,这个正数介于0~1之间,以伪随机的方式在这个范围内波动.Ma

构件工具Maven----坐标、依赖、仓库、生命周期的简单学习

这篇文章对Maven中几个比较重要的概念坐标.依赖.仓库.生命周期做一个简单的介绍. 1.关于Maven坐标 用来区别Maven世界中任何一个构件,Maven坐标的元素包括groupId.artifactId.version.packaging.classifier,只要我们提供正确的坐标就能够访问对应的构件. <groupId>org.springframework</groupId> //当前Maven项目隶属的实际项目,其下面可能按功能划分了很多子项目,spring-core

科普 | 编译 V8 源码

2017-02-13 justjavac 象尘说 对于JavaScript程序员来说,可以瞧一瞧justjavac给大家写的科普类读物,V8引擎的分析,"也许你不懂C++",但是你可以了解一下,总是好的. 本系列得到了justjavac的授权,同意我在公众号中转载,来源于知乎专栏:https://zhuanlan.zhihu.com/v8core V8 的源码已经从 google code 迁移到了 github,而版本控制工具也从 svn 换成了 git.V8 源码地址 v8/v8.