作者:马健
邮箱:stronghorse_mj@hotmail.com发布:2008.08.03
更新:2008.08.24


补充说明:此文成文较早,当时PDG浏览器只支持纯正PDG,不支持名为PDG,实为DjVu的文件。现在UnicornViewer已经支持名为PDG,实为DjVu的文件,因此对于散页DjVu,多半都用PdgRenamer更名为PDG,压成zip包后用UnicornViewer看。如果是多页DjVu,可以用DjVuToy拆成散页再更名,或直接用高版本UnicornViewer浏览。


声明:
1、谨以此文献给喜欢折腾的各位热血人士,不喜欢折腾的就不必看了。
2、本文欢迎转载,不过转载的时候请注明原作者为strnghrs。
3、DjVu转换成PDG后,打开可能会有点慢:既然在空间上赚取了利润,在时间上付出一点成本也是应该的。

一、准备散页DjVu
怎么获得DjVu文件就不必问我了,问了也不会有结果。
如果获得的是打包后的多页DjVu,可以用DjVuToy的“文件拆分”功能拆开。

二、文件更名
散页DjVu需要更名为PDG,并且符合PDG文件名规范:主文件名为6位字母、数字,控制名位pdg,均为小写。
主文件名由前缀加数字组成,前缀含义为:
cov:封面
bok:书名
leg:版权
fow:前言
!:目录
att:附录
bac:封底
ins:插页
正文页无前缀,直接用6位数字编码。
更名工具很多,我习惯用RenameIt。如果有人做个专用工具,估计能赚点论坛币出来。

三、转成真正PDG文件
PDG文件本身是支持DjVu压缩的,只是需要在前面加上PDG文件头,所以转换完成后,文件总长度会比原DjVu文件总长度大一点。
转换方法:用DjVuToy的“PDG压缩”功能,选择上一步中名为PDG,实为DjVu的文件所在文件夹,注意不要选“转换为快速版”,这样可以保证最大限度保持清晰度。
对于黑白单层DjVu(只有Sjbz段,无FG44、BG44、FGbz等),DjVuToy会在PDG文件头后直接嵌入原DjVu文件,实现无损转换。对于灰度、彩色DjVu(含FG44、BG44、FGbz等段),由于PDG浏览器对这类文件的解释与众不同(上下颠倒、颜色互换),所以只能先解码,再重新压缩成单层DjVu(只含BG44),因此文件质量或长度可能会有一点损失。

DjVu转PDG的方法与步骤的更多相关文章

  1. VirtualBox安装Debian6的方法和步骤(详细)

    下面是用VirtualBox安装Debian6的方法和步骤 l 新建一个文件夹,用于存放虚拟硬盘,如Debian l 打开VirtualBox,点击新建 l 输入虚拟机名称,Debian_6 l 给虚 ...

  2. CentOS 6.5系统上安装SVN服务器端的方法及步骤

    VN其实就是Subversion,分为服务器端和客户端.之前在网上搜了很多方法,都有各种问题,经过自己搜集整理以及实际尝试,总算有个比较靠谱的方法.本文主要介绍CentOS 6.5系统上安装SVN服务 ...

  3. 调整innodb redo log files数目和大小的具体方法和步骤

    相较于Oracle的在线调整redo日志的数目和大小,mysql这点则有所欠缺,即使目前的mysql80版本,也不能对innodb redo日志的数目和大小进行在线调整,下面仅就mysql调整inno ...

  4. matlab和c++混合编程---matlab和vs的环境配置问题及方法和步骤(转载)

    matlab和c++混合编程---方法和步骤 matlab和c++混合编程---matlab和vs的环境配置问题 摘要:Matlab具有很强的数值计算和分析等能力,而C/C++是目前最为流行的高级程序 ...

  5. 详解学习C#的方法和步骤

    如果你已经有较多的面向对象开发经验,跳过以下这两步: 第一步 掌握一门.NET面向对象语言,C#或VB.NET. 强烈反对在没系统学过一门面向对象语言的前提下去学ASP.NET. ASP.NET是一个 ...

  6. PLSQL执行sql语句输出的中文是???之解决方法和步骤

    方法/步骤 1 登陆plsql,执行sql语句,输出的中文标题显示成问号????:条件包含中文,则无数据输出 步骤阅读 2 输入sql语句select * from V$NLS_PARAMETERS查 ...

  7. VC++6.0环境下调试c语言代码的方法和步骤_附图

    1.C语言程序四步开发步骤 (1)编辑.可以用任何一种编辑软件将在纸上编写好的C语言程序输入计算机,并将C语言源程序文件*.c以纯文本文件形式保存在计算机的磁盘上(不能设置字体.字号等). (2)编译 ...

  8. 相机标定 matlab opencv ROS三种方法标定步骤(3)

    三 ,  ROS 环境下 如何进行相机标定 刚开始做到的时候遇到一些问题没有记录下来,现在回头写的时候都是没有错误的结果了,首先使用ROS标定相机, 要知道如何查看节点之间的流程图  rosrun r ...

  9. 相机标定 matlab opencv ROS三种方法标定步骤(1)

    一 . 理解摄像机模型,网上有很多讲解的十分详细,在这里我只是记录我的整合出来的资料和我的部分理解 计算机视觉领域中常见的三个坐标系:图像坐标系,相机坐标系,世界坐标系,实际上就是要用矩阵来表 示各个 ...

随机推荐

  1. JavaScript创建对象的几种重要模式

    一.工厂模式 1. 代码示例 function person(name, age) { var p = new object(); p.name = name; p.age = age; p.sayN ...

  2. POJ1020(小正方形铺大正方形)

    Anniversary Cake Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 16579   Accepted: 5403 ...

  3. java代码异常篇

    总结:掌握流.缓冲区类的方法 package com.b; import java.io.BufferedReader; import java.io.File; import java.io.Fil ...

  4. 并发编程之五--ThreadLocal

    ThreadLocal是什么 早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路.使用这个工具类可以很简洁地 ...

  5. PostgreSQL 管理数据库

    管理数据库每个正在运行的PostgreSQL 服务器实例都管理着一个或多个数据库.因此,在组织SQL对象(“数据库对象”)的层次中,数据库位于最顶层. 本章描述数据库的属性,以及如何创建.管理.删除它 ...

  6. 实验吧CTF题库-编程(部分)

    百米 3秒提交答案,数字是随机变化的 利用Python脚本解题 # -*- coding:utf-8 -*- __author__ = "MuT6 Sch01aR" import ...

  7. Delphi BLE 控件

    TBluetoothLEDevice LDevice.Address;//"00:11:22:DD:EE:FF". LDevice.DeviceName//Mi LDevice.I ...

  8. oracle 启动停止过程

    oracle 主要由两部分组成:instance和database .instance是指一组后台进程/线程和一块共享内存区域,而database是指存储在磁盘上的一组物理文件. 数据库启动包括三个步 ...

  9. LAMP 2.9 php扩展模块如何安装

    php 和 apache 类似,核心文件为/usr/local/php/bin/php,针对 apache 的是/usr/local/apache2/modules/libphp5.so 模块.这两个 ...

  10. xcode中用pods管理第三方库<转>

    安装pods :http://www.cnblogs.com/wangluochong/p/5567082.html 史上最详细的CocoaPods安装教程 --------------------- ...