Sha256: ecefac821dcb12208ff0e721412be456d04eefdef387cdb7ca3d5af122cc7cfa

Contents?: true

Size: 1.24 KB

Versions: 10

Compression:

Stored size: 1.24 KB

Contents

module Medivo
  module FdfGenerator
    def self.file(info)
      afile = Tempfile.new('fdf', :encoding => 'ascii-8bit')
      afile.write "%FDF-1.2\x0d%\xe2\xe3\xcf\xd3\x0d\x0a"; # header
      afile.write "1 0 obj\x0d<< " # open the Root dictionary
      afile.write "\x0d/FDF << " # open the FDF dictionary
      afile.write "/Fields [ " # open the form Fields array

      info.each { |key, value|
        if value.class == Hash
          value.each { |sub_key, sub_value|
            afile.write '<< /T (' + key.to_s + '_' + sub_key.to_s + ') /V '
            afile.write '(' + escape_data(sub_value) + ') /ClrF 2 /ClrFf 1 >> '
          }
        else
          afile.write '<< /T (' + key.to_s + ') /V (' + escape_data(value) + ') /ClrF 2 /ClrFf 1 >> '
        end
      }

      afile.write "] \x0d" # close the Fields array
      afile.write ">> \x0d" # close the FDF dictionary
      afile.write ">> \x0dendobj\x0d" # close the Root dictionary

      # trailer note the "1 0 R" reference to "1 0 obj" above
      afile.write "trailer\x0d<<\x0d/Root 1 0 R \x0d\x0d>>\x0d"
      afile.write "%%EOF\x0d\x0a"
      afile.close
      afile
    end

    def self.escape_data(value)
      value.to_s.strip.gsub(/[\(]/, '\\(').gsub(/[\)]/, '\\)')
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
medivo-0.1.8 lib/pdf/medivo/fdf_generator.rb
medivo-0.1.7 lib/pdf/medivo/fdf_generator.rb
medivo-0.1.6 lib/pdf/medivo/fdf_generator.rb
medivo-0.1.5 lib/pdf/medivo/fdf_generator.rb
medivo-0.1.4 lib/pdf/medivo/fdf_generator.rb
medivo-0.1.3 lib/medivo/fdf_generator.rb
medivo-0.1.2 lib/medivo/fdf_generator.rb
medivo-0.1.1 lib/medivo/fdf_generator.rb
medivo-0.1.0 lib/medivo/fdf_generator.rb
medivo-0.0.13 lib/medivo/fdf_generator.rb