在Acrobat中利用Javascript根据目录一键生成带页码的书签

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 07:53 点击:

网络上很多扫描版的PDF电子书都缺少书签。特别是对计算机教程类的大部头来说,由于需要经常翻阅,没有书签的痛苦可想而知。
制作书签的办法主要有:
Ctrl+B来一个个地创建;
在Word2007里面生成书签,然后和内容主体合并;
利用JavaScript生成;
今天我来讲讲怎样利用JavaScript在Acrobat一键生成书签。
基本思路:大多数的扫描版PDF电子图书都可以在官网或者各大网上书店找到目录,很多都是带有页码的(图1)。 将目录用文本文件保存起来,作为附件添加到PDF中,利用JavaScript读取附件,生成数组,用循环处理字符串,再生成书签。

image

图1
 
下面是具体步骤:
1.把目录复制粘贴到一个文本文件中,确保所有的分隔符是半角的空格(正则表达式为\s),并保存为UTF-8的编码。(图2,图3)

image

图2

image

图3
2.在Acrobat把目录.txt添加到附件里(图4)并保存PDF文件。

image

图4
3.下载文末的附件把Bookmark.js文件解压出来复制到Acrobat安装目录下的JavaScript文件夹里面,默认是Adobe\Acrobat 9.0\Acrobat\Javascripts
Bookmark.js文件内容:
app.addMenuItem({    
  cName: "从附件添加书签", cParent: "Tools",
  cExec: "bookm();",
  cEnable: "event.rc= (event.target != null);" });

    
var Name_Bookmark;
var Page_Bookmark;


function bookm()
{
  var StartNum = app.response({    
    cQuestion: "输入页码为1的实际页数",    
    cTitle: "若缺少1页码,则输入2页码的实际页数,依此类推",    
    cDefault: "1",    
    cLabel: "输入:"
    });
    
  if (StartNum!=null)
  {
    var myThis=event.target;
    var attName=myThis.dataObjects[0].name;
    var oFile = myThis.getDataObjectContents(attName);
    var arrFile = util.stringFromStream(oFile, "utf-8");
    var tArr=arrFile.split("\n");

    myThis.bookmarkRoot.remove();
    myThis.bookmarkRoot.createChild("目录");

    var fSpc;
    var lSpc;
    var tCht;
    var oDot;
    var Num_Dot;
    
    var MenuBookmark=myThis.bookmarkRoot.children[0];//目录
    var ChaptersBookmark;
    var SectionsBookmark;
    var SubSectionsBkm;
    var SubSectionsBkm1;
        
    var i;
    var a;
    var b;//首空格后的字符
    for (i=0;i<tArr.length;i++)
    {
      a=tArr[i];
      if (a.length>2)//空行的length=1,设置为2即不添加空行
      {
        fSpc=a.search(/\s/);// 首空格位置
        tCht=a.slice(0,fSpc);//首空格前的字符
        oDot=tCht.match(/\./g);//匹配.符号
        Num_Dot=(oDot==null? 0:oDot.length);

        lSpc

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • Gb2312转utf-8编码的方法(vbs+js)
      • 如何使用Ajax技术开发Web应用程序(1)
      • js跳转路径问题
      • JavaScript模仿桌面窗口
      • 用js检测两个线段是否相交
      • 我知道的JavaScript -- 设计模式(桥接)应用之 – 验证器
      • 运用JavaScript构建你的第一个Metro式应用程序(on Windows
      • 我是如何去了解jquery的(六),案例之幻灯片轮换
      • Jquery封装幻灯片效果
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1