asciidoctor-pdf 1.5.0.alpha.15 → 1.5.0.alpha.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.adoc +31 -1
- data/Gemfile +11 -6
- data/README.adoc +22 -11
- data/Rakefile +1 -1
- data/asciidoctor-pdf.gemspec +3 -3
- data/data/themes/default-theme.yml +1 -1
- data/docs/theming-guide.adoc +43 -16
- data/lib/asciidoctor-pdf/converter.rb +55 -47
- data/lib/asciidoctor-pdf/prawn_ext/extensions.rb +20 -17
- data/lib/asciidoctor-pdf/prawn_ext/font/afm.rb +10 -2
- data/lib/asciidoctor-pdf/prawn_ext/images.rb +1 -1
- data/lib/asciidoctor-pdf/theme_loader.rb +14 -2
- data/lib/asciidoctor-pdf/version.rb +1 -1
- metadata +9 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f8bc83ea1a53067222edc4efed9a4e23d7b98824
|
4
|
+
data.tar.gz: 55b679cc587279f0491af7aec91878c6acca01c9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 632d25962bc66acf9b8b015a1e76b85e69a4f7a7b516cc9ea24c411e4b4db6e5280f23145c9beae321cfcd7b835821e86f0d81f6b4fa1731847eb6fa27e90bf7
|
7
|
+
data.tar.gz: 477e19845f08bba51aee292c662e2ec6cad47d814ba683959ec23c7eaf0615e7c32a6b1ebe4b565f036d47bc88b02971f7e83c6cfcb2083c26ef148ffe838ffc
|
data/CHANGELOG.adoc
CHANGED
@@ -5,10 +5,37 @@
|
|
5
5
|
This document provides a high-level view of the changes to the {project-name} by release.
|
6
6
|
For a detailed view of what has changed, refer to the {uri-repo}/commits/master[commit history] on GitHub.
|
7
7
|
|
8
|
+
== 1.5.0.alpha.16 (2017-07-30) - @mojavelinux
|
9
|
+
|
10
|
+
* add support for xrefstyle attribute (#464)
|
11
|
+
* allow page side to be based on physical page number and/or be inverted (#813) (@fap-)
|
12
|
+
* fix layout error caused by nested keep together blocks (#791)
|
13
|
+
* upgrade prawn-svg to allow generic font names to be mapped in SVG (#777)
|
14
|
+
* upgrade prawn-svg to fix issue with dotted lines (#741)
|
15
|
+
* upgrade prawn-svg to enable linear gradients (#228)
|
16
|
+
* don't attempt to parse text in literal cell (#816)
|
17
|
+
* warn if theme variable cannot be resolved; don't replace (#801)
|
18
|
+
* number appendix subsections based on appendix number when doctype is book (#627)
|
19
|
+
* don't add break hints to URI when using AFM font (#795)
|
20
|
+
* add rescue check for scratch document when state is not initialized
|
21
|
+
* allow page margin to be a single number; fixes regression introduced by #749
|
22
|
+
* check for margin as array, then as numeric, then as string
|
23
|
+
* extend version range for prawn-templates (#803)
|
24
|
+
* add missing part-title attribute to theming guide (#827)
|
25
|
+
* clarify in theming guide that variables are defined in document order
|
26
|
+
* clarify that the fallback font is only used when the primary font is a TrueType font
|
27
|
+
* add more information about prawn-gmagick to README
|
28
|
+
* fix warnings and incompatibility when using Ruby 1.9.3
|
29
|
+
* document in README how to install Asciidoctor PDF on Ruby 2.0.0
|
30
|
+
* enable Travis CI; configure CI-based deployment to RubyGems.org
|
31
|
+
|
32
|
+
{uri-repo}/issues?q=milestone%3Av1.5.0.alpha.16[issues resolved] |
|
33
|
+
{uri-repo}/releases/tag/v1.5.0.alpha.16[git tag]
|
34
|
+
|
8
35
|
== 1.5.0.alpha.15 (2017-03-27) - @mojavelinux
|
9
36
|
|
10
37
|
* fix compatibility with Prawn 2.2.0 (#775)
|
11
|
-
* add workaround for TTFunk bug when font table has empty data
|
38
|
+
* add workaround for TTFunk bug when font table has empty data (#619, #651)
|
12
39
|
* take fallback font into account when calculating width of string (#651)
|
13
40
|
* fill and stroke bounds of sidebar across all pages (#259) (@TobiasHector)
|
14
41
|
* allow page margin to be set using pdf-page-margin attribute (#749)
|
@@ -36,6 +63,9 @@ For a detailed view of what has changed, refer to the {uri-repo}/commits/master[
|
|
36
63
|
* document that background images are scaled to fit bounds of page
|
37
64
|
* add note in theming guide about using double quoted strings
|
38
65
|
|
66
|
+
{uri-repo}/issues?q=milestone%3Av1.5.0.alpha.15[issues resolved] |
|
67
|
+
{uri-repo}/releases/tag/v1.5.0.alpha.15[git tag]
|
68
|
+
|
39
69
|
== 1.5.0.alpha.14 (2017-02-05) - @mojavelinux
|
40
70
|
|
41
71
|
* add support for AsciiDoc table cells (including nested tables) (#6)
|
data/Gemfile
CHANGED
@@ -1,14 +1,19 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
|
3
|
-
if (Gem::Version.new RUBY_VERSION) < (Gem::Version.new '2.0.0')
|
4
|
-
gem 'addressable', '2.4.0'
|
5
|
-
gem 'prawn', '1.3.0'
|
6
|
-
gem 'prawn-svg', '0.21.0'
|
7
|
-
end
|
8
|
-
|
9
3
|
# Look in asciidoctor-pdf.gemspec for runtime and development dependencies
|
10
4
|
gemspec
|
11
5
|
|
6
|
+
if (ruby_version = Gem::Version.new RUBY_VERSION) < (Gem::Version.new '2.1.0')
|
7
|
+
if ruby_version < (Gem::Version.new '2.0.0')
|
8
|
+
gem 'addressable', '2.4.0'
|
9
|
+
gem 'prawn', '1.3.0'
|
10
|
+
gem 'prawn-svg', '0.21.0'
|
11
|
+
else
|
12
|
+
gem 'prawn', '2.1.0'
|
13
|
+
gem 'prawn-svg', '0.26.0'
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
12
17
|
group :examples do
|
13
18
|
gem 'rouge', '2.0.7'
|
14
19
|
# Add unicode (preferred) or activesupport to transform case of text containing multibyte chars on Ruby < 2.4
|
data/README.adoc
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
= Asciidoctor PDF: A native PDF converter for AsciiDoc
|
2
2
|
Dan Allen <https://github.com/mojavelinux[@mojavelinux]>; Sarah White <https://github.com/graphitefriction[@graphitefriction]>
|
3
|
-
v1.5.0.alpha.
|
3
|
+
v1.5.0.alpha.16, 2017-07-30
|
4
4
|
// Settings:
|
5
5
|
:experimental:
|
6
6
|
:idprefix:
|
@@ -121,19 +121,29 @@ To check if you have Ruby available, use the `ruby` command to query the version
|
|
121
121
|
|
122
122
|
[WARNING]
|
123
123
|
====
|
124
|
-
By default, Asciidoctor PDF
|
125
|
-
|
126
|
-
|
124
|
+
By default, Asciidoctor PDF automatically installs the latest version of Prawn if you don't already have Prawn installed.
|
125
|
+
This will fail on older versions of Ruby.
|
126
|
+
To workaround, you need to install certain dependencies first.
|
127
127
|
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
128
|
+
Starting with Prawn 2.0.0, Prawn requires Ruby >= 2.0.0 during installation.
|
129
|
+
Therefore, to use Asciidoctor PDF with Ruby 1.9.3, you must first explicitly install the following dependencies to lock the versions:
|
130
|
+
|
131
|
+
$ gem install prawn --version 1.3.0
|
132
|
+
gem install addressable --version 2.4.0
|
133
|
+
gem install prawn-svg --version 0.21.0
|
134
|
+
gem install prawn-templates --version 0.0.3
|
132
135
|
|
133
136
|
You can then proceed with installation of Asciidoctor PDF on Ruby 1.9.3.
|
134
137
|
|
138
|
+
Starting with Prawn 2.2.0, Prawn requires Ruby >= 2.1.0 during installation.
|
139
|
+
Therefore, to use Asciidoctor PDF with Ruby 2.0.0, you must first explicitly install the following dependencies to lock the versions:
|
140
|
+
|
141
|
+
$ gem install prawn --version 2.1.0
|
142
|
+
gem install prawn-svg --version 0.26.0
|
143
|
+
gem install prawn-templates --version 0.0.4
|
144
|
+
|
135
145
|
For all other versions of Ruby, you can simply install the Asciidoctor PDF gem.
|
136
|
-
It will transitively install
|
146
|
+
It will transitively install the required dependencies.
|
137
147
|
====
|
138
148
|
|
139
149
|
=== System Encoding
|
@@ -454,8 +464,9 @@ To perform this work, Asciidoctor delegates to the underlying libraries.
|
|
454
464
|
{uri-prawn-svg}[prawn-svg] brings support for SVG images.
|
455
465
|
Without any additional libraries, those are the only supported image file formats.
|
456
466
|
|
457
|
-
If you need support for additional
|
458
|
-
prawn-gmagick is an extension for Prawn based on {uri-graphicsmagick}[GraphicsMagick]
|
467
|
+
If you need support for additional image formats, such as GIF, TIFF, or interlaced PNG--and you don't want to convert those images to a supported format--you must install the {uri-prawn-gmagick}[prawn-gmagick] Ruby gem.
|
468
|
+
prawn-gmagick is an extension for Prawn based on {uri-graphicsmagick}[GraphicsMagick] that adds support for all the image formats recognized by that library.
|
469
|
+
prawn-gmagick has the added benefit of significantly reducing the time it takes to generate a PDF containing a lot of images.
|
459
470
|
|
460
471
|
The prawn-gmagick gem uses native extensions to compile against GraphicsMagick.
|
461
472
|
This system prerequisite limits installation to Linux and OSX.
|
data/Rakefile
CHANGED
data/asciidoctor-pdf.gemspec
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
require File.expand_path
|
2
|
+
require File.expand_path '../lib/asciidoctor-pdf/version', __FILE__
|
3
3
|
require 'open3' unless defined? Open3
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
@@ -43,9 +43,9 @@ An extension for Asciidoctor that converts AsciiDoc documents to PDF using the P
|
|
43
43
|
s.add_runtime_dependency 'prawn', '>= 1.3.0', '< 2.3.0'
|
44
44
|
s.add_runtime_dependency 'prawn-table', '0.2.2'
|
45
45
|
# prawn-templates >= 0.0.5 requires prawn >= 2.2.0, so we must cast a wider net to support Ruby 1.9.3
|
46
|
-
s.add_runtime_dependency 'prawn-templates', '>= 0.0.3', '<= 0.
|
46
|
+
s.add_runtime_dependency 'prawn-templates', '>= 0.0.3', '<= 0.1.1'
|
47
47
|
# prawn-svg >= 0.22.1 requires Ruby >= 2.0.0, so we must cast a wider net to support Ruby 1.9.3
|
48
|
-
s.add_runtime_dependency 'prawn-svg', '>= 0.21.0', '< 0.
|
48
|
+
s.add_runtime_dependency 'prawn-svg', '>= 0.21.0', '< 0.28.0'
|
49
49
|
s.add_runtime_dependency 'prawn-icon', '1.3.0'
|
50
50
|
s.add_runtime_dependency 'safe_yaml', '~> 1.0.4'
|
51
51
|
s.add_runtime_dependency 'thread_safe', '~> 0.3.6'
|
@@ -25,7 +25,7 @@ page:
|
|
25
25
|
background_color: ffffff
|
26
26
|
layout: portrait
|
27
27
|
margin: [0.5in, 0.67in, 0.67in, 0.67in]
|
28
|
-
# margin_inner and margin_outer keys are used for recto/verso print margins when media=
|
28
|
+
# margin_inner and margin_outer keys are used for recto/verso print margins when media=prepress
|
29
29
|
margin_inner: 0.75in
|
30
30
|
margin_outer: 0.59in
|
31
31
|
size: A4
|
data/docs/theming-guide.adoc
CHANGED
@@ -201,10 +201,14 @@ Any setting from an enclosing context, such as a sidebar, is skipped.
|
|
201
201
|
=== Variables
|
202
202
|
|
203
203
|
To save you from having to type the same value in your theme over and over, or to allow you to base one value on another, the theme language supports variables.
|
204
|
-
Variables consist of the key name preceded by a dollar (`$`) (e.g., `$base_font_size`).
|
204
|
+
Variables consist of the key name preceded by a dollar sign (`$`) (e.g., `$base_font_size`).
|
205
205
|
Any qualified key that has already been defined can be referenced in the value of another key.
|
206
206
|
(In order words, as soon as the key is assigned, it's available to be used as a variable).
|
207
207
|
|
208
|
+
IMPORTANT: Variables are defined from top to bottom (i.e., in document order).
|
209
|
+
Therefore, a variable must be defined before it is referenced.
|
210
|
+
In other words, the path the variable refers to must be *above* the usage of that variable.
|
211
|
+
|
208
212
|
For example, once the following line is processed,
|
209
213
|
|
210
214
|
[source,yaml]
|
@@ -650,9 +654,9 @@ Asciidoctor PDF encodes the content into WINANSI when building the PDF.
|
|
650
654
|
When using the built-in PDF (AFM) fonts on a block of content in your AsciiDoc document, any character that cannot be encoded to WINANSI is replaced with a logic "`not`" glyph (`¬`) and you'll see the following warning in your console:
|
651
655
|
|
652
656
|
The following text could not be fully converted to the Windows-1252 character set:
|
653
|
-
| <glyph>
|
657
|
+
| <string with unknown glyph>
|
654
658
|
|
655
|
-
This behavior differs from the default behavior in Prawn.
|
659
|
+
This behavior differs from the default behavior in Prawn, which simply crashes.
|
656
660
|
|
657
661
|
For more information about how Prawn handles character encodings for built-in fonts, see https://github.com/prawnpdf/prawn/blob/master/CHANGELOG.md#vastly-improved-handling-of-encodings-for-pdf-built-in-afm-fonts[this note in the Prawn CHANGELOG].
|
658
662
|
****
|
@@ -765,8 +769,11 @@ This will allow you to use the same font names (aka families) in both your graph
|
|
765
769
|
|
766
770
|
=== Fallback Fonts
|
767
771
|
|
768
|
-
If
|
769
|
-
You only need to specify
|
772
|
+
If a TrueType font is missing a character needed to render the document, such as a special symbol, you can have Asciidoctor PDF look for the character in a fallback font.
|
773
|
+
You only need to specify a single fallback font, typically one that provides a full set of symbols.
|
774
|
+
|
775
|
+
IMPORTANT: The fallback font is only used when the primary font is a TrueType font (i.e., TTF, DFont, TTC).
|
776
|
+
Any glyph missing from an AFM font is simply replaced with the "`not`" glyph (`¬`).
|
770
777
|
|
771
778
|
CAUTION: Using the fallback font slows down PDF generation slightly because it has to analyze every single character.
|
772
779
|
It's use is not recommended for large documents.
|
@@ -817,31 +824,43 @@ font:
|
|
817
824
|
|
818
825
|
TIP: If you are using more than one fallback font, add additional lines to the `fallbacks` key.
|
819
826
|
|
827
|
+
Of course, make sure you've configured your theme to use your custom font:
|
828
|
+
|
829
|
+
[source,yaml]
|
830
|
+
----
|
831
|
+
base:
|
832
|
+
font_family: Roboto
|
833
|
+
----
|
834
|
+
|
820
835
|
That's it!
|
821
836
|
Now you're covered.
|
822
|
-
|
837
|
+
If your custom font is missing a glyph, Asciidoctor PDF will look in your fallback font.
|
838
|
+
You don't need to reference the fallback font anywhere else in your theme file.
|
823
839
|
|
824
840
|
== Keys
|
825
841
|
|
826
842
|
This section lists all the keys that are available when creating a custom theme.
|
827
|
-
The keys
|
843
|
+
The keys are organized by category.
|
828
844
|
Each category represents a common prefix under which the keys are typically nested.
|
829
845
|
|
830
|
-
TIP: Keys can be
|
831
|
-
This nested structure is
|
846
|
+
TIP: Keys can be nested wherever an underscore (`_`) appears in the name.
|
847
|
+
This nested structure is for organizational purposes only.
|
848
|
+
All keys are flatted when the theme is loaded (e.g., `align` nested under `base` becomes `base_align`).
|
832
849
|
|
833
850
|
The converter uses the values of these keys to control how most elements are arranged and styled in the PDF.
|
834
851
|
The default values listed in this section get inherited from the https://github.com/asciidoctor/asciidoctor-pdf/blob/master/data/themes/base-theme.yml[base theme].
|
835
|
-
|
852
|
+
|
853
|
+
IMPORTANT: The https://github.com/asciidoctor/asciidoctor-pdf/blob/master/data/themes/default-theme.yml[default theme] has a different set of values which are not shown in this guide.
|
836
854
|
|
837
855
|
When creating a theme, all keys are optional.
|
838
856
|
Required keys are provided by the base theme.
|
839
|
-
Therefore, you only have to
|
857
|
+
Therefore, you only have to declare keys that you want to override.
|
840
858
|
|
841
859
|
[#keys-page]
|
842
860
|
=== Page
|
843
861
|
|
844
862
|
The keys in this category control the size, margins and background of each page (i.e., canvas).
|
863
|
+
We recommended that you define this category before all other categories.
|
845
864
|
|
846
865
|
NOTE: The background of the title page can be styled independently.
|
847
866
|
See <<Title Page>> for details.
|
@@ -909,7 +928,9 @@ These margins and used when the value `prepress` is assigned to the `media` docu
|
|
909
928
|
=== Base
|
910
929
|
|
911
930
|
The keys in this category provide generic theme settings and are often referenced throughout the theme file as variables.
|
912
|
-
|
931
|
+
We recommended that you define this category after the page category and before all other categories.
|
932
|
+
|
933
|
+
NOTE: While it's common to define additional keys in this category (e.g., `base_border_radius`) to keep your theme DRY, we recommend using <<Custom Variables,custom variables>> instead.
|
913
934
|
|
914
935
|
[cols="3,4,5l"]
|
915
936
|
|===
|
@@ -3196,6 +3217,7 @@ The keys in this category control the arrangement and style of running header an
|
|
3196
3217
|
. The background color spans the width of the page, as does the border when a background color is specified.
|
3197
3218
|
. If the height is not set, the running content at this periphery is disabled.
|
3198
3219
|
. `<side>` can be `recto` (right-hand, odd-numbered pages) or `verso` (left-hand, even-numbered pages).
|
3220
|
+
Where the page sides fall in relation to the physical or printed page number is controlled using the `pdf-folio-placement` attribute (except when `media=prepress`, which implies `physical`).
|
3199
3221
|
. `<position>` can be `left`, `center` or `right`.
|
3200
3222
|
|
3201
3223
|
IMPORTANT: You must define a height for the running header or footer, respectively, or it will not be shown.
|
@@ -3210,13 +3232,14 @@ For example, you can set the font color used for the right-hand column on recto
|
|
3210
3232
|
|
3211
3233
|
==== Attribute References
|
3212
3234
|
|
3213
|
-
You can use _any_ attribute defined in your AsciiDoc document in the content of the running header and footer.
|
3235
|
+
You can use _any_ attribute defined in your AsciiDoc document (such as `doctitle`) in the content of the running header and footer.
|
3214
3236
|
In addition, the following attributes are also available when defining the content keys in the footer:
|
3215
3237
|
|
3216
3238
|
* page-count
|
3217
3239
|
* page-number
|
3218
3240
|
* document-title
|
3219
3241
|
* document-subtitle
|
3242
|
+
* part-title
|
3220
3243
|
* chapter-title
|
3221
3244
|
* section-title
|
3222
3245
|
* section-or-chapter-title
|
@@ -3404,6 +3427,10 @@ These settings override equivalent keys defined in the theme file, where applica
|
|
3404
3427
|
|https://github.com/prawnpdf/pdf-core/blob/0.6.0/lib/pdf/core/page_geometry.rb#L16-L68[Named size^] {vbar} <<measurement-units,Measurement[width, height]>>
|
3405
3428
|
|:pdf-page-size: 6in x 9in
|
3406
3429
|
|
3430
|
+
|pdf-folio-placement
|
3431
|
+
|virtual {vbar} virtual-inverted {vbar} physical {vbar} physical-inverted
|
3432
|
+
|:pdf-folio-placement: physical
|
3433
|
+
|
3407
3434
|
|pdfmark^[6]^
|
3408
3435
|
|flag (default: _not set_)
|
3409
3436
|
|:pdfmark:
|
@@ -3471,14 +3498,14 @@ The first page in the document is a recto page.
|
|
3471
3498
|
|
3472
3499
|
=== Automatic Facing Pages
|
3473
3500
|
|
3474
|
-
|
3501
|
+
When converting the book doctype using the prepress media setting, a blank page will be inserted when necessary to ensure the following elements start on a recto page:
|
3475
3502
|
|
3476
3503
|
* Title page
|
3477
3504
|
* Table of contents
|
3478
|
-
* First page of body
|
3505
|
+
* First page of body
|
3479
3506
|
* Parts and chapters
|
3480
3507
|
|
3481
|
-
Other facing pages may be added in the future.
|
3508
|
+
Other "`facing`" pages may be added in the future.
|
3482
3509
|
|
3483
3510
|
It's possible to disable the automatic facing feature for a given part or chapter.
|
3484
3511
|
This can be done by adding the nonfacing option to the section node.
|
@@ -35,8 +35,8 @@ class Converter < ::Prawn::Document
|
|
35
35
|
register_for 'pdf'
|
36
36
|
|
37
37
|
# NOTE require_library doesn't support require_relative and we don't modify the load path for this gem
|
38
|
-
CodeRayRequirePath = ::File.join
|
39
|
-
RougeRequirePath = ::File.join
|
38
|
+
CodeRayRequirePath = ::File.join((::File.dirname __FILE__), 'prawn_ext/coderay_encoder')
|
39
|
+
RougeRequirePath = ::File.join((::File.dirname __FILE__), 'rouge_ext')
|
40
40
|
|
41
41
|
AsciidoctorVersion = ::Gem::Version.create ::Asciidoctor::VERSION
|
42
42
|
AdmonitionIcons = {
|
@@ -63,10 +63,8 @@ class Converter < ::Prawn::Document
|
|
63
63
|
TabRx = /\t/
|
64
64
|
TabIndentRx = /^\t+/
|
65
65
|
NoBreakSpace = %(\u00a0)
|
66
|
-
NarrowSpace = %(\u2009)
|
67
66
|
NarrowNoBreakSpace = %(\u202f)
|
68
67
|
ZeroWidthSpace = %(\u200b)
|
69
|
-
HairSpace = %(\u200a)
|
70
68
|
DummyText = %(\u0000)
|
71
69
|
DotLeaderTextDefault = '. '
|
72
70
|
EmDash = %(\u2014)
|
@@ -169,7 +167,7 @@ class Converter < ::Prawn::Document
|
|
169
167
|
# NOTE on_page_create is called within a float context
|
170
168
|
# NOTE on_page_create is not called for imported pages, front and back cover pages, and other image pages
|
171
169
|
on_page_create do
|
172
|
-
# NOTE we assume
|
170
|
+
# NOTE we assume in prepress that physical page number reflects page side
|
173
171
|
if @media == 'prepress' && (next_page_margin = @page_margin_by_side[page_side]) != page_margin
|
174
172
|
set_page_margin next_page_margin
|
175
173
|
end
|
@@ -226,7 +224,7 @@ class Converter < ::Prawn::Document
|
|
226
224
|
add_outline doc, num_toc_levels, toc_page_nums, num_front_matter_pages
|
227
225
|
# TODO allow document (or theme) to override initial view magnification
|
228
226
|
# NOTE add 1 to page height to force initial scroll to 0; a nil value also seems to work
|
229
|
-
catalog.data[:OpenAction] = dest_fit_horizontally
|
227
|
+
catalog.data[:OpenAction] = dest_fit_horizontally((page_height + 1), state.pages[0]) if state.pages.size > 0
|
230
228
|
catalog.data[:ViewerPreferences] = { DisplayDocTitle: true }
|
231
229
|
|
232
230
|
layout_cover_page :back, doc
|
@@ -280,6 +278,11 @@ class Converter < ::Prawn::Document
|
|
280
278
|
|
281
279
|
def build_pdf_options doc, theme
|
282
280
|
case (page_margin = (doc.attr 'pdf-page-margin') || theme.page_margin)
|
281
|
+
when ::Array
|
282
|
+
page_margin = page_margin[0..3] if page_margin.length > 4
|
283
|
+
page_margin = page_margin.map {|v| ::Numeric === v ? v : (str_to_pt v.to_s) }
|
284
|
+
when ::Numeric
|
285
|
+
page_margin = [page_margin]
|
283
286
|
when ::String
|
284
287
|
if page_margin.empty?
|
285
288
|
page_margin = nil
|
@@ -295,9 +298,6 @@ class Converter < ::Prawn::Document
|
|
295
298
|
else
|
296
299
|
page_margin = [(str_to_pt page_margin)]
|
297
300
|
end
|
298
|
-
when ::Array
|
299
|
-
page_margin = page_margin[0..3] if page_margin.length > 4
|
300
|
-
page_margin = page_margin.map {|v| ::Numeric === v ? v : (str_to_pt v.to_s) }
|
301
301
|
else
|
302
302
|
page_margin = nil
|
303
303
|
end
|
@@ -386,7 +386,7 @@ class Converter < ::Prawn::Document
|
|
386
386
|
end
|
387
387
|
|
388
388
|
def convert_section sect, opts = {}
|
389
|
-
if sect.
|
389
|
+
if sect.sectname == 'abstract'
|
390
390
|
# HACK cheat a bit to hide this section from TOC; TOC should filter these sections
|
391
391
|
sect.context = :open
|
392
392
|
return convert_abstract sect
|
@@ -423,7 +423,7 @@ class Converter < ::Prawn::Document
|
|
423
423
|
end
|
424
424
|
end
|
425
425
|
|
426
|
-
sect.
|
426
|
+
sect.sectname == 'index' ? (convert_index_section sect) : (convert_content_for_block sect)
|
427
427
|
sect.set_attr 'pdf-page-end', page_number
|
428
428
|
end
|
429
429
|
|
@@ -1333,7 +1333,7 @@ class Converter < ::Prawn::Document
|
|
1333
1333
|
bg_color_override = formatter.background_color
|
1334
1334
|
source_string, conum_mapping = extract_conums source_string
|
1335
1335
|
# NOTE trailing endline is added to address https://github.com/jneen/rouge/issues/279
|
1336
|
-
fragments = formatter.format
|
1336
|
+
fragments = formatter.format((lexer.lex %(#{source_string}#{LF}), lexer_opts), formatter_opts)
|
1337
1337
|
# NOTE cleanup trailing endline (handled in rouge_ext/formatters/prawn instead)
|
1338
1338
|
#fragments[-1][:text] == LF ? fragments.pop : fragments[-1][:text].chop!
|
1339
1339
|
conum_mapping ? (restore_conums fragments, conum_mapping) : fragments
|
@@ -1366,7 +1366,7 @@ class Converter < ::Prawn::Document
|
|
1366
1366
|
remaining_height = box_height - caption_height
|
1367
1367
|
i = 0
|
1368
1368
|
while remaining_height > 0
|
1369
|
-
|
1369
|
+
advance_page if (started_new_page = i > 0)
|
1370
1370
|
fill_height = [remaining_height, cursor].min
|
1371
1371
|
bounding_box [0, cursor], width: bounds.width, height: fill_height do
|
1372
1372
|
theme_fill_and_stroke_bounds :code, background_color: bg_color_override
|
@@ -1595,7 +1595,7 @@ class Converter < ::Prawn::Document
|
|
1595
1595
|
when :literal
|
1596
1596
|
# FIXME core should not substitute in this case
|
1597
1597
|
cell_data[:content] = preserve_indentation((cell.instance_variable_get :@text), (node.document.attr 'tabsize'))
|
1598
|
-
|
1598
|
+
# NOTE the absence of the inline_format option implies it's disabled
|
1599
1599
|
# QUESTION should we use literal_font_*, code_font_*, or introduce another category?
|
1600
1600
|
cell_data[:font] = theme.code_font_family
|
1601
1601
|
if (val = theme.code_font_size)
|
@@ -1880,26 +1880,24 @@ class Converter < ::Prawn::Document
|
|
1880
1880
|
end
|
1881
1881
|
when :xref
|
1882
1882
|
# NOTE non-nil path indicates this is an inter-document xref that's not included in current document
|
1883
|
-
if (path = node.
|
1883
|
+
if (path = node.attributes['path'])
|
1884
1884
|
# NOTE we don't use local as that doesn't work on the web
|
1885
1885
|
# NOTE for the fragment to work in most viewers, it must be #page=<N> <= document this!
|
1886
1886
|
%(<a href="#{node.target}">#{node.text || path}</a>)
|
1887
|
-
|
1888
|
-
|
1889
|
-
|
1890
|
-
|
1891
|
-
|
1892
|
-
|
1887
|
+
elsif (refid = node.attributes['refid'])
|
1888
|
+
unless (text = node.text)
|
1889
|
+
if (refs = node.document.references[:refs])
|
1890
|
+
if ::Asciidoctor::AbstractNode === (ref = refs[refid])
|
1891
|
+
text = ref.xreftext((@xrefstyle ||= (node.document.attr 'xrefstyle')))
|
1892
|
+
end
|
1893
1893
|
else
|
1894
|
-
#
|
1895
|
-
|
1896
|
-
#warn %(asciidoctor: WARNING: reference '#{refid}' not found#{source})
|
1897
|
-
#%[(see #{node.text || %([#{refid}])})]
|
1898
|
-
%(<a anchor="#{anchor}">#{node.text || "[#{refid}]"}</a>)
|
1894
|
+
# Asciidoctor < 1.5.6
|
1895
|
+
text = node.document.references[:ids][refid]
|
1899
1896
|
end
|
1900
|
-
else
|
1901
|
-
%(<a anchor="#{node.document.attr 'pdf-anchor'}">#{node.text || '[^top]'}</a>)
|
1902
1897
|
end
|
1898
|
+
%(<a anchor="#{derive_anchor_from_id refid}">#{text || "[#{refid}]"}</a>)
|
1899
|
+
else
|
1900
|
+
%(<a anchor="#{node.document.attr 'pdf-anchor'}">#{node.text || '[^top]'}</a>)
|
1903
1901
|
end
|
1904
1902
|
when :ref
|
1905
1903
|
# NOTE destination is created inside callback registered by FormattedTextTransform#build_fragment
|
@@ -2132,26 +2130,26 @@ class Converter < ::Prawn::Document
|
|
2132
2130
|
# FIXME delegate to method to convert page % to y value
|
2133
2131
|
@y = title_top
|
2134
2132
|
end
|
2135
|
-
move_down
|
2133
|
+
move_down(@theme.title_page_title_margin_top || 0)
|
2136
2134
|
theme_font :title_page_title do
|
2137
2135
|
layout_heading doctitle.main,
|
2138
2136
|
align: title_align,
|
2139
2137
|
margin: 0,
|
2140
2138
|
line_height: @theme.title_page_title_line_height
|
2141
2139
|
end
|
2142
|
-
move_down
|
2140
|
+
move_down(@theme.title_page_title_margin_bottom || 0)
|
2143
2141
|
if doctitle.subtitle
|
2144
|
-
move_down
|
2142
|
+
move_down(@theme.title_page_subtitle_margin_top || 0)
|
2145
2143
|
theme_font :title_page_subtitle do
|
2146
2144
|
layout_heading doctitle.subtitle,
|
2147
2145
|
align: title_align,
|
2148
2146
|
margin: 0,
|
2149
2147
|
line_height: @theme.title_page_subtitle_line_height
|
2150
2148
|
end
|
2151
|
-
move_down
|
2149
|
+
move_down(@theme.title_page_subtitle_margin_bottom || 0)
|
2152
2150
|
end
|
2153
2151
|
if doc.attr? 'authors'
|
2154
|
-
move_down
|
2152
|
+
move_down(@theme.title_page_authors_margin_top || 0)
|
2155
2153
|
# TODO provide an API in core to get authors as an array
|
2156
2154
|
authors = (1..(doc.attr 'authorcount', 1).to_i).map {|idx|
|
2157
2155
|
doc.attr(idx == 1 ? 'author' : %(author_#{idx}))
|
@@ -2162,11 +2160,11 @@ class Converter < ::Prawn::Document
|
|
2162
2160
|
margin: 0,
|
2163
2161
|
normalize: false
|
2164
2162
|
end
|
2165
|
-
move_down
|
2163
|
+
move_down(@theme.title_page_authors_margin_bottom || 0)
|
2166
2164
|
end
|
2167
2165
|
revision_info = [(doc.attr? 'revnumber') ? %(#{doc.attr 'version-label'} #{doc.attr 'revnumber'}) : nil, (doc.attr 'revdate')].compact
|
2168
2166
|
unless revision_info.empty?
|
2169
|
-
move_down
|
2167
|
+
move_down(@theme.title_page_revision_margin_top || 0)
|
2170
2168
|
revision_text = revision_info * (@theme.title_page_revision_delimiter || ', ')
|
2171
2169
|
theme_font :title_page_revision do
|
2172
2170
|
layout_prose revision_text,
|
@@ -2174,7 +2172,7 @@ class Converter < ::Prawn::Document
|
|
2174
2172
|
margin: 0,
|
2175
2173
|
normalize: false
|
2176
2174
|
end
|
2177
|
-
move_down
|
2175
|
+
move_down(@theme.title_page_revision_margin_bottom || 0)
|
2178
2176
|
end
|
2179
2177
|
end
|
2180
2178
|
end
|
@@ -2670,15 +2668,23 @@ class Converter < ::Prawn::Document
|
|
2670
2668
|
|
2671
2669
|
pagenums_enabled = doc.attr? 'pagenums'
|
2672
2670
|
attribute_missing_doc = doc.attr 'attribute-missing'
|
2673
|
-
|
2671
|
+
case @media == 'prepress' ? 'physical' : (doc.attr 'pdf-folio-placement')
|
2672
|
+
when 'physical'
|
2673
|
+
folio_basis, invert_folio = :physical, false
|
2674
|
+
when 'physical-inverted'
|
2675
|
+
folio_basis, invert_folio = :physical, true
|
2676
|
+
when 'virtual-inverted'
|
2677
|
+
folio_basis, invert_folio = :virtual, true
|
2678
|
+
else
|
2679
|
+
folio_basis, invert_folio = :virtual, false
|
2680
|
+
end
|
2681
|
+
repeat((content_start_page..page_count), dynamic: true) do
|
2674
2682
|
# NOTE don't write on pages which are imported / inserts (otherwise we can get a corrupt PDF)
|
2675
2683
|
next if page.imported_page?
|
2676
2684
|
pgnum_label = page_number - skip
|
2677
|
-
|
2678
|
-
side = page_side pgnum_label
|
2685
|
+
side = page_side((folio_basis == :physical ? page_number : pgnum_label), invert_folio)
|
2679
2686
|
# FIXME we need to have a content setting for chapter pages
|
2680
|
-
content_by_position = content_dict[side]
|
2681
|
-
colspec_by_position = colspec_dict[side]
|
2687
|
+
content_by_position, colspec_by_position = content_dict[side], colspec_dict[side]
|
2682
2688
|
# TODO populate chapter-number
|
2683
2689
|
# TODO populate numbered and unnumbered chapter and section titles
|
2684
2690
|
doc.set_attr 'page-number', pgnum_label.to_s if pagenums_enabled
|
@@ -2894,13 +2900,14 @@ class Converter < ::Prawn::Document
|
|
2894
2900
|
# - 0 when side == :top
|
2895
2901
|
# - @theme.vertical_spacing when side == :bottom
|
2896
2902
|
def theme_margin category, side
|
2897
|
-
margin
|
2903
|
+
margin((@theme[%(#{category}_margin_#{side})] || (side == :bottom ? @theme.vertical_spacing : 0)), side)
|
2898
2904
|
end
|
2899
2905
|
|
2900
2906
|
def theme_font category, opts = {}
|
2901
2907
|
result = nil
|
2902
2908
|
# TODO inheriting from generic category should be an option
|
2903
|
-
if
|
2909
|
+
if opts.key? :level
|
2910
|
+
level = opts[:level]
|
2904
2911
|
family = @theme[%(#{category}_h#{level}_font_family)] || @theme[%(#{category}_font_family)] || @theme.base_font_family
|
2905
2912
|
size = @theme[%(#{category}_h#{level}_font_size)] || @theme[%(#{category}_font_size)] || @theme.base_font_size
|
2906
2913
|
style = @theme[%(#{category}_h#{level}_font_style)] || @theme[%(#{category}_font_style)]
|
@@ -3148,10 +3155,10 @@ class Converter < ::Prawn::Document
|
|
3148
3155
|
|
3149
3156
|
# Resolve the system path of the specified image path.
|
3150
3157
|
#
|
3151
|
-
# Resolve and normalize the absolute system path of the specified image
|
3152
|
-
# the
|
3153
|
-
#
|
3154
|
-
#
|
3158
|
+
# Resolve and normalize the absolute system path of the specified image,
|
3159
|
+
# taking into account the imagesdir attribute. If an image path is not
|
3160
|
+
# specified, the path is read from the target attribute of the specified
|
3161
|
+
# document node.
|
3155
3162
|
#
|
3156
3163
|
# If the target is a URI and the allow-uri-read attribute is set on the
|
3157
3164
|
# document, read the file contents to a temporary file and return the path to
|
@@ -3305,6 +3312,7 @@ class Converter < ::Prawn::Document
|
|
3305
3312
|
scheme, address = uri.split UriSchemeBoundaryRx, 2
|
3306
3313
|
address, scheme = scheme, address unless address
|
3307
3314
|
address = address.gsub UriBreakCharsRx, UriBreakCharRepl
|
3315
|
+
# NOTE require at least two characters after a break
|
3308
3316
|
address.slice!(-2) if address[-2] == ZeroWidthSpace
|
3309
3317
|
%(#{scheme}#{address})
|
3310
3318
|
end
|
@@ -112,8 +112,12 @@ module Extensions
|
|
112
112
|
|
113
113
|
# Returns the side the current page is facing, :recto or :verso.
|
114
114
|
#
|
115
|
-
def page_side pgnum = nil
|
116
|
-
|
115
|
+
def page_side pgnum = nil, invert = nil
|
116
|
+
if invert
|
117
|
+
(recto_page? pgnum) ? :verso : :recto
|
118
|
+
else
|
119
|
+
(recto_page? pgnum) ? :recto : :verso
|
120
|
+
end
|
117
121
|
end
|
118
122
|
|
119
123
|
# Returns whether the page is a recto page.
|
@@ -234,17 +238,17 @@ module Extensions
|
|
234
238
|
super @font_size
|
235
239
|
elsif String === points
|
236
240
|
if points.end_with? 'rem'
|
237
|
-
super
|
241
|
+
super(@theme.base_font_size * points.to_f)
|
238
242
|
elsif points.end_with? 'em'
|
239
|
-
super
|
243
|
+
super(@font_size * points.to_f)
|
240
244
|
elsif points.end_with? '%'
|
241
|
-
super
|
245
|
+
super(@font_size * (points.to_f / 100.0))
|
242
246
|
else
|
243
247
|
super points.to_f
|
244
248
|
end
|
245
249
|
# FIXME HACK assume em value
|
246
250
|
elsif points < 1
|
247
|
-
super
|
251
|
+
super(@font_size * points)
|
248
252
|
else
|
249
253
|
super points
|
250
254
|
end
|
@@ -693,14 +697,10 @@ module Extensions
|
|
693
697
|
# prawn-templates sets text_rendering_mode to :unknown, which breaks running content; revert
|
694
698
|
@text_rendering_mode = prev_text_rendering_mode
|
695
699
|
if opts.fetch :advance, true
|
696
|
-
|
697
|
-
|
698
|
-
|
699
|
-
|
700
|
-
start_new_page size: prev_page_size, layout: prev_page_layout
|
701
|
-
else
|
702
|
-
go_to_page page_number + 1
|
703
|
-
end
|
700
|
+
# NOTE set page size & layout explicitly in case imported page differs
|
701
|
+
# I'm not sure it's right to start a new page here, but unfortunately there's no other
|
702
|
+
# way atm to prevent the size & layout of the imported page from affecting subsequent pages
|
703
|
+
advance_page size: prev_page_size, layout: prev_page_layout
|
704
704
|
end
|
705
705
|
nil
|
706
706
|
end
|
@@ -739,8 +739,8 @@ module Extensions
|
|
739
739
|
# This method is a smarter version of start_new_page. It calls start_new_page
|
740
740
|
# if the current page is the last page of the document. Otherwise, it simply
|
741
741
|
# advances to the next existing page.
|
742
|
-
def advance_page
|
743
|
-
last_page? ? start_new_page : (go_to_page page_number + 1)
|
742
|
+
def advance_page opts = {}
|
743
|
+
last_page? ? (start_new_page opts) : (go_to_page page_number + 1)
|
744
744
|
end
|
745
745
|
|
746
746
|
# Start a new page without triggering the on_page_create callback
|
@@ -783,12 +783,15 @@ module Extensions
|
|
783
783
|
|
784
784
|
def scratch?
|
785
785
|
(@_label ||= (state.store.info.data[:Scratch] ? :scratch : :primary)) == :scratch
|
786
|
+
rescue
|
787
|
+
false # NOTE this method may get called before the state is initialized
|
786
788
|
end
|
787
789
|
alias :is_scratch? :scratch?
|
788
790
|
|
789
791
|
# TODO document me
|
790
792
|
def dry_run &block
|
791
793
|
scratch = get_scratch_document
|
794
|
+
# QUESTION should we use scratch.advance_page instead?
|
792
795
|
scratch.start_new_page
|
793
796
|
start_page_number = scratch.page_number
|
794
797
|
start_y = scratch.y
|
@@ -819,7 +822,7 @@ module Extensions
|
|
819
822
|
# NOTE technically, if we're at the page top, we don't even need to do the
|
820
823
|
# dry run, except several uses of this method rely on the calculated height
|
821
824
|
if total_height > available_space && !at_page_top? && total_height <= effective_page_height
|
822
|
-
|
825
|
+
advance_page
|
823
826
|
started_new_page = true
|
824
827
|
else
|
825
828
|
started_new_page = false
|
@@ -1,5 +1,13 @@
|
|
1
1
|
class Prawn::Font::AFM
|
2
|
-
|
2
|
+
FALLBACK_CHARS = {
|
3
|
+
%(\u200b) => '',
|
4
|
+
%(\u202f) => %(\u00a0),
|
5
|
+
%(\u2009) => ' ',
|
6
|
+
%(\u25e6) => '-',
|
7
|
+
%(\u25aa) => %(\u00b7)
|
8
|
+
}
|
9
|
+
|
10
|
+
remove_method :normalize_encoding
|
3
11
|
|
4
12
|
# Patch normalize_encoding method to handle conversion more gracefully.
|
5
13
|
#
|
@@ -7,7 +15,7 @@ class Prawn::Font::AFM
|
|
7
15
|
# replaced with the logic "not" symbol and a warning is issued identifying
|
8
16
|
# the text that cannot be converted.
|
9
17
|
def normalize_encoding text
|
10
|
-
text.encode 'windows-1252'
|
18
|
+
text.encode 'windows-1252', fallback: FALLBACK_CHARS
|
11
19
|
rescue ::Encoding::UndefinedConversionError
|
12
20
|
warn 'The following text could not be fully converted to the Windows-1252 character set:'
|
13
21
|
warn %(#{text.gsub(/^/, '| ').rstrip})
|
@@ -12,7 +12,7 @@ module Images
|
|
12
12
|
# FIXME handle case when SVG is a File or IO object
|
13
13
|
if ::String === file && (file.downcase.end_with? '.svg')
|
14
14
|
opts[:fallback_font_name] ||= default_svg_font if respond_to? :default_svg_font
|
15
|
-
svg
|
15
|
+
svg((::IO.read file), opts)
|
16
16
|
else
|
17
17
|
_initial_image file, opts
|
18
18
|
end
|
@@ -135,9 +135,21 @@ class ThemeLoader
|
|
135
135
|
def expand_vars expr, vars
|
136
136
|
if (idx = (expr.index '$'))
|
137
137
|
if idx == 0 && expr =~ LoneVariableRx
|
138
|
-
vars
|
138
|
+
if vars.respond_to? $1
|
139
|
+
vars[$1]
|
140
|
+
else
|
141
|
+
warn %(asciidoctor: WARNING: unknown variable reference in PDF theme: $#{$1})
|
142
|
+
expr
|
143
|
+
end
|
139
144
|
else
|
140
|
-
expr.gsub(VariableRx) {
|
145
|
+
expr.gsub(VariableRx) {
|
146
|
+
if vars.respond_to? $1
|
147
|
+
vars[$1]
|
148
|
+
else
|
149
|
+
warn %(asciidoctor: WARNING: unknown variable reference in PDF theme: $#{$1})
|
150
|
+
$&
|
151
|
+
end
|
152
|
+
}
|
141
153
|
end
|
142
154
|
else
|
143
155
|
expr
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: asciidoctor-pdf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.0.alpha.
|
4
|
+
version: 1.5.0.alpha.16
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dan Allen
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-
|
12
|
+
date: 2017-07-31 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -82,7 +82,7 @@ dependencies:
|
|
82
82
|
version: 0.0.3
|
83
83
|
- - "<="
|
84
84
|
- !ruby/object:Gem::Version
|
85
|
-
version: 0.
|
85
|
+
version: 0.1.1
|
86
86
|
type: :runtime
|
87
87
|
prerelease: false
|
88
88
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -92,7 +92,7 @@ dependencies:
|
|
92
92
|
version: 0.0.3
|
93
93
|
- - "<="
|
94
94
|
- !ruby/object:Gem::Version
|
95
|
-
version: 0.
|
95
|
+
version: 0.1.1
|
96
96
|
- !ruby/object:Gem::Dependency
|
97
97
|
name: prawn-svg
|
98
98
|
requirement: !ruby/object:Gem::Requirement
|
@@ -102,7 +102,7 @@ dependencies:
|
|
102
102
|
version: 0.21.0
|
103
103
|
- - "<"
|
104
104
|
- !ruby/object:Gem::Version
|
105
|
-
version: 0.
|
105
|
+
version: 0.28.0
|
106
106
|
type: :runtime
|
107
107
|
prerelease: false
|
108
108
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -112,7 +112,7 @@ dependencies:
|
|
112
112
|
version: 0.21.0
|
113
113
|
- - "<"
|
114
114
|
- !ruby/object:Gem::Version
|
115
|
-
version: 0.
|
115
|
+
version: 0.28.0
|
116
116
|
- !ruby/object:Gem::Dependency
|
117
117
|
name: prawn-icon
|
118
118
|
requirement: !ruby/object:Gem::Requirement
|
@@ -169,10 +169,8 @@ dependencies:
|
|
169
169
|
- - '='
|
170
170
|
- !ruby/object:Gem::Version
|
171
171
|
version: 1.5.3
|
172
|
-
description:
|
173
|
-
using the Prawn PDF library.
|
174
|
-
|
175
|
-
'
|
172
|
+
description: |
|
173
|
+
An extension for Asciidoctor that converts AsciiDoc documents to PDF using the Prawn PDF library.
|
176
174
|
email: dan@opendevise.com
|
177
175
|
executables:
|
178
176
|
- asciidoctor-pdf
|
@@ -280,7 +278,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
280
278
|
version: 1.3.1
|
281
279
|
requirements: []
|
282
280
|
rubyforge_project:
|
283
|
-
rubygems_version: 2.6.
|
281
|
+
rubygems_version: 2.6.11
|
284
282
|
signing_key:
|
285
283
|
specification_version: 4
|
286
284
|
summary: Converts AsciiDoc documents to PDF using Prawn
|