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依赖的更多相关文章

  1. pdfium去掉v8支持

    GYP_DEFINES='pdf_enable_v8=0 pdf_enable_xfa=0' build/gyp_pdfium 未测试  ???????????

  2. linux中安装mysql数据库

    遇到ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' ...

  3. centos7配置mysql

    一:mysql安装方法一:yum安装 下载并安装MySQL官方的 Yum Repository https://dev.mysql.com/ cd ~ wget -i -c https://dev.m ...

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

    一.前言 相比于JS这条直达终点.满是荆棘的小路,jquery无疑是康庄大道了,足够的简洁.易用给了它辉煌的地位.然而,毕竟是绕着道的插件,当小路走着走着变成大路的时候,曾经的大路也就失去了他自身的优 ...

  5. CentOS7安装MySQL8.0小计

    之前讲配置文件和权限的时候有很多MySQL8的知识,有同志说安装不太一样,希望发个文,我这边简单演示一下 1.环境安装 下载MySQL提供的CentOS7的yum源 官方文档:<https:// ...

  6. CentOS7系统yum方式安装MySQL5.7

    参考:https://www.cnblogs.com/bigbrotherer/p/7241845.html#top 1.在CentOS中默认安装有MariaDB,这个是MySQL的分支,但为了需要, ...

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

    Last login: Wed Jan 22 11:21:17 on ttys001 wulaguixiaomianyangdeMacBook-Pro:~ xingwen$ ssh root@47.9 ...

  8. v8/src/compilation-statistics.cc pdfium编译

    v8/src/compilation-statistics.cc:18:3: 警告:‘auto’ changes meaning in C++11; please remove it [-Wc++0x ...

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

    先让大家来看一幅图,这幅图是V8引擎4.7版本和4.9版本Math.Random()函数的值的分布图,我可以这么理解 .从下图中,也许你会认为这是个二维码?其实这幅图告诉我们一个道理,第二张图的点的分 ...

随机推荐

  1. 1、zabbix监控基础概念

    目录 为什么要使用监控? 监控怎么用? 去到一家新公司,应该如何搭建监控系统? 我叫张贺,贪财好色.一名合格的LINUX运维工程师,专注于LINUX的学习和研究,曾负责某中型企业的网站运维工作,爱好佛 ...

  2. lua 2 变量

    变量在使用前,必须在代码中进行声明,即创建该变量. 编译程序执行代码之前编译器需要知道如何给语句变量开辟存储区,用于存储变量的值. Lua 变量有三种类型:全局变量.局部变量.表中的域. Lua 中的 ...

  3. ubuntu18.40 rtx2080ti安装显卡驱动/cuda/cudnn/tensorflow-gpu

    电脑环境 ubuntu 18.40 gpu  rtx2080ti 一.安装显卡驱动 刚开始尝试用手动安装方式安装驱动 下载了驱动程序但是因为没有gcc所以放弃这种方法 后尝试最简单的方式 在 菜单-- ...

  4. git 推送本地项目到远程库

    git 推送本地项目到远程库 1@DESKTOP-3H9092J MINGW64 /e/mozq/00store/01/SmartCard_MS $ git init Initialized empt ...

  5. 研究是一门艺术 (韦恩·C·布斯, 格雷戈里·G·卡洛姆, 约瑟夫·M·威廉姆斯 著)

    第一部分 研究,研究者与读者 前言: 开始一个研究计划 (已看) 第一章 以书面形式来思考 (已看) 第二章 与读者建立联系 第二部分 提问题,找答案 前言: 规划你的研究计划 第三章 从题目到问题 ...

  6. 基于web公交查询系统----管理员公交站点管理页面实现

    主要用到内容:vue,coreui bootstrap框架,Ajax,springmvc搭建的接口,css之类的都是顺手拈来的简单的界面设计 网页代码: <!DOCTYPE html> & ...

  7. HTML连载31-制作一个百度首页

    一. 我们制作一个百度首页作为练习,可直接复制该代码保存后缀名为.html来查看 <!DOCTYPE html> <html lang="en"> < ...

  8. spring boot 不占用端口方式启动

    随着微服务架构的流行,想要启动一个微服务架构项目就要开启好多端口,有时候一台机器上部署的项目多的时候,端口资源就比较紧张了,其实有的微服务组件仅仅只是提供RPC服务,可以不用占用web启动的端口,此时 ...

  9. 循环队列c++代码

    #include <ros/ros.h> #include <string> #include <stdlib.h> #include <iostream&g ...

  10. 一段完整的创建表格的SQL代码

    一段完整的创建表格的SQL代码 使用SQL语句创建一张表,不仅可以可以快速熟悉SQL语句,还可以从这看出一个人对该技能点的熟悉程度. 这里先说明几点: PRIMARY KEY:主键,一张表中只允许有一 ...