Skip to content

Commit

Permalink
Merge pull request #90 from DocSpring/escape_double_quotes
Browse files Browse the repository at this point in the history
Escape double quotes in field names when generating XFDF
  • Loading branch information
jkraemer authored Jan 15, 2024
2 parents 1d3bc0d + 17bd817 commit 80b8cb0
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 2 deletions.
8 changes: 6 additions & 2 deletions lib/pdf_forms/xfdf.rb
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,19 @@ def quote(value)
REXML::Text.new(value.to_s).to_s
end

def escape(value)
Array(value).map{ |v| quote(v) }.join(" ")
end

def header
'<?xml version="1.0" encoding="UTF-8"?>
<xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve">
<fields>
'
end

def field(key, value)
"<field name=\"#{key}\"><value>#{Array(value).map{ |v| quote(v) }.join(" ")}</value></field>"
"<field name=\"#{escape(key)}\"><value>#{escape(value)}</value></field>"
end

def footer
Expand Down
6 changes: 6 additions & 0 deletions test/xfdf_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,12 @@ def test_quoting
assert_match %r{<field name=\"field1\"><value>some&lt;1&gt;</value></field>}, fdf_text
end

def test_double_quotes_in_field_name
fdf = PdfForms::XFdf.new "field \"one\"" => 'some<1>'
assert fdf_text = fdf.to_fdf
assert_match %r{<field name=\"field &quot;one&quot;\"><value>some&lt;1&gt;</value></field>}, fdf_text
end

def test_multival
fdf = PdfForms::XFdf.new :field1 => %w(one two)
assert fdf_text = fdf.to_fdf
Expand Down

0 comments on commit 80b8cb0

Please sign in to comment.