rbpdf 1.18.6 → 1.18.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: da1bf9dca7775d7e0b454cccc03c92e8983e9075
4
- data.tar.gz: 2aa1f90e5d0e58774ef811a25a845085370e044a
3
+ metadata.gz: 15432b181857328b6ed5f8c5bbfa2ffce4d69782
4
+ data.tar.gz: 3d8ef59f34b8bd101d6cbbd67ff30fb2fbdbfd04
5
5
  SHA512:
6
- metadata.gz: 8d42d61a6222d2b8cfd520ad9a200c0dac5415ef029bc0a69522cbe1947ac4fda75b6e21b46f8b17a579fbba2e781b0f2109538092f857bf9f881b0fb56d8b55
7
- data.tar.gz: 9cff8bf012066f9954963282d66c976b403e24aa3458aac9e931149ab7f60b63d7103c13ee40469018ff97c1dcdcf1216e775152cdd4e80a9076c784c7551133
6
+ metadata.gz: f3aae8a53859e23684be355730099acfd1770abf1de5f71d0e8adac27cb0862eef72585c9166affa8442c7f4c158e4a379ac32b9bdabfc57837a8006c329e767
7
+ data.tar.gz: 6d6e239b6aa135886d4499cedcd8d2df2c20c57aa5f58646112907acabc3d2ec3e427d5af48d84d295410880d2e6b336de7a08d57a4d4e904725775ebf674c48
data/CHANGELOG CHANGED
@@ -1,3 +1,7 @@
1
+ 1.18.7 2015-10-18
2
+ - Fixed case of missing HTML <pre> tag texts with whitespace. (use htmlentities gem liblary.)
3
+ - Fixed HTML Image function y position problem with png alpha image.
4
+
1
5
  1.18.6 2015-06-20
2
6
  - Fixed page boxes problem for iOS.
3
7
  - The dependence to the Rails environment was reduced.
@@ -4930,7 +4930,7 @@ class RBPDF
4930
4930
  if info == 'pngalpha' and ismask == false and Object.const_defined?(:Magick)
4931
4931
  info = ImagePngAlpha(file, x, y, w, h, 'PNG', link, align, resize, dpi, palign)
4932
4932
  if false != info
4933
- return
4933
+ return true
4934
4934
  end
4935
4935
  end
4936
4936
  end
@@ -5274,6 +5274,8 @@ class RBPDF
5274
5274
  # remove temp files
5275
5275
  tempfile_alpha.delete
5276
5276
  tempfile_plain.delete
5277
+
5278
+ return true
5277
5279
  end
5278
5280
  protected :ImagePngAlpha
5279
5281
 
@@ -10738,6 +10740,10 @@ protected
10738
10740
  # preserve newlines on <pre> tag
10739
10741
  html_b = html_b.gsub(/<xre([^\>]*)>(.*?)\n(.*?)<\/pre>/mi, "<xre\\1>\\2<br />\\3</pre>")
10740
10742
  end
10743
+ while html_b =~ /<xre([^\>]*)>(.*?)[\s](.*?)<\/pre>/mi
10744
+ # preserve whitespace on <pre> tag
10745
+ html_b = html_b.gsub(/<xre([^\>]*)>(.*?)[\s](.*?)<\/pre>/mi, "<xre\\1>\\2&nbsp;\\3</pre>")
10746
+ end
10741
10747
  html = html_a + html_b + html[(pos + 6)..-1]
10742
10748
  offset = (html_a + html_b).length
10743
10749
  end
@@ -1,3 +1,3 @@
1
1
  module Rbpdf
2
- VERSION = "1.18.6"
2
+ VERSION = "1.18.7"
3
3
  end
@@ -30,6 +30,8 @@ Gem::Specification.new do |spec|
30
30
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
31
31
  spec.require_paths = ["lib"]
32
32
 
33
+ spec.add_runtime_dependency "htmlentities", "= 4.3.1"
34
+
33
35
  spec.add_development_dependency "bundler", "~> 1.6"
34
36
  spec.add_development_dependency "rake"
35
37
  end
@@ -1,3 +1,4 @@
1
+ # coding: ASCII-8BIT
1
2
  require 'test_helper'
2
3
 
3
4
  class RbpdfTest < ActiveSupport::TestCase
@@ -5,6 +6,20 @@ class RbpdfTest < ActiveSupport::TestCase
5
6
  def getPageBuffer(page)
6
7
  super
7
8
  end
9
+
10
+ # get text from pdf page
11
+ def get_html_text(page)
12
+ content = []
13
+ contents = getPageBuffer(page)
14
+ contents.each_line {|line| content.push line.chomp }
15
+ pdf_text = ''
16
+ content.each do |line|
17
+ if line =~ /\[\((.*)\)\] TJ ET/
18
+ pdf_text << $1
19
+ end
20
+ end
21
+ return pdf_text
22
+ end
8
23
  end
9
24
 
10
25
  test "write_html Basic test" do
@@ -576,4 +591,143 @@ class RbpdfTest < ActiveSupport::TestCase
576
591
  end
577
592
  assert_equal count, 1
578
593
  end
594
+
595
+ test "write_html <b> tag test" do
596
+ pdf = MYPDF.new
597
+ pdf.set_print_header(false)
598
+ pdf.add_page()
599
+
600
+ text = ' ' + 'A' * 70
601
+ htmlcontent = '<b>' + text + '</b>'
602
+
603
+ pdf.write_html(htmlcontent, true, 0, true, 0)
604
+ pdf_text = pdf.get_html_text(1)
605
+ assert_equal 'A' * 70, pdf_text
606
+ end
607
+
608
+ test "write_html <i> tag test" do
609
+ pdf = MYPDF.new
610
+ pdf.set_print_header(false)
611
+ pdf.add_page()
612
+
613
+ text = ' ' + 'A' * 70
614
+ htmlcontent = '<i>' + text + '</i>'
615
+
616
+ pdf.write_html(htmlcontent, true, 0, true, 0)
617
+ pdf_text = pdf.get_html_text(1)
618
+ assert_equal 'A' * 70, pdf_text
619
+ end
620
+
621
+ test "write_html <u> tag test" do
622
+ pdf = MYPDF.new
623
+ pdf.set_print_header(false)
624
+ pdf.add_page()
625
+
626
+ text = ' ' + 'A' * 70
627
+ htmlcontent = '<u>' + text + '</u>'
628
+
629
+ pdf.write_html(htmlcontent, true, 0, true, 0)
630
+ pdf_text = pdf.get_html_text(1)
631
+ assert_equal 'A' * 70, pdf_text
632
+ end
633
+
634
+ test "write_html <pre> tag space 1 test" do
635
+ pdf = MYPDF.new
636
+ pdf.set_print_header(false)
637
+ pdf.add_page()
638
+
639
+ text = ' ' + 'A' * 70
640
+ htmlcontent = '<pre>' + text + '</pre>'
641
+
642
+ pdf.write_html(htmlcontent, true, 0, true, 0)
643
+ pdf_text = pdf.get_html_text(1)
644
+ assert_equal "\xa0" + 'A' * 70, pdf_text
645
+ end
646
+
647
+ test "write_html <pre> tag space 2 test" do
648
+ pdf = MYPDF.new
649
+ pdf.set_print_header(false)
650
+ pdf.add_page()
651
+
652
+ text = ' ' + 'A' * 70
653
+ htmlcontent = '<pre>' + text + '</pre>'
654
+
655
+ pdf.write_html(htmlcontent, true, 0, true, 0)
656
+ pdf_text = pdf.get_html_text(1)
657
+ assert_equal "\xa0" * 2 + 'A' * 70, pdf_text
658
+ end
659
+
660
+ test "write_html Character Entities test" do
661
+ pdf = MYPDF.new
662
+ pdf.set_print_header(false)
663
+
664
+ character_entities = {
665
+ '&lt;' => '<',
666
+ '&gt;' => '>',
667
+ '&amp;' => '&',
668
+ '&quot;' => '"',
669
+ '&nbsp;' => "\xa0",
670
+ '&cent;' => "\xa2",
671
+ '&pound;' => "\xa3",
672
+ '&yen;' => "\xa5",
673
+ '&copy;' => "\xa9",
674
+ '&reg;' => "\xae",
675
+ '&euro;' => "\x80",
676
+ }
677
+ character_entities.each {|ce, c|
678
+ pdf.add_page()
679
+ page = pdf.get_page
680
+ pdf.write_html(ce, true, 0, true, 0)
681
+ pdf_text = pdf.get_html_text(page)
682
+ assert_equal '[' + ce + ']:' + c, '[' + ce + ']:' + pdf_text
683
+ }
684
+ end
685
+
686
+ test "write_html Character Entities test pre mode" do
687
+ pdf = MYPDF.new
688
+ pdf.set_print_header(false)
689
+
690
+ character_entities = {
691
+ '&lt;' => '<',
692
+ '&gt;' => '>',
693
+ '&amp;' => '&',
694
+ '&quot;' => '"',
695
+ '&nbsp;' => "\xa0",
696
+ '&cent;' => "\xa2",
697
+ '&pound;' => "\xa3",
698
+ '&yen;' => "\xa5",
699
+ '&copy;' => "\xa9",
700
+ '&reg;' => "\xae",
701
+ '&euro;' => "\x80",
702
+ }
703
+ character_entities.each {|ce, c|
704
+ pdf.add_page()
705
+ page = pdf.get_page
706
+ pdf.write_html('<pre>' + ce + '</pre>', true, 0, true, 0)
707
+ pdf_text = pdf.get_html_text(page)
708
+ assert_equal '[' + ce + ']:' + c, '[' + ce + ']:' + pdf_text
709
+ }
710
+ end
711
+
712
+ test "unhtmlentities test" do
713
+ pdf = RBPDF.new
714
+ character_entities = {
715
+ '&lt;' => '<',
716
+ '&gt;' => '>',
717
+ '&amp;' => '&',
718
+ '&quot;' => '"',
719
+ '&nbsp;' => "\xc2\xa0",
720
+ '&cent;' => "\xc2\xa2",
721
+ '&pound;' => "\xc2\xa3",
722
+ '&yen;' => "\xc2\xa5",
723
+ '&copy;' => "\xc2\xa9",
724
+ '&reg;' => "\xc2\xae",
725
+ '&euro;' => "\xe2\x82\xac",
726
+ }
727
+ character_entities.each {|ce, c|
728
+ text = pdf.unhtmlentities(ce)
729
+ text.force_encoding('ASCII-8BIT') if text.respond_to?(:force_encoding)
730
+ assert_equal '[' + ce + ']:' + c, '[' + ce + ']:' + text
731
+ }
732
+ end
579
733
  end
@@ -225,7 +225,7 @@ class RbpdfTest < ActiveSupport::TestCase
225
225
  pdf.add_page
226
226
  img_file = File.join(File.dirname(__FILE__), 'png_test_alpha.png')
227
227
  info = pdf.image(img_file, 10, 10, 100, '', '', 'https://rubygems.org/gems/rbpdf', '', false, 300)
228
- assert_equal info, nil
228
+ assert_equal info, true
229
229
  end
230
230
 
231
231
  test "Image GIF test" do
@@ -257,4 +257,39 @@ class RbpdfTest < ActiveSupport::TestCase
257
257
  info = pdf.image(img_file, 10, 10, 100, '', '', 'https://rubygems.org/gems/rbpdf', '', false, 300)
258
258
  assert_equal info, 1
259
259
  end
260
+
261
+ test "HTML Image test" do
262
+ return unless Object.const_defined?(:Magick)
263
+
264
+ images = {
265
+ 'png_test_alpha.png' => 40.11,
266
+ 'png_test_msk_alpha.png' => 40.11,
267
+ 'png_test_non_alpha.png' => 40.11,
268
+ 'logo_rbpdf_8bit.png' => 36.58,
269
+ 'logo_rbpdf_8bit.gif' => 36.58,
270
+ 'logo_rbpdf_8bit_alpha.gif' => 36.58,
271
+ 'logo_rbpdf_8bit.jpg' => 36.58,
272
+ 'logo_rbpdf_mono_gray.jpg' => 36.58,
273
+ 'logo_rbpdf_mono_gray.png' => 36.58,
274
+ 'logo_rbpdf_mono_rgb.jpg' => 36.58,
275
+ 'logo_rbpdf_mono_rgb.png' => 36.58,
276
+ 'ng.png' => 9.42
277
+ }
278
+
279
+ pdf = RBPDF.new
280
+ images.each {|image, h|
281
+ pdf.add_page
282
+ img_file = File.join(File.dirname(__FILE__), image)
283
+ htmlcontent = '<img src="'+ img_file + '"/>'
284
+
285
+ x_org = pdf.get_x
286
+ y_org = pdf.get_y
287
+ pdf.write_html(htmlcontent, true, 0, true, 0)
288
+ x = pdf.get_x
289
+ y = pdf.get_y
290
+
291
+ assert_equal '[' + image + ']:' + x_org.to_s, '[' + image + ']:' + x.to_s
292
+ assert_equal '[' + image + ']:' + (y_org + h).round(2).to_s, '[' + image + ']:' + y.round(2).to_s
293
+ }
294
+ end
260
295
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbpdf
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.18.6
4
+ version: 1.18.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - NAITOH Jun
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-20 00:00:00.000000000 Z
11
+ date: 2015-11-03 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: htmlentities
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
19
+ version: 4.3.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 4.3.1
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -176,7 +190,6 @@ files:
176
190
  - test/rbpdf_viewerpreferences_test.rb
177
191
  - test/rbpdf_write_test.rb
178
192
  - test/test_helper.rb
179
- - test/test_helper.rb_
180
193
  - test_unicode.rbpdf
181
194
  - utf8test.txt
182
195
  homepage: ''
@@ -242,4 +255,3 @@ test_files:
242
255
  - test/rbpdf_viewerpreferences_test.rb
243
256
  - test/rbpdf_write_test.rb
244
257
  - test/test_helper.rb
245
- - test/test_helper.rb_
@@ -1,31 +0,0 @@
1
- #!/usr/bin/env ruby
2
- #require 'test/unit'
3
- #require 'active_support'
4
- require 'rbpdf'
5
-
6
- =begin
7
- if Rails::VERSION::MAJOR >= 4
8
- # require 'active_support/testing/autorun' # Rails 4.2
9
-
10
- gem 'test-unit'
11
- require 'test/unit'
12
- #Test::Unit::AutoRunner.new(true).run
13
- Test::Unit::AutoRunner.new(false).run
14
- #(r = Test::Unit::AutoRunner.new(true)).process_args(ARGV) or
15
- # abort r.options.banner + " tests..."
16
- #exit r.run
17
-
18
- # require 'active_support/testing/autorun' # Rails 4.2
19
-
20
- #gem 'minitest'
21
- #require 'minitest'
22
- #Minitest.autorun
23
-
24
- else
25
- =end
26
- # require 'rails/all'
27
- require "rails"
28
-
29
- class Application < Rails::Application
30
- end
31
- #end