pdf-forms 0.5.1 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
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