rbpdf 1.18.6 → 1.18.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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