OSDN Git Service

Merged r6024 from trunk.
authorToshi MARUYAMA <marutosijp2@yahoo.co.jp>
Thu, 9 Jun 2011 05:29:23 +0000 (05:29 +0000)
committerToshi MARUYAMA <marutosijp2@yahoo.co.jp>
Thu, 9 Jun 2011 05:29:23 +0000 (05:29 +0000)
PDF: replace all non ASCII characters to '?' if Iconv error raise in JRuby.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/1.2-stable@6027 e93f8b46-1217-0410-a6f0-8f06a7374b81

lib/redmine/export/pdf.rb
test/unit/lib/redmine/export/pdf_test.rb

index 3203c19..97176a7 100644 (file)
@@ -408,6 +408,13 @@ module Redmine
               txt = Redmine::CodesetUtil.replace_invalid_utf8(txt)
             end
             txt.force_encoding('ASCII-8BIT')
+          elsif RUBY_PLATFORM == 'java'
+            begin
+              ic ||= Iconv.new(l(:general_pdf_encoding), 'UTF-8')
+              txt = ic.iconv(txt)
+            rescue
+              txt = txt.gsub(%r{[^\r\n\t\x20-\x7e]}, '?')
+            end
           else
             ic ||= Iconv.new(l(:general_pdf_encoding), 'UTF-8')
             txtar = ""
index acb46ca..ec1f3fd 100644 (file)
@@ -57,6 +57,13 @@ class PdfTest < ActiveSupport::TestCase
       assert_equal "ASCII-8BIT", txt_1.encoding.to_s
       assert_equal "ASCII-8BIT", txt_2.encoding.to_s
       assert_equal "ASCII-8BIT", txt_3.encoding.to_s
+    elsif RUBY_PLATFORM == 'java'
+      assert_equal "??",
+                   Redmine::Export::PDF::RDMPdfEncoding::rdm_pdf_iconv(ic, utf8_txt_1)
+      assert_equal "???",
+                   Redmine::Export::PDF::RDMPdfEncoding::rdm_pdf_iconv(ic, utf8_txt_2)
+      assert_equal "????",
+                   Redmine::Export::PDF::RDMPdfEncoding::rdm_pdf_iconv(ic, utf8_txt_3)
     else
       assert_equal "???\x91\xd4",
                    Redmine::Export::PDF::RDMPdfEncoding::rdm_pdf_iconv(ic, utf8_txt_1)