pdf-forms 0.5.1 → 0.5.2
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.
- data/lib/pdf_forms/fdf.rb +20 -14
- data/lib/pdf_forms/version.rb +1 -1
- metadata +2 -2
data/lib/pdf_forms/fdf.rb
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
module PdfForms
|
|
2
|
-
|
|
2
|
+
|
|
3
3
|
# Map keys and values to Adobe's FDF format.
|
|
4
4
|
#
|
|
5
5
|
# Straight port of Perl's PDF::FDF::Simple by Steffen Schwigon.
|
|
6
6
|
# Parsing FDF files is not supported (yet).
|
|
7
7
|
class Fdf
|
|
8
|
-
|
|
8
|
+
|
|
9
9
|
attr_reader :options
|
|
10
|
-
|
|
10
|
+
|
|
11
11
|
def initialize(data = {}, options = {})
|
|
12
12
|
@data = data
|
|
13
13
|
@options = {
|
|
@@ -20,7 +20,7 @@ module PdfForms
|
|
|
20
20
|
# generate FDF content
|
|
21
21
|
def to_fdf
|
|
22
22
|
fdf = header
|
|
23
|
-
|
|
23
|
+
|
|
24
24
|
@data.each do |key, value|
|
|
25
25
|
if Hash === value
|
|
26
26
|
value.each do |sub_key, sub_value|
|
|
@@ -32,26 +32,32 @@ module PdfForms
|
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
fdf << footer
|
|
35
|
+
# I have yet to see a version of pdftk which can handle UTF8 input,
|
|
36
|
+
# so we convert to ISO-8859-15 here, replacing unknown / invalid chars
|
|
37
|
+
# with the default replacement which is '?'.
|
|
38
|
+
if fdf.respond_to?(:encode) # 1.9 onwards
|
|
39
|
+
fdf.encode!('ISO-8859-15', :invalid => :replace, :undef => :replace)
|
|
40
|
+
end
|
|
35
41
|
return fdf
|
|
36
42
|
end
|
|
37
|
-
|
|
43
|
+
|
|
38
44
|
# write fdf content to path
|
|
39
45
|
def save_to(path)
|
|
40
46
|
(File.open(path, 'w') << to_fdf).close
|
|
41
47
|
end
|
|
42
|
-
|
|
48
|
+
|
|
43
49
|
protected
|
|
44
|
-
|
|
50
|
+
|
|
45
51
|
def header
|
|
46
52
|
header = "%FDF-1.2\n\n1 0 obj\n<<\n/FDF << /Fields 2 0 R"
|
|
47
|
-
|
|
53
|
+
|
|
48
54
|
# /F
|
|
49
55
|
header << "/F (#{options[:file]})" if options[:file]
|
|
50
56
|
# /UF
|
|
51
57
|
header << "/UF (#{options[:ufile]})" if options[:ufile]
|
|
52
58
|
# /ID
|
|
53
59
|
header << "/ID[" << options[:id].join << "]" if options[:id]
|
|
54
|
-
|
|
60
|
+
|
|
55
61
|
header << ">>\n>>\nendobj\n2 0 obj\n["
|
|
56
62
|
return header
|
|
57
63
|
end
|
|
@@ -61,7 +67,7 @@ module PdfForms
|
|
|
61
67
|
(Array === value ? "[#{value.map{ |v|"(#{quote(v)})" }.join}]" : "(#{quote(value)})") +
|
|
62
68
|
">>\n"
|
|
63
69
|
end
|
|
64
|
-
|
|
70
|
+
|
|
65
71
|
def quote(value)
|
|
66
72
|
value.to_s.strip.
|
|
67
73
|
gsub( /\\/, '\\' ).
|
|
@@ -69,7 +75,7 @@ module PdfForms
|
|
|
69
75
|
gsub( /\)/, '\)' ).
|
|
70
76
|
gsub( /\n/, '\r' )
|
|
71
77
|
end
|
|
72
|
-
|
|
78
|
+
|
|
73
79
|
FOOTER =<<-EOFOOTER
|
|
74
80
|
]
|
|
75
81
|
endobj
|
|
@@ -80,10 +86,10 @@ trailer
|
|
|
80
86
|
>>
|
|
81
87
|
%%EOF
|
|
82
88
|
EOFOOTER
|
|
83
|
-
|
|
89
|
+
|
|
84
90
|
def footer
|
|
85
91
|
FOOTER
|
|
86
92
|
end
|
|
87
|
-
|
|
93
|
+
|
|
88
94
|
end
|
|
89
|
-
end
|
|
95
|
+
end
|
data/lib/pdf_forms/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: pdf-forms
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.5.
|
|
4
|
+
version: 0.5.2
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date:
|
|
12
|
+
date: 2013-03-07 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: pry
|