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 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
@@ -1,3 +1,3 @@
1
1
  module PdfForms
2
- VERSION = '0.5.1'
2
+ VERSION = '0.5.2'
3
3
  end
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.1
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: 2012-12-17 00:00:00.000000000 Z
12
+ date: 2013-03-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: pry