blob: c6ffb07858c7c7cbedc65b379c4bdd07452bd87d (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
require_relative 'spec_helper'
describe 'Asciidoctor::PDF::Converter - PDF Info' do
context 'compliance' do
it 'should generate a PDF 1.4-compatible document by default' do
(expect (to_pdf 'hello').pdf_version).to eq 1.4
end
it 'should set PDF version specified by pdf-version attribute if valid' do
(expect (to_pdf 'hello', attributes: { 'pdf-version' => '1.6' }).pdf_version).to eq 1.6
end
it 'should generate a PDF 1.4-compatible document if value of pdf-version attribute is not recognized' do
(expect (to_pdf 'hello', attributes: { 'pdf-version' => '3.0' }).pdf_version).to eq 1.4
end
end
context 'attribution' do
it 'should include Asciidoctor PDF and Prawn versions in Creator field' do
creator = (to_pdf 'hello').info[:Creator]
(expect creator).to_not be_nil
(expect creator).to include %(Asciidoctor PDF #{Asciidoctor::PDF::VERSION})
(expect creator).to include %(Prawn #{Prawn::VERSION})
end
it 'should set Producer field to value of Creator field by default' do
pdf = to_pdf 'hello'
(expect pdf.info[:Producer]).to_not be_nil
(expect pdf.info[:Producer]).to eql pdf.info[:Creator]
end
it 'should set Author and Producer field to value of author attribute if set' do
pdf = to_pdf <<~'EOS'
= Document Title
Author Name
content
EOS
(expect pdf.info[:Producer]).to eql pdf.info[:Author]
(expect pdf.info[:Author]).to eql 'Author Name'
end
it 'should set Producer field to value of publisher attribute if set' do
pdf = to_pdf <<~'EOS'
= Document Title
Author Name
:publisher: Big Cheese
content
EOS
(expect pdf.info[:Author]).to eql 'Author Name'
(expect pdf.info[:Producer]).to eql 'Big Cheese'
end
it 'should set Subject field to value of subject attribute if set' do
pdf = to_pdf <<~'EOS'
= Document Title
:subject: Cooking
content
EOS
(expect pdf.info[:Subject]).to eql 'Cooking'
end
it 'should set Keywords field to value of subject attribute if set' do
pdf = to_pdf <<~'EOS'
= Document Title
:keywords: cooking, diet, plants
content
EOS
(expect pdf.info[:Keywords]).to eql 'cooking, diet, plants'
end
it 'should not add dates to document if reproducible attribute is set' do
pdf = to_pdf <<~'EOS', attribute_overrides: { 'reproducible' => '' }
= Document Title
Author Name
content
EOS
(expect pdf.info[:ModDate]).to be_nil
(expect pdf.info[:CreationDate]).to be_nil
end
end
context 'document title' do
it 'should set Title field to value of untitled-label attribute if doctitle is not set' do
pdf = to_pdf 'body'
(expect pdf.info[:Title]).to eql 'Untitled'
end
it 'should set Title field to value of document title if set' do
pdf = to_pdf '= Document Title'
(expect pdf.info[:Title]).to eql 'Document Title'
end
it 'should remove text formatting from document title before assigning to Title field' do
pdf = to_pdf '= *Document* _Title_'
(expect pdf.info[:Title]).to eql 'Document Title'
end
it 'should decode character references in document title before assigning to Title field' do
pdf = to_pdf '= ACME(TM) Catalog <№ 1>'
(expect pdf.info[:Title]).to eql %(ACME\u2122 Catalog <\u2116 1>)
end
it 'should hex encode non-ASCII characters in Title field' do
doctitle = 'Guide de démarrage rapide'
pdf = to_pdf %(= #{doctitle})
(expect pdf.info[:Title]).to eql doctitle
encoded_doctitle = (pdf.objects[pdf.objects.trailer[:Info]])[:Title].unpack 'H*'
(expect encoded_doctitle).to eql (doctitle.encode Encoding::UTF_16).unpack 'H*'
end
end
end
|