直播|DITA内容发布工具解析 - 问答总结

9月6日,我们进行了一场名为“DITA内容发布工具解析”的直播。通过直播,大家了解到:

  • DITA-OT简介

  • 默认输出效果

  • 定制以后输出效果

  • 发布过程与样式定制

在问答环节,大家进行了热烈沟通。我将几个大家关心的问题和答复总结如下:

Q: 什么样的格式定制需要用到第三种方式? (即:制作DITA-OT Plug-in实现样式定制)

A: CSS能控制内容的页眉页脚、字体、颜色、对齐方式、显示或者不显示、显示方式等。能完成不需要动内容的定制。但是CSS本身不能生成数据或者处理数据。下边这种情形会用到第三种方式。

例如:下边是DITA-OT的用户指南,需要根据XML内容,生成一个索引页(这个索引页不在DITA源文件中,而是自动生成的)。在输出的HTML和PDF文件的索引页中,点关键字可以链接到关键字所在的内容。如下图:

一种可能的办法在HTML渲染成PDF的过程执行某种逻辑,生成这个索引页的内容。在浏览器中渲染和显示HTML过程中,是可以用JavaScript语言来执行一些数据处理逻辑的。 

注:JavaScript是一种Web编程语言,可以在浏览器中执行,可以操纵HTML。

但是,在将HTML渲染成PDF过程中,并不支持JavaScript,所以这个过程无法生成索引页内容。

另一思路就是在将XML转换成HTML过程中就生成这个索引页。这个可以通过制作一个DITA-OT插件来完成。Oxygen的发布引擎就是通过这种方式实现的。 

Q: Markdown能做多格式发布吗?

A: 可以。

从DITA-OT 3.0开始,它支持将Markdown作为输入格式。确切地讲是Topic文件支持使用Markdown编写,Map文件在DITA-OT 4.0之前需要使用XML编写。到DITA-OT 4.0也支持用Markdown编写Map文件了。

在发布过程中,如果是Markdown格式的文档,首先会被转换成DITA格式,然后用发布DITA的方式统一处理了。

很多软件都提供将Markdown输出成PDF格式,但是大多数都只能达到“能看”的程度,达不到工业级标准。DITA-OT发布方案使用W3C标准,能发布工业级标准的输出。

Q: DITA-OT输出的PDF是否支持印刷用的CMYK颜色

A: CMYK是彩色印刷时采用的一种套色模式,利用色料的三原色混色原理,加上黑色油墨,共计四种颜色混合叠加,形成所谓“全彩印刷”。

DITA-OT是使用第三方的PDF生成引擎来生成PDF文件的。所以,这个问题其实是DITA-OT调用生成PDF的引擎是否支持CMYK。 

我们用Oxygen中的DITA-OT使用CSS发布,支持搭载这几个引擎(CSS到PDF):

  • Oxygen PDF Chemistry

  • Prince XML

  • Antenna House

是否支持CMYK,需要查看这些引擎的文档。

1) Oxygen PDF Chemistry

Chemistry后台使用的是FOP。

在Oxygen发布引擎官方文档中未找到关于CMYK的相关信息。

查看了FOP文档,提到了颜色,但也未找到CMYK支持的信息。这里列了一些支持的颜色函数:

https://xmlgraphics.apache.org/fop/compliance.html

2) Prince XML

根据Prince XML文档,它支持CMYK:

https://www.princexml.com/doc/graphics/#color

3) Antenna House

根据Antenna House文档,它支持CMYK:

https://www.antenna.co.jp/AHF/help/en/ahf-pdf.html

Q: 能否让XSL-FO理解CSS?

A: W3C这个组织为了渲染设计了这两套语言:

  • XSL-FO - 用于基于页面的渲染

  • CSS - 用于Web页面的渲染

这样发展了很多年以后,大家发现XSL-FO进步很慢,到今天XSL-FO还是用的2006年发布的1.1版 (https://www.w3.org/TR/xsl11/)。

反观CSS,发展迅速很多。2023年CSS有不同方面的标准推出。 

关于支持用CSS实现页面发布的引擎,其中的Oxygen Chemistry的做法是使用HTML + CSS 生成XSL-FO,然后通过FOP将XSL-FO生成PDF。 

它就是某种程度地让XSL-FO理解CSS。如果自己实现是可能的,不过有很多细节要处理。 

注:W3C全称是万维网联盟(World Wide Web Consortium)。这个组织设计了很多知名的、我们每天都用的Web标准,比如:HTML,CSS等。

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

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

相关文章

Vue2进阶篇学习笔记

文章目录 Vue2进阶学习笔记前言1、Vue脚手架学习1.1 Vue脚手架概述1.2 Vue脚手架安装1.3 常用属性1.4 插件 2、组件基本概述3、非单文件组件3.1 非单文件组件的基本使用3.2 组件的嵌套 4、单文件组件4.1 快速体验4.2 Todo案例 5、浏览器本地存储6、组件的自定义事件6.1 使用自定…

k8s集群calio网络问题

k8s calio节点报错 Readiness probe failed: calico/node is not ready: BIRD is not ready: BGP not established with 172.24.0.12023-09-07 05:42:37.176 [INFO][200] health.go 156: Number of node(s) with BGP peering established 0这个错误是由于不同主机网卡不一致造…

【Image captioning】Dual-Level Collaborative Transformer for Image Captioning在自定义数据集的调试与实现(过程完整详细)

Dual-Level Collaborative Transformer for Image Captioning在自定义数据集的调试与实现(过程完整详细) 作者:安静到无声 个人主页 目录 Dual-Level Collaborative Transformer for Image Captioning在自定义数据集的调试与实现(过程完整详细)环境配置生成 region featu…

MySQL 全局锁、表级锁、行锁详解

前言 MySQL 里面的锁大致可以分成全局锁、表级锁和行锁三类,全局锁和表级锁是在server层实现的。 全局锁 全局锁就是对整个数据库实例加锁。MySQL 提供了一个加全局读锁的方法,命令是 Flush tables with read lock (FTWRL)。当你需要让整个库处于只读状…

beetlsql3.x版本适配达梦数据库

BeetlSQL介绍 BeetlSQL的目标是提供开发高效,维护高效,运行高效的数据库访问框架,在一个系统多个库的情况下,提供一致的编写代码方式。支持如下数据平台 传统数据库:MySQL(国内兼容MySQL协议的各种大数据库),MariaDB…

软件测试/测试开发丨测试用例自动录入 学习笔记

点此获取更多相关资料 本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接:https://ceshiren.com/t/topic/27139 测试用例自动录入 测试用例自动录入的价值 省略人工同步的步骤,节省时间 兼容代码版本的自动化测试用例 用例的执行与调度统一化管理…

新时代的监控系统--网站可观测性的基础功能

观测云RUM基础功能 更快地故障调试速度 理解用户体验,包括应用性能数据,比如网站核心指标等实时识别报错的设备、系统或国家,快速标注错误的部位解决客户端错误,包括特定用户,包括一键定位代码错误 监控100%前端错误和…

【数据结构】红黑树的插入与验证

文章目录 一、基本概念1.时代背景2. 基本概念3.基本性质 二、实现原理1. 插入1.1变色1.2旋转变色①左旋②右旋③右左双旋④左右双旋 2.验证 源码总结 一、基本概念 1.时代背景 1972年鲁道夫拜尔(Rudolf Bayer)发明了一种数据结构,这是一种特殊的B树4阶情况。这些树…

go初识iris框架(四) -框架设置操作

前言 iris(1) iris(2) iris(3) 框架设置操作 当我们的一个路径是xxx/user/info,xxx/user/login,xxx/user/register的时候,我们发现前面都有一个user,我们如果用/{data:string}这样的话这样导致我们的路径是灵活的,所以我们得用其他方法 这里我们的路径是以anime为…

蓝桥杯打卡Day6

文章目录 N的阶乘基本算术整数查询 一、N的阶乘OI链接 本题思路&#xff1a;本题是关于高精度的模板题。 #pragma GCC optimize(3) #include <bits/stdc.h>constexpr int N1010;std::vector<int> a; std::vector<int> f[N];std::vector<int> mul(in…

MATLAB入门-数据的导入和导出

MATLAB入门-数据的导入和导出 注&#xff1a;本篇文章是课程学习笔记&#xff0c;课程链接为&#xff1a;头歌 常见的几个导入数据的方法 load函数 load函数专门用于引入MATLAB的.mat格式数据&#xff0c;十分的简单方便。 例如&#xff1a;一个-ASCII编码形式存储的数据文件…

使用本地mysql+linux实现mysql主从同步

1.配置linux 保证linux已经安装好了mysql1.1修改该linux配置文件 vim /etc/my.cnf1.2重启linux的mysql systemctl restart mysqld1.3使用账户密码登录linux中的mysql,查看是否配置成功 mysql> show master status;若显示有FIile和Posttion就表示注linux的主节点配置成功…

【算法】一文带你从浅至深入门dp动态规划

文章目录 一、前言二、动态规划理论基础1、基本概念2、动态规划五部曲【✔】3、出错了如何排查&#xff1f; 三、实战演练&#x1f5e1;0x00 斐波那契数0x01 第N个泰波那契数0x02 爬楼梯0x03 三步问题0x04 使用最小花费爬楼梯⭐解法一解法二 0x05 解码方法* 四、总结与提炼 一、…

【软考】系统架构设计师-历年论文题目(2013-2022)

2013-2022年系统架构设计师历年论文题目如下&#xff1a; 时间 题目 2013 1.论软件架构建模技术与应用&#xff1b;2.论企业应用系统的分层架构风格&#xff1b;3.论软件可靠性设计技术的应用&#xff1b;4.论分布式存储系统架构设计 2014 1.论软件需求管理&#xff1b;2.…

蓝桥杯官网填空题(数位和)

题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 数学家高斯很小的时候就天分过人。一次老师指定的算数题目是&#xff1a;12...100。 高斯立即做出答案&#xff1a;5050! 这次你的任务是类似的。但并非是把一个个…

输入时并未按照格式,没注意汉字符号

&#x1f388;问题现象&#xff1a; 运行出来的代码没得到想要的结果&#xff1a; &#x1f388;原因分析&#xff1a; 程序运行起来了&#xff0c;计算的结果是错误的&#xff0c;这个最好的解决办法就是调试&#xff0c;一步步的看代码在每个阶段的值是不是我们期望的&…

9.5QTday6作业

面试题1&#xff1a;c语言中的static和c中的static的用法 在c语言中&#xff1a; 1.static修饰的全局变量作用域限制在当前文件&#xff0c;无法被外部文件所引用。2.static修饰的局部变量延长生命周期&#xff0c;但不改变作用域&#xff0c;同样无法被外部文件所引用。3.st…

docker-compose deploy 高可用 elasticsearch TLS

文章目录 1.sysctl2. swap3. hosts4. 配置 instances.yaml5. 创建证书6. 部署7. 修改 kibanna 密码8. 清理 1.sysctl [rootgithub es_tls]# cat /etc/sysctl.conf # sysctl settings are defined through files in # /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/…

Redis优化 RDB AOF持久化

---------------------- Redis 高可用 ---------------------------------------- 在web服务器中&#xff0c;高可用是指服务器可以正常访问的时间&#xff0c;衡量的标准是在多长时间内可以提供正常服务&#xff08;99.9%、99.99%、99.999%等等&#xff09;。 但是在Redis语境…

【SpringMVC】实现增删改查(附源码)

目录 引言 一、前期准备 1.1.搭建Maven环境 1.2.导入pom.xml依赖 1.3.导入配置文件 ①jdbc.properties ②generatorConfig.xml ③log4j2.xml ④spring-mybatis.xml ⑤spring-context.xml ⑥spring-mvc.xml ⑦修改web.xml文件 二、逆向生成增删改查 2.1.导入相关u…