拿到一个没有目录的pdf,因为实在太不爽……所以想有没有办法自动化的方法可以生成目录QUQ,查了查果然acrobat有js的api可以提供,但是写完之后发现只能在acrobat上面能索引QUQ,其他的阅读器都不能用索引……只能看见目录……真真不爽!!(*  ̄︿ ̄)
先说下思路吧……挺傻的……一般当当这样卖书的地方都有书的目录和页码,这个很好找的嘛。然后copy到txt里,先用python把它变成数组(因为懒所以都是一级的目录),然后用js脚本添加数组做成目录。
python:
#usr/bin/env python
#-*- coding:utf-8 -*-
import re, sys
reload(sys)
sys.setdefaultencoding('utf8')
filename = "catagory.txt"
output = "result.txt"
file = open(filename, "r")
out = open(output, "w")
ret = "["
pat = re.compile(r'(.*?)(\d{1,4}$)')
for line in file.readlines():
tmp = re.findall(pat, line)
print tmp[0][0], tmp[0][1]
ret += "['" + tmp[0][0].strip() + "', " + tmp[0][1] + "],\n"
except:
ret += "['" + line.strip() + "'],\n"
ret += "]"
out.write(ret)
file.close()
out.close()
简直so easy有没有……我觉得我把python真的是当工具用的……
然后js代码,这个是官方的文档上直接有的:
function createBookMark(parent){
for(var i=0;i<arr.length;i++){
if(arr[i].length>1)
parent.createChild(arr[i].[0], "this.pageNum=16+"+arr[i].[1]); //这个16是pdf中的页码和书目原来页码的偏移量
else parent.createChild(arr[i].[0]);
}
createChild(name, script)。第一个是书签的名字,第二个是对这个书签做什么,然后可以把pageNum设置成目标页码。
我做的是白帽子讲web安全……大致出来结果是这样的:
但是只能在acrobat里面用QUQ,嘤嘤嘤
拿到一个没有目录的pdf,因为实在太不爽……所以想有没有办法自动化的方法可以生成目录QUQ,查了查果然acrobat有js的api可以提供,但是写完之后发现只能在acrobat上面能索引QUQ,其他的阅读器都不能用索引……只能看见目录……真真不爽!!(*  ̄︿ ̄)先说下思路吧……挺傻的……一般当当这样卖书的地方都有书的目录和页码,这个很好找的嘛。然后copy到txt里,先用python把它变成
2.7.2 知道何时读完文件:feof()
2.7.3 每次读取一行数据:fgets()、fgetss()和fgetcsv()
2.7.4 读取整个文件:readfile()、fpassthru()和file()
2.7.5 读取一个字符:fgetc()
2.7.6 读取任意长度:fread()
2.8 使用其他有用的文件函数
2.8.1 查看文件是否存在:file_exists()
2.8.2 确定文件大小:filesize()
2.8.3 删除一个文件:unlink()
2.8.4 在文件中定位:rewind()、fseek()和ftell()
2.9 文件锁定
2.10 更好的方式:数据库管理系统
2.10.1 使用普通文件的几个问题
2.10.2 RDBMS是如何解决这些问题的
2.11 进一步学习
2.12 下一章
第3章 使用数组
3.1 什么是数组
3.2 数字索引数组
3.2.1 数字索引数组的初始化
3.2.2 访问数组的内容
3.2.3 使用循环访问数组
3.3 使用不同索引的数组
3.3.1 初始化相关数组
3.3.2 访问数组元素
3.3.3 使用循环语句
3.4 数组操作符
3.5 多维数组
3.6 数组排序
3.6.1 使用sort()函数
3.6.2 使用asort()函数和ksort()函数对相关数组排序
3.6.3 反向排序
3.7 多维数组的排序
3.7.1 用户定义排序
3.7.2 反向用户排序
3.8 对数组进行重新排序
3.8.1 使用shuffle()函数
3.8.2 使用array_reverse()函数
3.9 从文件载入数组
3.10 执行其他的数组操作
3.10.1 在数组中浏览:each()、current()、reset()、end()、next()、pos()和prev()
3.10.2 对数组的每一个元素应用任何函数:array_walk()
3.10.3 统计数组元素个数:count()、sizeof()和array_count_values()
3.10.4 将数组转换成标量变量:extract()
3.11 进一步学习
3.12 下一章
第4章 字符串操作与正则表达式
4.1 创建一个示例应用程序:智能表单邮件
4.2 字符串的格式化
4.2.1 字符串的整理:chop()、ltrim()和trim()
4.2.2 格式化字符串以便显示
4.2.3 格式化字符串以便存储:addslashes()和stripslashes()
4.3 用字符串函数连接和分割字符串
4.3.1 使用函数explode()、implode()和join()
4.3.2 使用strtok()函数
4.3.3 使用substr()函数
4.4 字符串的比较
4.4.1 字符串的排序:strcmp()、strcasecmp()和strnatcmp()
4.4.2 使用strlen()函数测试字符串的长度
4.5 使用字符串函数匹配和替换子字符串
4.5.1 在字符串中查找字符串:strstr()、strchr()、strrchr()和stristr()
4.5.2 查找子字符串的位置:strpos()、strrpos()
4.5.3 替换子字符串:str_replace()、substr_replace()
4.6 正则表达式的介绍
4.6.1 基础知识
4.6.2 字符集和类
4.6.3 重复
4.6.4 子表达式
4.6.5 子表达式计数
4.6.6 定位到字符串的开始或末尾
4.6.7 分支
4.6.8 匹配特殊字符
4.6.9 特殊字符一览
4.6.10 在智能表单中应用
4.7 用正则表达式查找子字符串
4.8 使用正则表达式分割字符串
4.9 比较字符串函数和正则表达式函数
4.10 进一步学习
4.11 下一章
第5章 代码重用与函数编写
5.1 代码重用的好处
5.1.1 成本
5.1.2 可靠性
5.1.3 一致性
5.2 使用require()和include()函数
5.2.1 文件扩展名和require()语句
5.2.2 使用require()制作Web站点的模版
5.2.3 使用auto_prepend_file和auto_append_file
5.3 在PHP中使用函数
5.3.1 调用函数
5.3.2 调用未定义的函数
5.3.3 理解字母大小写和函数名称
5.4 理解为什么要定义自己的函数
5.5 了解基本的函数结构
5.5.1 函数命名
5.6 使用参数
5.7 理解作用域
5.8 参数的引用传递和值传递
5.9 使用Return关键字
5.9.1 从函数返回一个值
5.10 实现递归
5.10.1 名称空间
5.11 进一步学习
5.12 下一章
第6章 面向对象的PHP
6.1 理解面向对象的概念
6.1.1 类和对象
6.1.2 多态性
6.1.3 继承
6.2 在PHP中创建类、属性和操作
6.2.1 类的结构
6.2.2 构造函数
6.2.3 析构函数
6.3 类的实例化
6.4 使用类的属性
6.5 使用private和public关键字控制访问
6.6 类操作的调用
6.7 在PHP中实现继承
6.7.1 通过继承使用private和protected访问修饰符控制可见性
6.7.2 重载
6.7.3 使用final关键字禁止继承和重载
6.7.4 理解多重继承
6.7.5 实现接口
6.8 类的设计
6.9 编写类代码
6.10 理解PHP面向对象新的高级功能
6.10.1 使用Per-Class常量
6.10.2 实现静态方法
6.10.3 检查类的类型和类型提示
6.10.4 克隆对象
6.10.5 使用抽象类
6.10.6 使用__call()重载方法
6.10.7 使用__autoload()方法
6.10.8 实现迭代器和迭代
6.10.9 将类转换成字符串
6.10.10 使用Reflection(反射)API
6.11 下一章
第7章 错误和 异常处理
7.1 异常处理的概念
7.2 Exception类
7.3 用户自定义异常
7.4 Bob的汽车零部件商店应用程序的异常
7.5 异常和PHP的其他错误处理机制
7.6 进一步学习
7.7 下一章
第二篇 使用MySQL
第8章 设计Web数据库
8.1 关系数据库的概念
8.1.1 表格
8.1.2 列
8.1.3 行
8.1.4 值
8.1.5 键
8.1.6 模式
8.1.7 关系
8.2 如何设计Web数据库
8.2.1 考虑要建模的实际对象
8.2.2 避免保存冗余数据
8.2.3 使用原子列值
8.2.4 选择有意义的键
8.2.5 考虑需要询问数据库的问题
8.2.6 避免多个空属性的设计
8.2.7 表格类型的总结
8.3 Web数据库架构
8.4 进一步学习
8.5 下一章
第9章 创建Web数据库
9.1 使用MySQL监视程序
9.2 登录到MySQL
9.3 创建数据库和用户
9.4 设置用户与权限
9.5 MySQL权限系统的介绍
9.5.1 最少权限原则
9.5.2 创建用户:GRANT命令
9.5.3 权限的类型和级别
9.5.4 REVOKE命令
9.5.5 使用GRANT和REVOKE的例子
9.6 创建一个Web用户
9.7 使用正确的数据库
9.8 创建数据库表
9.8.1 理解其他关键字的意思
9.8.2 理解列的类型
9.8.3 用SHOW和DESCRIBE来查看数据库
9.8.4 创建索引
9.9 理解MySQL的标识符
9.10 选择列数据类型
9.10.1 数字类型
9.10.2 日期和时间类型
9.10.3 字符串类型
9.11 进一步学习
9.12 下一章
第10章 使用MySQL数据库
10.1 SQL是什么
10.2 在数据库中插入数据
10.3 从数据库中获取数据
10.3.1 获取满足特定条件的数据
10.3.2 从多个表中获取数据
10.3.3 以特定的顺序获取数据
10.3.4 分组与合计数据
10.3.5 选择要返回的行
10.3.6 使用子查询
10.4 更新数据库记录
10.5 创建后修改表
10.6 删除数据库中的记录
10.7 表的删除
10.8 删除整个数据库
10.9 进一步学习
10.10 下一章
第11章 使用PHP从Web访问MySQL数据库
11.1 Web数据库架构的工作原理
11.2 从Web查询数据库的基本步骤
11.2.1 检查与过滤用户输入数据
11.2.2 建立一个连接
11.2.3 选择使用的数据库
11.2.4 查询数据库
11.2.5 检索查询结果
11.2.6 从数据库断开连接
11.3 将新信息放入数据库
11.4 使用Prepared语句
11.5 使用PHP与数据库交互的其他接口
11.5.1 使用常规的数据库接口:PEAR MDB2
11.6 进一步学习
11.7 下一章
第12章 MySQL高级管理
12.1 深入理解权限系统
12.1.1 user表
12.1.2 db表和host表
12.1.3 tables_priv表,columns_priv表和procs_priv表
12.1.4 访问控制:MySQL如何使用Grant表
12.1.5 更新权限:修改什么时候生效
12.2 提高MySQL数据库的安全性
12.2.1 从操作系统角度来保护MySQL
12.2.2 密码
12.2.3 用户权限
12.2.4 Web问题
12.3 获取更多关于数据库的信息
12.3.1 使用SHOW获取信息
12.3.2 使用DESCRIBE获取关于列的信息
12.3.3 用EXPLAIN理解查询操作的工作过程
12.4 数据库的优化
12.4.1 设计优化
12.4.2 权限
12.4.3 表的优化
12.4.4 使用索引
12.4.5 使用默认值
12.4.6 其他技巧
12.5 备份MySQL数据库
12.6 恢复MySQL数据库
12.7 实现复制
12.7.1 设置主服务器
12.7.2 执行初始的数据传输
12.7.3 设置一个/多个从服务器
12.8 进一步学习
12.9 下一章
第13章 MySQL高级编程
13.1 LOAD DATA INFILE语句
13.2 存储引擎
13.3 事务
13.3.1 理解事务的定义
13.3.2 通过InnoDB使用事务
13.4 外键
13.5 存储过程
13.5.1 基本示例
13.5.2 局部变量
13.5.3 游标和控制结构
13.6 进一步学习
13.7 下一章
第三篇 电子商务与安全性
第14章 运营一个电子商务网站
14.1 我们要实现什么目标
14.2 考虑电子商务网站的类型
14.2.1 使用在线说明书公布信息
14.2.2 接收产品或服务的订单
14.2.3 提供服务和数字产品
14.2.4 为产品或服务增值
14.2.5 减少成本
14.3 理解风险和威胁
14.3.1 网络黑客
14.3.2 不能招揽足够的生意
14.3.3 计算机硬件故障
14.3.4 电力、通信、网络或运输故障
14.3.5 广泛的竞争
14.3.6 软件错误
14.3.7 不断变化的政府政策和税收
14.3.8 系统容量限制
14.4 选择一个策略
14.5 下一章
第15章 电子商务的安全问题
15.1 信息的重要程度
15.2 安全威胁
15.2.1 机密数据的泄露
15.2.2 数据丢失和数据破坏
15.2.3 数据修改
15.2.4 拒绝服务
15.2.5 软件错误
15.2.6 否认
15.3 易用性,性能、成本和安全性
15.4 建立一个安全政策
15.5 身份验证原则
15.6 加密技术基础
15.6.1 私有密钥加密
15.6.2 公有密钥加密
15.6.3 数字签名
15.7 数字证书
15.8 安全的Web服务器
15.9 审计与日志记录
15.10 防火墙
15.11 备份数据
15.11.1 备份常规文件
15.11.2 备份与恢复MySQL数据库
15.12 自然环境安全
15.13 下一章
第16章 Web应用的安全
16.1处理安全性问题的策略
16.1.1 以正确心态为开始
16.1.2 安全性和可用性之间的平衡
16.1.3 安全监视
16.1.4 基本方法
16.2 识别所面临的威胁
16.2.1 访问或修改敏感数据
16.2.2 数据丢失或破坏
16.2.3 拒绝服务
16.2.4 恶意代码注入
16.2.5 服务器被攻破
16.3了解与我们“打交道”的用户
16.3.1 破解人员
16.3.2 受影响机器的未知情用户
16.3.3 对公司不满的员工
16.3.4 硬件被盗
16.3.5 我们自身
16.4 代码的安全性
16.4.1 过滤用户输入
16.4.2 转义输出
16.4.3 代码组织
16.4.4 代码自身的问题
16.4.5 文件系统因素
16.4.6 代码稳定性和缺陷
16.4.7 执行引号和exec
16.5 Web服务器和PHP的安全性
16.5.1 保持软件的更新
16.5.2 查看php.ini文件
16.5.3 Web服务器配置
16.5.4 Web应用的商业主机服务
16.6 数据库服务器的安全性
16.6.1 用户和权限系统
16.6.2发送数据至服务器
16.6.3 连接服务器
16.6.4 运行服务器
16.7 保护网络
16.7.1 安装防火墙
16.7.2使用隔离区域(DMZ)
16.7.3应对DoS和DDoS攻击
16.8 计算机和操作系统的安全性
16.8.1 保持操作系统的更新
16.8.2只运行必须的软件
16.8.3 服务器的物理安全性
16.9 灾难计划
16.10 下一章
第17章 使用PHP和MySQL实现身份验证
17.1 识别访问者
17.2 实现访问控制
17.2.1 保存密码
17.2.2 密码的加密
17.2.3 保护多个网页
17.3 使用基本身份验证
17.4 在PHP中使用基本身份验证
17.5 在Apache的.htaccess文件中使用基本身份验证
17.6 使用mod_auth_mysql身份验证
17.6.1 安装mod_auth_mysql
17.6.2 使用mod_auth_mysql
17.7 创建自定义身份验证
17.8 进一步学习
17.9 下一章
第18章 使用PHP和MySQL实现安全事务
18.1 提供安全的事务处理
18.1.1 用户机器
18.1.2 Internet
18.1.3 我们的系统
18.2 使用加密套接字层(SSL)
18.3 屏蔽用户的输入
18.4 提供安全存储
18.5 存储信用卡号码
18.6 在PHP中使用加密技术
18.6.1 安装GPG
18.6.2 测试GPG
18.7 进一步学习
18.8 下一章
第四篇 PHP的高级技术
第19章 与文件系统和服务器的交互
19.1 文件上载
19.1.1 文件上载的HTML代码
19.1.2 编写处理文件的PHP
19.1.3 避免常见上载问题
19.2 使用
目录
函数
19.2.1 从
目录
读取
19.2.2 获得当前
目录
的信息
19.2.3 创建和删除
目录
19.3 与文件系统的交互
19.3.1 获取文件信息
19.3.2 更改文件属性
19.3.3 创建、删除和移动文件
19.4 使用程序执行函数
19.5 与环境变量交互:getenv()和putenv()
19.6 进一步学习
19.7 下一章
第20章 使用网络函数和协议函数
20.1 了解可供使用的协议
20.2 发送和读取电子邮件
20.3 使用其他Web站点的数据
20.4 使用网络查找函数
20.5 备份或镜像一个文件
20.5.1 使用FTP备份或镜像一个文件
20.5.2 上传文件
20.5.3 避免超时
20.5.4 使用其他的FTP函数
20.6 进一步学习
20.7 下一章
第21章 日期和时间的管理
21.1 在PHP中获取日期和时间
21.1.1 使用date()函数
21.1.2 使用UNIX时间戳
21.1.3 使用getdate()函数
21.1.4 使用checkdate()函数检验日期有效性
21.1.5 格式化时间戳
21.2 在PHP日期格式和MySQL日期格式之间进行转换
21.3 在PHP中计算日期
21.4 在MySQL中计算日期
21.5 使用微秒
21.6 使用日历函数
21.7 进一步学习
21.8 下一章
第22章 创建图像
22.1 在PHP中设置图像支持
22.2 理解图像格式
22.2.1 JPEG
22.2.2 PNG
22.2.3 WBMP
22.2.4 GIF
22.3 创建图像
22.3.1 创建一个背景图像
22.3.2 在图像上绘图或打印文本
22.3.3 输出最终图形
22.3.4 清理
22.4 在其他页面中使用
自动生成
的图像
22.5 使用文本和字体创建图像
22.5.1 创建基本画布
22.5.2 将文本调整到适合按钮
22.5.3 放置文本
22.5.4 将文本写到按钮上
22.5.5 完成
22.6 绘制图像与用图表描绘数据
22.7 使用其他的图像函数
22.8 进一步学习
22.9 下一章
第23章 在PHP中使用会话控制
23.1 什么是会话控制
23.2 理解基本的会话功能
23.2.1 什么是cookie
23.2.2 通过PHP设置cookie
23.2.3 在会话中使用cookie
23.2.4 存储会话 ID
23.3 实现简单的会话
23.3.1 开始一个会话
23.3.2 注册一个会话变量
23.3.3 使用会话变量
23.3.4 注销变量与销毁会话
23.4 创建一个简单的会话例子
23.5 配置会话控制
23.6 通过会话控制实现身份验证
23.7 进一步学习
23.8 下一章
第24章 其他有用的特性
24.1 使用eval()函数对字符串求值
24.2 终止执行:die和exit
24.3 序列化变量和对象
24.4 获取PHP环境信息
24.4.1 找到所加载的PHP扩展部件
24.4.2 识别脚本所有者
24.4.3 确定脚本最近修改时间
24.5 暂时改变运行时环境
24.6 源代码加亮
24.7 在命令行中使用PHP
24.8 下一章
第五篇 创建实用的PHP和MySQL项目
第25章 在大型项目中使用PHP和MySQL
25.1 在Web开发中应用软件工程
25.2 规划和运行Web应用程序项目
25.3 重用代码
25.4 编写可维护代码
25.4.1 编码标准
25.4.2 分解代码
25.4.3 使用标准的
目录
结构
25.4.4 文档化和共享内部函数
25.5 实现版本控制
25.6 选择一个开发环境
25.7 项目的文档化
25.8 建立原型
25.9 将逻辑和内容分离
25.10 优化代码
25.10.1 使用简单优化
25.10.2 使用Zend产品
25.11 测试
25.12 进一步学习
25.13 下一章
第26章 调试
26.1 编程错误
26.1.1 语法错误
26.1.2 运行时错误
26.1.3 逻辑错误
26.2 使用变量帮助调试
26.3 错误报告级别
26.4 改变错误报告设置
26.5 触发自定义错误
26.6 巧妙地处理错误
26.7 下一章
第27章 建立用户身份验证机制和个性化设置
27.1 解决方案的组成
27.1.1 用户识别和个性化设置
27.1.2 保存书签
27.1.3 推荐书签
27.2 解决方案概述
27.3 实现数据库
27.4 实现基本的网站
27.5 实现用户身份验证
27.5.1 注册
27.5.2 登录
27.5.3 登出
27.5.4 修改密码
27.5.5 重设遗忘的密码
27.6 实现书签的存储和检索
27.6.1 添加书签
27.6.2 显示书签
27.6.3 删除书签
27.7 实现书签推荐
27.8 考虑可能的扩展
27.9 下一章
第28章 创建一个购物车
28.1 解决方案的组成
28.1.1 创建一个在线
目录
28.1.2 在用户购买商品的时候记录购买行为
28.1.3 实现一个付款系统
28.1.4 创建一个管理界面
28.2 解决方案概述
28.3 实现数据库
28.4 实现在线
目录
28.4.1 列出
目录
28.4.2 列出一个
目录
中的所有图书
28.4.3 显示图书详细信息
28.5 实现购物车
28.5.1 使用show_cart.php脚本
28.5.2 浏览购物车
28.5.3 将物品添加到购物库
28.5.4 保存更新后的购物车
28.5.5 打印标题栏摘要
28.5.6 结账
28.6 实现付款
28.7 实现一个管理界面
28.8 扩展该项目
28.9 使用一个已有系统
28.10 下一章
第29章 创建一个基于Web的电子邮件服务系统
29.1 解决方案的组成
29.1.1 电子邮件协议:POP3和IMAP
29.1.2 PHP对POP3和IMAP的支持
29.2 解决方案概述
29.3 建立数据库
29.4 了解脚本架构
29.5 登录与登出
29.6 建立账户
29.6.1 创建一个新账户
29.6.2 修改已有账户
29.6.3 删除账户
29.7 阅读邮件
29.7.1 选择账户
29.7.2 查看邮箱内容
29.7.3 阅读邮件消息
29.7.4 查看消息标题
29.7.5 删除邮件
29.8 发送邮件
29.8.1 发送一则新消息
29.8.2 回复或转发邮件
29.9 扩展这个项目
29.10 下一章
第30章 创建一个邮件列表管理器
30.1 解决方案的组成
30.1.1 建立列表和订阅者数据库
30.1.2 上载新闻信件
30.1.3 发送带附件的邮件
30.2 解决方案概述
30.3 建立数据库
30.4 定义脚本架构
30.5 实现登录
30.5.1 新账户的创建
30.5.2 登录
30.6 用户函数的实现
30.6.1 查看列表
30.6.2 查看邮件列表信息
30.6.3 查看邮件列表存档
30.6.4 订阅与取消订阅
30.6.5 更改账户设置
30.6.6 更改密码
30.6.7 登出
30.7 管理功能的实现
30.7.1 创建新的邮件列表
30.7.2 上载新的新闻信件
30.7.3 多文件上载的处理
30.7.4 预览新闻信件
30.7.5 发送邮件
30.8 扩展这个项目
30.9 下一章
第31章 创建一个Web论坛
31.1 理解流程
31.2 解决方案的组成
31.3 解决方案概述
31.4 数据库的设计
31.5 查看文章的树型结构
31.5.1 展开和折迭
31.5.2 显示文章
31.5.3 使用treenode类
31.6 查看单个的文章
31.7 添加新文章
31.8 添加扩充
31.9 使用一个已有的系统
31.10 下一章
第32章 生成
PDF
格式的个性化文档
32.1 项目概述
32.1.1 评估文档格式
32.2 解决方案的组成
32.2.1 问题与回答系统
32.2.2 文档生成软件
32.3 解决方案概述
32.3.1 提问
32.3.2 给答题评分
32.3.3 生成RTF证书
32.3.4 从模板生成
PDF
证书
32.3.5 使用
PDF
lib生成
PDF
文档
32.3.6 使用
PDF
lib的一个“Hello World”程序
32.3.7 用
PDF
lib生成证书
32.4 处理标题的问题
32.5 扩展该项目
32.6 下一章
第33章 使用XML和SOAP来连接Web服务
33.1 项目概述:使用XML和Web服务
33.1.1 理解XML
33.1.2 理解Web服务
33.2 解决方案的组成
33.2.1 使用Amazon的Web服务接口
33.2.2 XML的解析:REST响应
33.2.3 在PHP中使用SOAP
33.2.4 缓存
33.3 解决方案概述
33.3.1 核心应用程序
33.3.2 显示特定种类的图书
33.3.3 获得一个AmazonResultSet类
33.3.4 使用REST发送和接收请求
33.3.5 使用SOAP发送和接收请求
33.3.6 缓存请求返回的数据
33.3.7 创建购物车
33.3.8 到Amazon付账
33.4 安装项目代码
33.5 扩展这个项目
33.6 进一步学习
第34 章使用Ajax构建Web 2.0应用
34.1 Ajax 是什么?
34.1.1 HTTP请求和响应
34.1. 2 DHTML和XHTML
34.1.3 级联样式单(CSS)
34.1.4 客户端编程
34.1.5 服务器端编程
34.1.6 XML和XSLT
34.2 Ajax基础
34.2.1 XMLHTTPRequest对象
34.2.2 与服务器通信
34.2.3 处理服务器响应
34.2.4 整合应用
34.3 在以前的项目添加Ajax元素
34.3.1在PHPBookmark应用中添加Ajax元素
34.4 进一步学习
34.4.1 进一步了解文档对象模型(DOM)
34.4.2 Ajax应用可用的JavaScript函数库
34.4.3 Ajax开发人员网站
第六篇 附录
附录A 安装PHP及MySQL
附录B Web资源
第1章 PHP快速入门教程
第2章 数据的存储与检索
第3章 使用数组
第4章 字符串操作与正则表达式
第5章 代码重用与函数编写
第6章 面向对象的PHP
第7章 错误和异常处理
Steve McConnell的原作《代码大全》(第1版)是公认的关于编程的最佳实践指南之一, 在过去的十多年间,本书一直在帮助开发人员编写更好的软件。
现在,作者将这本经典著作全新演绎,融入了最前沿的实践技术,加入了上百个崭新的代码示例, 充分展示了软件构建的艺术性和科学性。 McConnell汇集了来自研究机构、学术界以及业界日常实践的主要知识, 把最高效的技术和最重要的原理交织融会为这本既清晰又实用的指南。
无论您的经验水平如何,也不管您在怎样的开发环境中工作,也无论项目是大是小, 本书都将激发您的思维并帮助您构建高品质的代码。
《代码大全(第2版)》做了全面的更新,增加了很多与时俱进的内容,包括对新语言、新的开发过程与方法论的讨论等等。
本资源转载自网络,供学习研究之用,如用于商业用途,请购买正版,如有侵权,请联系我或CSDN删除。
生成
PDF
文件
SKOS Play还可以用于从同义词库中生成可打印的
PDF
,并具有与上述输出相同的输出。
PDF
是可单击的,因此您可以在
PDF
中浏览同义词库的内容。
使用D3
JS
的凉爽dataviz
SKOS Play利用D3
js
以很好的方式显示SKOS结构的层次结构:
树的可视化
正方形可视化
自动完成字段
理论知识:http://stackoverflow.com/questions/4643489/how-do-i-retrieve-a-page-number-or-page-reference-for-an-outline-destination-in
原理就是:通过CG
PDF
DocumentGetCatalog方法可以获取
pdf
的元信息,这是一个类似Dictionary的结构,而
目录
信息
前段时间公司发布新需求,要求用户点击按钮可以导出
pdf
或者html到本地,
pdf
中要包含可点击跳转的
目录
,要分页记录页码,还有页眉和页脚,和后台的小哥哥配合试了好多方法,最终完成的效果还不错,在这里做个记录。
点击导出html报告,则导出html文件到本地
点击导出
pdf
报告,则导出
pdf
到本地
因为设计也比较给力,直接把
pdf
样式设计成模板了,
所以前端的工作就是按照...
现在的
PDF
工具
有很多,选择一款适合自己的才重要,今天小编(www.dayanzai.me)给大家分享一款非常不错的
PDF
工具
,
PDF
-XChange
PDF
Viewer 2.5 中文版是一款多功能的
PDF
阅读器,它完全免费,需安装.NETframework才能执行。它具有丰富的标注功能、多页签显示、强大的导出图像功能、批量搜索、放大与导航功能。支持中文注释。
PDF
-XChange Viewer能够利用任何Windows的软件,比如说 Word、Excel、AutoCad来制作与Adobe相兼容的
PDF
文件。它具有丰富的配置和功能选项,而且非常的简单易用。它还能够当作打印机使用,以代替传统的纸质输出。
PDF
-XChange
PDF
Viewer 软件特色
– 支援多分页浏览,还可以像 IE7 的缩图索引一样,将开启的文件产生缩图于一页,让你方便点选。
– 程序启动速度不慢,
PDF
档载入速度很快,就算是大档案也能很快载入。
– 可以显示中文文件。
– 可以加文字,加注解,画箭头,画线段,画多边形,还可以储存修改后的档案,不会加上浮水印。
– 可以将文件输出成图片。
– 可以自动检查更新.
PDF
-XChange Viewer 中文特别版
PDF
-XChange
PDF
Viewer 功能
-对任何
PDF
文档添加评论和注释(受安全设置的限制)——不同于Adobe Viewer,需要受Adobe“认证”的
PDF
创建
工具
才行
-可以从任何图像、
PDF
文件甚至Windows的剪贴板为文件添加和应用个人戳记(Custom Stamps)
-测量
工具
,包括周长测量和面积测量
-标记页面里的文本和对象
-在任何
PDF
页面里都可以直接输入,不仅仅是Adobe所允许的表单文档——在打字机(Typewriter)模式下
-导出
PDF
页面或者整个文件到任意一种支持的图形格式,包括BMP,JPEG,TIFF,PNG等等等等…
-从
PDF
页面/文件里提取文本面
-易于导航,让你浏览大型或者复制的
PDF
文件变得简单而有乐趣——通过我们的扩展功能:放大镜
工具
和平板缩放窗口
工具
-
PDF
安全支持,包括40/128位RC4和128/256位AES加密密码,以及添加/编辑许可
-填写Adobe表单,并保存到磁盘、邮件或者“post”
-用户界面订制(色彩方案,边距,滚动条的可见性)
-包括完整JavaScript引擎的
-保存/恢复最后一次打开的文件(最后一次会话)
-新的JPEG2000压缩支持——速度提高
-包括微软IE和火狐浏览器插件的
-无缝整合你最喜爱的翻译软件来“边看边译”——支持ABBYY Lingvo 12,Translate It!和Lingoes(灵格斯)
-详尽的帮助文件和
PDF
手册——不需要另外下载就可以添加特性等等
-在阅览器里直接用电子邮件发送
PDF
文件
-定制用户界面(
工具
栏选项等)
-文件编辑器的撤销/恢复撤销功能
-对
PDF
文件附件的支持(portfolio)
-设定
PDF
文件的默认阅览偏好
-导入/导出阅读器的默认设置
-还有便携版——可以从任何合适的设备里面运行,比如记忆棒/CD/DVD等等——解压即可用,无需安装,下载包仅6MB
-适用于Windows 2000及更新的操作系统(32/64位)
-标尺,对齐到网格和参考线
PDF
-XChange Viewer Pro 专业版高级功能
-添加/编辑/移动书签
-删除页面
-移动页面——在预览缩略图(Thumbnails View)里拖放
-插入/导入页面(从已有的
PDF
文档里面)
-提取页面到一个新的
PDF
/图像文件
-裁剪页面/文件
-贴注释/评论
-插入空白页
-总括注释
-导出注释
-扫描直接生成
PDF
文件
-从文本文件和RTF文件生成
PDF
文件
-将15种格式的图形文件转换成
PDF
文件
-添加数字签名(包括时间戳)
docsearcher
【项目名称】:DocSearcher开发
【项目描述】:目标是开发一款PPT检索平台。功能含:PPT解析、合成、显示、上传、下载,关键词检索,全文索引,用户管理等。
项目执行完后,技术或平台经验含:JavaScript,CSS,Html5, github,Ajax,
JS
ON/XML,Android/iOS,Spring MVC,Hibernate,Restlet,NoSQL,MySQL,Lucene/Solr,POI等。
使用MongoDB和Mongoose创建地图服务器
在此代码模式中,我们将使用MongoDB和Mongoose创建地图服务器。 地图服务器是使用mongoose框架的Node.
js
应用。 地图服务器将提供数据以为仪表板生成地图的SVG。 仪表板将显示展位并为用户绘制地图。
PDF
版本还将提供给iOS应用,该应用将生成室内地图。
读者完成此代码模式后,将了解如何:
用Node
JS
实现猫鼬
使用Express作为REST API服务数据
MongoDB已建立。 在此模式中使用Compose for MongoDB。
用户添加与应用程序架构匹配的模拟数据。
用户通过其API与已部署的应用进行交互
包含的组件
:具有强大的索引和查询,聚合以及广泛的驱动程序支持的MongoDB已经成为许多初创企业和企业的首选
JS
ON数据存储。
:创建和管理您自己的云基础架构,并将Kubernetes用作您的容器编排引擎。
:一个JavaScript框架,用作MongoDB对象建模
工具
。
:一个开放源代码JavaScript运行时环境,用于执行服务器端JavaScript代码。
该存储库包含与DiCy相关的各种软件包,DiCy是基于LaTeX,knitr,Literate Agda,Literate Haskell和Pweave的基于JavaScript / TypeScript的构建器,可自动构建依赖关系。 DiCy解析和过滤在构建过程中生成的输出日志和错误消息,并且可以构建利用以下程序来处理文件的项目。
参考书目-Biber,BibTeX,BibTeX8,BibTeXu,pBibTeX,upBibTeX
图形创作—渐近线,MetaPost
图像/文件转换— dvi
pdf
m,dvi
pdf
mx,dvips,dvisvgm,epsto
pdf
,
pdf
2ps,ps2
pdf
索引/词汇表-bib2gls,makeglossaries,makeindex,mendex,splitindex,texindy,upmendex
LaTeX引擎-LaTeX,LuaLaTeX,
pdf
LaTeX,pLaTeX,upLaTeX,XeLaTeX
精通编程/可重现性研究— Agda,knitr,lhs2TeX,patchSynctex,PythonTeX,Pweav
在使用WPS软件将多个
PDF
文件合并为一个
PDF
文件时,如果需要为合并后的
PDF
文件生成
目录
,具体操作步骤如下:
1. 打开WPS软件,单击“文件”菜单,并选择“导入
PDF
文件”。
2. 选择需要合并的
PDF
文件,单击鼠标右键,选择“合并
PDF
文件”。
3. 在合并
PDF
文件的设置界面中,勾选“添加
PDF
目录
”,并点击“开始合并”。
4. 合并完成后,打开合并后的
PDF
文件,找到并单击“
目录
”标签页。
5. 在
目录
标签页中,可以看到WPS自动将所有输入的
PDF
文件中包含的
目录
项提取出来,并生成一个统一的
目录索引
。
需要注意的是,WPS的
自动生成
目录
功能,仅适用于输入的
PDF
文件中包含
目录
结构的情况。如果输入的
PDF
文件中没有
目录
结构,WPS将无法
自动生成
目录
,需要手动编辑添加。另外,WPS的
自动生成
目录
功能,也不能保证100%准确,需要用户根据实际情况进行核对和调整。