Asciidoctor-pdf生成pdf文件
本文使用asciidoc语法编写。
= Asciidoctor-pdf生成pdf文件
Pinnsvin Pinnsvin@163.com
v1.0 {docdate}
:plantuml-server-url: https://www.plantuml.com/plantuml
:toc:
:doctype: article
:imagesdir: ../images
// enable font awesome
:icons: font
// enable UI
:experimental:
:source-highlighter: rouge
:idprefix: id_
== 简述
asciidoctor-pdf是Asciidoctor一个使用Prawn将asciidoc文档转换成pdf的插件,由Asciidoctor组织开发维护,托管在 link:https://github.com/asciidoctor/asciidoctor-pdf[GitHub] 上,本文将简单介绍下这个插件的使用,部分内容来源于官方。
== 安装
.使用gem安装
....
$ gem install asciidoctor-pdf
....
.语法高亮支持
Rouge (preferred, minimum version: 2.0.0)
....
$ gem install rouge
....
Pygments
....
$ gem install pygments.rb
....
CodeRay
....
$ gem install coderay
....
启用语法高亮,只需要在.adoc文档头部填写如下内容即可:
....
:source-highlighter: rouge
....
== 使用
基本命令,转换asciidoc成为pdf
....
$ asciidoctor-pdf basic-example.adoc
$ # 这两个命令是等效的,只不过上边的命令更加简洁
$ asciidoctor -r asciidoctor-pdf -b pdf basic-example.adoc
....
这里需要说明一下,如果文档中包含中文,初次转换的时候会出现乱码的问题。解决方式请看 link:id_中文乱码问题[中文乱码问题] 章节。
== 我是占位符
后续新增内容区间
== 问题
=== 中文乱码问题
如果文档中包含中文,初次转换的时候会出现乱码的问题。这里简单介绍下asciidoctor-pdf的默认主题。如果查阅了asciidoctor-pdf的帮助文档,就会知道他支持自定义主题的。中文乱码的原因也是由于默认主题中使用了非中文字体导致的,需要添加中文字体。这里有两种解决方式可供选择:
- 创建项目/用户主题
项目和用户的创建方式一样,不同的是二者存储的位置不一样,用户的存储在一个固定文件夹,比如~/.config/adoc, 只要使用命令生成的时候填写了正确的路径即可。
====
- 在adoc所在文件下新建 icon:folder[] fonts文件夹,将中文字体复制到 icon:folder[] fonts文件夹中
- 复制asciidoctor-pdf安装目录中的 icon:file[]
data/themes/default-theme.yml到当前目录,或者新建一个 icon:file[] theme.yml - 编辑修改
default-theme.yml内容,主要节点:
....
font:
catalog:
song: # 宋体,请保证fonts文件中包含如下字体
normal: STSONG.TTF
bold: STSONG.TTF
italic: STSONG.TTF
bold_italic: STSONG.TTF
base:
# 设置字体
font_family: song
literal:
font_family: song
.... 生成pdf
....
$ asciidoctor-pdf -a pdf-style=default-theme.yml -a pdf-fontsdir=fonts test.adoc
....
====默认主题
查看icon:file[]../bin/asciidoctor-pdf源码,看到他实际使用的是 icon:file[] ../../lib/asciidoctor/pdf.rb,我们再查看下这个ruby文件,发现这个又重新定位到 icon:folder[] ../asciidoctor-pdf文件夹,即icon:folder[] ../lib/asciidoctor-pdf,其中包含了 icon:file[] theme_loader.rb,继续查看这个文件,阅读源码之后,发现默认会先加载主题 icon:file[] data\themes\base-theme.yml,如果这个不存在会加载data\themes\default-theme.yml,也就是说base-theme.yml的优先级比default-theme.yml高,我们需要更改base-theme.yml内容。主要修改内容同 ##创建项目/用户主题## 章节是一样的。修改完成之后,此后只需要执行:
....
$ asciidoctor-pdf test.adoc
....
或者我们可以修改default-theme.yml,或者创建自己的主题文件,此后生成需要指明主题文件:
....
$ asciidoctor-pdf -a pdf-style=default-theme.yml test.adoc
....
如果以上两种解决方法不合你心意,那你可以参考下 link:https://github.com/chloerei/asciidoctor-pdf-cjk-kai_gen_gothic[asciidoctor-pdf-cjk-kai_gen_gothic] 这个项目,这是一个asciidoc-pdf的主题项目,主要用于支持CJK footnote:[中日韩统一表意文字(CJK Unified Ideographs)] ,支持中文简体、繁体、韩语、日语等。
Asciidoctor-pdf生成pdf文件的更多相关文章
- 【PDF】java使用Itext生成pdf文档--详解
[API接口] 一.Itext简介 API地址:javadoc/index.html:如 D:/MyJAR/原JAR包/PDF/itext-5.5.3/itextpdf-5.5.3-javadoc/ ...
- Vue 生成PDF并下载
实现原理 该功能原理是将页面转化伟canvas在把canvas转化为base64数据 最后将数据通过pdf.js生成下载,故需要和html2canvas一起使用 友情提醒这个pdf下载不能在app里直 ...
- 实践指南-网页生成PDF
一.背景 开发工作中,需要实现网页生成 PDF 的功能,生成的 PDF 需上传至服务端,将 PDF 地址作为参数请求外部接口,这个转换过程及转换后的 PDF 不需要在前端展示给用户. 二.技术选型 该 ...
- Javascript 将 HTML 页面生成 PDF 并下载
最近碰到个需求,需要把当前页面生成 pdf,并下载.弄了几天,自己整理整理,记录下来,我觉得应该会有人需要 :) html2canvas 简介 我们可以直接在浏览器端使用html2canvas,对整个 ...
- js将 HTML 页面生成 PDF 并下载
最近碰到个需求,需要把当前页面生成 pdf,并下载.弄了几天,自己整理整理,记录下来,我觉得应该会有人需要 :) 先来科普两个插件: html2Canvas 简介 我们可以直接在浏览器端使用html2 ...
- linux下编译bib、tex生成pdf文件
实验: 在linux环境下,编译(英文)*.bib和*.tex文件,生成pdf文件. 环境: fedora 20(uname -a : Linux localhost.localdomain 3.19 ...
- 【Java】使用iText生成PDF文件
iText介绍 iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成PDF或rtf的文档,而且可以将XML.Html文件转 ...
- ThinkPHP3.2.3扩展之生成PDF文件(MPDF)
目前是PHP生成PDF文件最好的插件了,今天介绍下在ThinkPHP3.2.3里如何使用. 先安照路径放好如图. 下面是使用方法 public function pdf(){ //引入类库 Vendo ...
- [轉載]史上最强php生成pdf文件,html转pdf文件方法
之前有个客户需要把一些html页面生成pdf文件,然后我就找一些用php把html页面围成pdf文件的类.方法是可谓是找了很多很多,什么html2pdf,pdflib,FPDF这些都试过了,但是都没有 ...
随机推荐
- 手写 Promise
在上一章节中我们了解了 Promise 的一些易错点,在这一章节中,我们会通过手写一个符合 Promise/A+ 规范的 Promise 来深入理解它,并且手写 Promise 也是一道大厂常考题,在 ...
- kali-2019.4中文乱码问题的解决
1.安装完kali-2019.4版出现乱码问题 2.更新源,用vi编辑器,在/etc/apt/resources.list中添加清华源 #清华大学 [更新源]deb https://mirrors.t ...
- Mybatis基础(二)
Mybatis连接池 Mybatis连接池提供了三种配置方式,配置的位置在SqlMapConfig.xml的dataSource标签中,其type属性就是配置连接池的种类.type的可取值 1.POO ...
- centos7安装mysql-5.7.28
mysql是我们最常用的开源的关系型数据库,mysql不同版本有时候安装的方式也不尽相同,下面以mysql5.7.28版本为例梳理一下安装细节: 1.下载mysql-5.7.28,URL:https: ...
- sql serverDB运维实用sql大全
运维sql server的sql总结,包含阻塞语句.等待语句.某个时间段的sql性能查询等等常用sql语句 ##断开库的连接,记得修改库名 USE masterGOALTER DATABASE [DB ...
- 基于Arduino开发的简易“高水位报警系统解决方案”
长期以来,针对“某些办公室空调没有排水系统,只能用水桶接水,经常造成水漫金山的问题”而提出来的. 材料:Arduino开发板一块.水位传感器一个.高电平蜂鸣器一个.杜邦线若干. 原理:将水位传感器置于 ...
- tmobst6an
(单选题)Oracle数据库中,在SQL语句中连接字符串的方法是:(). A)CAT B)CONCAT C)JOIN D)UNION 解析:Oracle可以使用CONCAT关键字或"||&q ...
- bjut校园网自动登录
主要是懒得每次上网都需要打开网页=.= logon.bat @echo off mode con: cols=40 lines=15 color 0a title 登录ing... rem 获得IP ...
- Android Webview实现有道电子词典
毕业设计android电子词典,先实现的一个小小的demo. 所谓的毕业设计就是用最短的时间学习一门语言,做出一个小的project. activity_main.xml <LinearLayo ...
- Codeforces Round #620 F2. Animal Observation (hard version) (dp + 线段树)
Codeforces Round #620 F2. Animal Observation (hard version) (dp + 线段树) 题目链接 题意 给定一个nm的矩阵,每行取2k的矩阵,求总 ...