DITA-OT 4.0新特性 - PDF themes,定制PDF样式的新方法

news2024/11/26 10:21:20

随着DITA-OT 4.0的发布,它提供了一种新的定制PDF样式方法,这种方法就是PDF theme。这篇文章来聊一聊这种定制PDF输出的新方法和实验结果。 

在进入PDF theme细节之前,为各位读者梳理一下DITA-OT将DITA和Markdown发布成PDF的几种方法。

- 1 -

DITA-OT发布PDF的几种方法

DITA-OT是优秀的结构化内容发布工具,是开源产品并得到广泛应用。很多公司将DITA-OT集成到自家的产品中,还有公司在DITA-OT的基础上做了扩展。

现在,在DITA-OT的基础上,出现了多种发布PDF文档的方法。下边是其中两种,请点开图看细节。  

1. 使用PDF2插件

开源版DITA-OT将DITA和Markdown发布成PDF时,使用的是上图中”1. 使用PDF2插件“的方法,它使用的是XSLT/XSL-FO技术。

XSL-FO技术是DITA-OT用来发布PDF的技术,目前也还有广泛的应用。当我们运行以下命令,它使用的就是这种方法:

dita -i book.ditamap -f pdf -o out/pdf

此命令调用DITA-OT的PDF2插件,将DITA内容转换成PDF。

在Oxygen XML Editor中选择”DITA Map PDF - based on XSL-FO"发布文档时,调用的也是这个插件:

2. 使用pdf-css-html5

在2018年W3C发布了“CSS页面媒体模块级别3”标准,用于支持使用CSS来将HTML页面发布成基于纸面的输出,如:PDF。这种方法得到了几个主流发布引擎厂商的支持,比如:Antenna House,PrinceXML和SyncRO Soft (也就是生产Oxygen XML Editor那家公司)。

pdf-css-html5是SyncRO Soft基于DITA-OT开发的插件,用于使用CSS技术来将DITA发布成PDF。这个插件只存在Oxygen XML Editor和Oxygen Publish Engine中,是商用软件。

在Oxygen XML Editor中选择”DITA Map PDF - based on HTML & CSS"发布文档时,调用的则是这个插件:

如果使用开源版DITA-OT(不包含商业插件),在DITA-OT 4.0之前定制PDF样式需要使用XSLT/XSL-FO语言,这对于TW来说有挑战。 

“我是写文档的,XSLT/XSL-FO?什么鬼?不想了解”

就算对于专业做样式定制的,使用XSL-FO开发和维护成本总体较高。原因请见我之前文章的分析:将CSS用于PDF发布

为了降低XSLT/XSL-FO定制PDF输出样式的难度和成本,DITA-OT 4.0提供DITA theme来尝试降低定制PDF的难度和成本。

DITA-OT 4.0包括com.elovirta.pdf插件,它通过提供theme参数扩展了默认的PDF2插件功能,在不需要更改XSLT样式表的情况下更改PDF输出的样式

- 2 -

DITA Theme概要

DITA theme可用于调整PDF输出的基本设置,如:封面图片、页面大小、编号、字体属性、背景色和边框、间距以及页眉和页脚等动态内容。

要使用自定义theme生成PDF输出,dita调用命令如下:

dita -i book.ditamap -f pdf -o out/pdf --theme=path/to/custom-theme-file.yaml

theme文件可以用YAML或JSON格式编写,DITA-OT安装目录中的docsrc/samples/themes文件夹提供了几个示例。

通过theme文件可以定制以下PDF选项:

  • 页面设置

  • 页眉和页脚

  • 内容元素的样式

1. 页面设置示例

page:
  size: A4
  orientation: portrait
  top: 20mm
  outside: 20mm
  bottom: 20mm
  inside: 30mm
  mirror-margins: true

2. 页眉和页脚示例:

header:
  border-after: solid 1pt black
  odd:
    content: '{title}'
    text-align: end
  even:
    content: '{chapter}'
    text-align: start

3. 内容元素的样式示例:

style:
  body:
    font-family: serif
    font-size: 12pt
    space-after: 6pt
    space-before: 6pt
    start-indent: 25pt
  topic:
    font-family: sans-serif
    font-size: 26pt
  link:
    color: blue
    text-decoration: underline

DITA-OT的PDF theme文档在这里:

https://www.dita-ot.org/dev/topics/pdf-themes

- 3 -

实验

在DITA-OT提供的示例theme基础上做以下调整:

1)整体和首页

  • 设置中文字体
  • 加logo并居中

2)页眉页脚

  • 加分割线
  • 内容设置为:文档标题 + 章节标题
  • 页脚中的页码居中显示
  • 加公司logo


3)表格

  • 表格标题居中显示
  • 表格序号自动生成
  • 标题行自动粗体并使用灰色背景

4)图形

  • 图形标题居中显示
  • 图形序号自动生成


5)代码块和注

  • 灰色背景
  • 适合代码的字体

- 4 -

总结

说一说使用DITA theme来定制PDF的感受:

  1. 语法简单,类似于CSS,容易掌握

  2. 能够做一些简单的定制,目前无法做到对输出的完全控制,可以预测后续版本会有更多的增强

  3. 此方法是通过配置文件来控制XSL-FO的生成,要理解配置的参数意义需要了解XSL-FO

点这里查看代码和生成的PDF文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1097311.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

『Linux升级路』基本指令

🔥博客主页:小王又困了 📚系列专栏:Linux 🌟人之为学,不日近则日退 ❤️感谢大家点赞👍收藏⭐评论✍️ 目录 一、认识操作系统 📒1.1什么是操作系统 📒1.2操作系统…

Day15|104.二叉树的最大深度

一、104.二叉树的最大深度 题目链接:https://leetcode.cn/problems/maximum-depth-of-binary-tree/ 文章链接:https://programmercarl.com/0104.%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E5%A4%A7%E6%B7%B1%E5%BA%A6.html#%E7%9B%B8%E5%85%B3%E9%…

Bootstrap的徽章样式设计,徽章常用作作为显示未读内容或动态计数内容

Bootstrap的徽章样式&#xff0c;通过添加类badge来实现。 目录 01-往标题中添加徽章02-给按钮、链接添加徽章03-设置徽章的颜色04-设置胶囊形徽章 01-往标题中添加徽章 通常在<span>标签添加类badge实现。 示例代码如下&#xff1a; <!DOCTYPE html> <html&g…

二维码智慧门牌管理系统:解决公安标准地址与实际楼栋名称的差异

文章目录 前言一、二维码智慧门牌管理系统的核心功能二、广泛应用领域 前言 在当今信息化社会&#xff0c;精准的地标信息是日常生活中不可或缺的部分。特别是在小区管理中&#xff0c;精准的楼栋名称和地址信息显得尤为重要。但实际上&#xff0c;公安标准地址与实际楼栋名称…

JVM 垃圾回收算法详解

目录 1 垃圾回收算法1.1 标记清除算法1.2 复制算法1.3 标记整理算法1.4 分代回收算法1.4.1 对象进入老年代的条件 1 垃圾回收算法 有四种垃圾回收算法&#xff1a; 标记清除算法复制算法标记整理算法分代回收算法 1.1 标记清除算法 标记&#xff1a;遍历内存区域&#xff0…

AlexNet论文阅读

开始之前的简介:这篇论文是王林蓉师姐推荐给我看的第一篇入门级别的cv领域的论文,也算是我入手研究生阶段的第一篇论文.我是打算先看看这一领域的论文,然后写的自己一点随笔.若有错误欢迎指正. 一. 专有词汇 非饱和神经元 dropout 饱和非线性,非饱和非线性 二. 论文结构 三. 核…

10G SDH传输分析仪该如何选择

TFN D450S 传输分析仪 功能全面 使用方便 是 通信人的不二选择

深入了解企业税收违法信息API:实现智能风险评估

引言 企业税收违法是一项严重的经济犯罪&#xff0c;可能导致严重的法律后果和金融损失。为了帮助企业和金融机构识别并预防潜在的税收违法行为&#xff0c;智能风险评估变得至关重要。在这一领域&#xff0c;企业税收违法信息API发挥着重要的作用&#xff0c;提供了关键的数据…

一图读懂「五度情报站」全盘视野,情报智取,先知先行,决策有道!

「五度情报站」是一款集企业情报监测、管理、分析等多功能于一体微信小程序&#xff0c;其依托全体量产业大数据及强大的数据治理能力&#xff0c;收录了商业、市场、竞争、企业、技术、金融等全类别情报信息&#xff0c;构建了面向用户的业务型标签体系&#xff0c;设计了实用…

PyTorch深度学习实战(21)——从零开始实现Faster R-CNN目标检测

PyTorch深度学习实战&#xff08;21&#xff09;——从零开始实现Faster R-CNN目标检测 0. 前言1. Fast R-CNN 目标检测模型组成1.1 锚框1.2 区域提议网络1.3 分类和回归 2. 实现 R-CNN 目标检测2.1 数据处理2.2 模型构建2.3 模型训练与测试 小结系列链接 0. 前言 Faster R-CN…

手机抬手亮屏解锁,用到了哪些硬件?

随着时代发展&#xff0c;智能手机以丰富的功能及便利性&#xff0c;成为了人们必不可少的物品&#xff0c;其中人脸解锁功能是非常有用的功能&#xff0c;广受年轻人的喜爱&#xff0c;那么你知道她是如何实现吗&#xff1f;今天凡小亿带你们探索&#xff01; 手机抬手亮屏解锁…

谨以此篇,纪念我2023年曲折的计算机保研之路

目录 阶段一&#xff1a;迷茫阶段二&#xff1a;准备个人意愿保研材料准备套磁老师5.1日 浙大线上编程测试5.8日 浙大线上面试 —— 一面5.17日 浙大线上面试——二面5.29日 实验室面试结果5.27日 南开线上面试6.20日 华师电话面试 阶段三&#xff1a;旅途北航CS&#xff08;6.…

ebpf的快速开发工具--libbpf-bootstrap

基于ubuntu22.04-深入浅出 eBPF 基于ebpf的性能工具-bpftrace 基于ebpf的性能工具-bpftrace脚本语法 基于ebpf的性能工具-bpftrace实战(内存泄漏) 什么是libbpf-bootstrap libbpf-bootstrap是一个开源项目&#xff0c;旨在帮助开发者快速启动和开发使用eBPF(Extended Berk…

微服务拆分的思考

一、前言 前面几篇文章介绍了微服务核心的两个组件&#xff1a;注册中心和网关&#xff0c;今天我们来思考一下微服务如何拆分&#xff0c;微服务拆分难度在于粒度和层次&#xff0c;粒度太大拆分的意义不大&#xff0c;粒度太小开发、调试、运维会有很多坑。 二、微服务划分…

【初识Linux】:常见指令(2)

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下有关Linux的基础知识点&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入门到精通 数…

为健康护航的小帮手,dido E55S Pro智能手表体验

现在很多年轻人每天都要长时间工作&#xff0c;没有时间锻炼身体&#xff0c;很容易导致各种健康隐患&#xff0c;工作效率也容易下降&#xff0c;非常有必要通过智能手表等工具&#xff0c;随时监测自己的健康状态。现在支持健康监测的智能手表非常多&#xff0c;用起来也简单…

Java反射使用实例

Java反射&#xff1a;解析类的秘密 Java反射是一项强大的功能&#xff0c;允许开发人员在运行时检查、操作和实例化类、方法、字段以及其他Java程序中的元素。这种能力赋予了Java语言更大的灵活性和动态性&#xff0c;但也需要慎重使用&#xff0c;因为它可能会导致性能问题和…

[Halcon检测] 划痕检测之高斯导数提取

&#x1f4e2;博客主页&#xff1a;https://loewen.blog.csdn.net&#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;本文由 丶布布原创&#xff0c;首发于 CSDN&#xff0c;转载注明出处&#x1f649;&#x1f4e2;现…

带你了解小程序的框架之谜

&#x1f3c5;我是默&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《微信小程序 》。&#x1f3af;&#x1f3af; &#x1f680;无论你是编程小白&#xff0c;还是有一定基础的程序员&#xff0c;…

BUUCTF学习(6): 命令执行ip

1、介绍 2、hackbar安装 BUUCTF学习(四): 文件包含tips-CSDN博客 ?ip127.0.0.1;ag;cat$IFS$9fla$a.php 空格过滤 $IFS$9 检查源代码 结束