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
pdfium舍弃v8依赖的更多相关文章
- pdfium去掉v8支持
GYP_DEFINES='pdf_enable_v8=0 pdf_enable_xfa=0' build/gyp_pdfium 未测试 ???????????
- linux中安装mysql数据库
遇到ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' ...
- centos7配置mysql
一:mysql安装方法一:yum安装 下载并安装MySQL官方的 Yum Repository https://dev.mysql.com/ cd ~ wget -i -c https://dev.m ...
- 原生JS的使用,包括jquery和原生JS获取节点、jquery和原生JS修改属性的比较
一.前言 相比于JS这条直达终点.满是荆棘的小路,jquery无疑是康庄大道了,足够的简洁.易用给了它辉煌的地位.然而,毕竟是绕着道的插件,当小路走着走着变成大路的时候,曾经的大路也就失去了他自身的优 ...
- CentOS7安装MySQL8.0小计
之前讲配置文件和权限的时候有很多MySQL8的知识,有同志说安装不太一样,希望发个文,我这边简单演示一下 1.环境安装 下载MySQL提供的CentOS7的yum源 官方文档:<https:// ...
- CentOS7系统yum方式安装MySQL5.7
参考:https://www.cnblogs.com/bigbrotherer/p/7241845.html#top 1.在CentOS中默认安装有MariaDB,这个是MySQL的分支,但为了需要, ...
- 阿里云MySQL安装到centos,并链接。
Last login: Wed Jan 22 11:21:17 on ttys001 wulaguixiaomianyangdeMacBook-Pro:~ xingwen$ ssh root@47.9 ...
- v8/src/compilation-statistics.cc pdfium编译
v8/src/compilation-statistics.cc:18:3: 警告:‘auto’ changes meaning in C++11; please remove it [-Wc++0x ...
- Chrome V8引擎系列随笔 (1):Math.Random()函数概览
先让大家来看一幅图,这幅图是V8引擎4.7版本和4.9版本Math.Random()函数的值的分布图,我可以这么理解 .从下图中,也许你会认为这是个二维码?其实这幅图告诉我们一个道理,第二张图的点的分 ...
随机推荐
- Pwn-pwn-100
题目地址http://www.whalectf.xin/files/2779dd8a2562a1d5653c5c6af9791711/binary_100 32位 ,没有防护 上IDA 很简单的栈溢出 ...
- oracle 周岁年龄计算
以下三种方法均可实现周岁年龄的计算: --算法一: SELECT TRUNC(months_between(sysdate, csrq)/12) AS "Age" FROM wrx ...
- day80_10_29git冲突解决与短信服务redis
一.开发中的操作. 在项目开发中,在工作区进行开发,开发结束后提交到本地版本库. 再拉取远程仓库,具体如下: """ 1.开发前,拉一次远程仓库 2.工作区进行开发 3. ...
- O2O 线下业务 和 线上业务,在特征工程上的差异
人工智能在外卖送达时预估上的应用 这篇讲清楚了 O2O 线下业务 和 线上业务,在特征工程上的差异:
- 牛客OI周赛13-提高组-0还是1-(dp+位运算)
https://ac.nowcoder.com/acm/contest/2970/A 给出长度为n的一连串位运算符号,用n+1个0或1使运算插入最后得到1,求01序列有多少种可能. dp[i][j]表 ...
- Linux学习笔记-第14天 老朋友相见
熟悉的Apache,这次换了种方式和你见面.希望我能更懂你.
- 提高python运行效率-numba
Numba是Python的即时编译器,在使用NumPy数组和函数以及循环的代码上效果最佳.使用Numba的最常见方法是通过其装饰器集合,这些装饰器可应用于您的函数以指示Numba对其进行编译.调用Nu ...
- 关于 Noip的考纲
关于 \(\text{Noip}\) 的考纲 先放一张图 : 此图包含了 \(\text{Noip}\) 自开始到结束 的所有真题的考察知识点 算法分类标准主要来自于 \(\text{Luogu}\) ...
- HttpUtility.HtmlDecode ,HttpUtility.HtmlEncode 与 Server.HtmlDecode ,Server.HtmlEncode 与 HttpServerUtility.HtmlDecode , HttpServerUtility.HtmlEncode
HtmlEncode: 将 Html 源文件中不允许出现的字符进行编码,通常是编码以下字符"<".">"."&" 等. ...
- LeetCode 142:环形链表 II Linked List Cycle II
给定一个链表,返回链表开始入环的第一个节点. 如果链表无环,则返回 null. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始). 如果 pos 是 - ...