added text selection test to testsuite
authorMatthias Kramm <kramm@quiss.org>
Wed, 19 Aug 2009 14:44:37 +0000 (16:44 +0200)
committerMatthias Kramm <kramm@quiss.org>
Wed, 19 Aug 2009 14:44:37 +0000 (16:44 +0200)
spec/spec_helper.rb
spec/textselectspaces.pdf [new file with mode: 0644]
spec/textselectspaces.py [new file with mode: 0644]
spec/textselectspaces.spec.rb [new file with mode: 0644]

index cf9c971..bbfe1a5 100644 (file)
@@ -53,7 +53,8 @@ class Area
        @rgb.minmax != [@rgb[0],@rgb[0]] or raise AreaError.new(self,"is plain colored")
     end
     def should_contain_text(text)
-       @file.get_text(@x1,@y1,@x2,@y2) == text or raise AreaError.new(self, "doesn't contain text #{text}")
+       text2 = @file.get_text(@x1,@y1,@x2,@y2) 
+       text2 == text or raise AreaError.new(self, "doesn't contain text \"#{text}\" (found: \"#{text2}\")")
     end
     def to_s
        "(#{@x1},#{@y1},#{@x2},#{@y2})"
diff --git a/spec/textselectspaces.pdf b/spec/textselectspaces.pdf
new file mode 100644 (file)
index 0000000..0a35174
--- /dev/null
@@ -0,0 +1,147 @@
+%PDF-1.6
+%äãÏÒ
+1 0 obj
+[/PDF/ImageB/ImageC/ImageI/Text]
+endobj
+4 0 obj
+<</Length 5 0 R
+/Filter/FlateDecode
+>>
+stream
+x\9cm\90»\ eÂ0\fEw\7fEF\18\1aâÄNÛµ\12L\8cþ\ 2
+\15\ fA\ 5\12\82Ï')\bµª\17K9º9¾r#°Ú8\83\95\91\ eòÜ\ 2¥gtFö°\90ãa)g`´\ eÉ|Ùýyj/\99F\9f¨ÿÑÝ£\7fÝ\ 6Z\8f²]ÿάÀ*eÉ\14a¢%U˪\96U-kÚà5-\ 5UëæÚµ\80·\9cXºÃ0Û+4\ 2\18M9Ý\83\96\95=éï|\ fգ쿾\ f\96çõ£Z¿Të\93Zÿ\ 3Zépi
+endstream
+endobj
+5 0 obj
+166
+endobj
+7 0 obj
+<</ProcSet 1 0 R
+/Font<</F0 6 0 R
+>>
+>>
+endobj
+8 0 obj
+<</Creator (smalltext.py)
+/CreationDate (D:20090819163857+02'00')
+/Producer (PDFlib Lite 7.0.2p8 \(Python 2.5.4/Linux\))
+>>
+endobj
+6 0 obj
+<</Type/Font
+/Subtype/Type1
+/BaseFont/Helvetica
+/FontDescriptor 9 0 R
+/FirstChar 0
+/LastChar 255
+/Widths[278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278
+278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278
+278 278 355 556 556 889 667 191 333 333 389 584 278 333 278 278
+556 556 556 556 556 556 556 556 556 556 278 278 584 584 584 556
+1015 667 667 722 722 667 611 778 722 278 500 667 556 833 722 778
+667 778 722 667 611 722 667 944 667 667 611 278 278 278 469 556
+333 556 556 500 556 556 278 556 556 222 222 500 222 833 556 556
+556 556 333 500 278 556 500 722 500 500 500 334 260 334 584 278
+278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278
+278 278 278 278 278 278 278 278 278 278 278 278 278 278 278 278
+278 333 556 556 556 556 260 556 333 737 370 556 584 333 737 552
+400 549 333 333 333 576 537 278 333 333 365 556 834 834 834 611
+667 667 667 667 667 667 1000 722 667 667 667 667 278 278 278 278
+722 722 778 778 778 778 778 584 778 722 722 722 722 667 667 611
+556 556 556 556 556 556 889 500 556 556 556 556 278 278 278 278
+556 556 556 556 556 556 556 549 611 556 556 556 556 500 556 500]
+/Encoding 10 0 R
+>>
+endobj
+10 0 obj
+<</Type/Encoding
+/BaseEncoding/WinAnsiEncoding
+/Differences[0/.notdef
+/.notdef
+/.notdef
+128/.notdef
+130/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+142/.notdef
+145/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+/.notdef
+158/.notdef
+/.notdef
+/space
+173/hyphen
+]
+>>
+endobj
+9 0 obj
+<</Type/FontDescriptor
+/Flags 32
+/Ascent 718
+/CapHeight 718
+/Descent -207
+/FontBBox[-665 -325 2028 1037]
+/FontName/Helvetica
+/ItalicAngle 0
+/StemV 88
+/XHeight 523
+>>
+endobj
+3 0 obj
+<</Type/Page
+/Parent 2 0 R
+/Contents 4 0 R
+/Resources 7 0 R
+/MediaBox[0 0 612 200]
+>>
+endobj
+2 0 obj
+<</Type/Pages
+/Count 1
+/Kids[ 3 0 R]>>
+endobj
+11 0 obj
+<</Type/Catalog
+/Pages 2 0 R
+>>
+endobj
+xref
+0 12
+0000000000 65535 f 
+0000000015 00000 n 
+0000002348 00000 n 
+0000002247 00000 n 
+0000000063 00000 n 
+0000000301 00000 n 
+0000000514 00000 n 
+0000000320 00000 n 
+0000000375 00000 n 
+0000002066 00000 n 
+0000001681 00000 n 
+0000002402 00000 n 
+trailer
+<</Size 12
+/Root 11 0 R
+/Info 8 0 R
+/ID[<8F26BB647D55ECD56991EB3EFE624E02><8F26BB647D55ECD56991EB3EFE624E02>]
+>>
+startxref
+2450
+%%EOF
diff --git a/spec/textselectspaces.py b/spec/textselectspaces.py
new file mode 100644 (file)
index 0000000..737744f
--- /dev/null
@@ -0,0 +1,63 @@
+from sys import * 
+from pdflib_py import * 
+p = PDF_new() 
+PDF_open_file(p, "textselectspaces.pdf")
+
+PDF_set_parameter(p, "usercoordinates", "true")
+
+PDF_set_info(p, "Creator", "smalltext.py")
+PDF_begin_page(p, 612, 200)
+font = PDF_load_font(p, "Helvetica", "host", "")
+
+PDF_setfont(p, font, 18.0)
+
+x = 40
+y = 100
+def write_word(s, d):
+    global x,y
+    w = PDF_stringwidth(p, s, font, 18.0)
+    PDF_show(p, s)
+    x+=w+d
+    PDF_set_text_pos(p, x, y)
+
+x,y = 40,160
+PDF_set_text_pos(p, x, y)
+write_word("The", 20)
+write_word("quick", 20)
+write_word("brown", 20)
+write_word("fox", 20)
+
+x,y = 40,130
+PDF_set_text_pos(p, x, y)
+write_word("The", 10)
+write_word("quick", 10)
+write_word("brown", 10)
+write_word("fox", 10)
+
+x,y = 40,100
+PDF_set_text_pos(p, x, y)
+write_word("The", 1)
+write_word("quick", 1)
+write_word("brown", 1)
+write_word("fox", 1)
+
+PDF_setmatrix(p, 2.5, 0, 0, 1.0, 0, 0)
+x,y = 16,70
+PDF_set_text_pos(p, x, y)
+write_word("The", 0.5)
+write_word("quick", 0.5)
+write_word("brown", 0.5)
+write_word("fox", 0.5)
+
+PDF_setmatrix(p, 2.5, 0, 0, 1.0, 0, 0)
+x,y = 16,40
+PDF_set_text_pos(p, x, y)
+write_word("The", 5)
+write_word("quick", 5)
+write_word("brown", 5)
+write_word("fox", 5)
+
+
+PDF_end_page(p)
+PDF_close(p)
+PDF_delete(p);
diff --git a/spec/textselectspaces.spec.rb b/spec/textselectspaces.spec.rb
new file mode 100644 (file)
index 0000000..8e126a5
--- /dev/null
@@ -0,0 +1,11 @@
+require File.dirname(__FILE__) + '/spec_helper'
+
+describe "pdf conversion" do
+    convert_file "textselectspaces.pdf" do
+        area_at(32,22,257,46).should_contain_text 'The quick brown fox'
+        area_at(32,53,226,77).should_contain_text 'The quick brown fox'
+        area_at(31,84,198,108).should_contain_text 'Thequickbrownfox'
+        area_at(33,111,423,137).should_contain_text 'Thequickbrownfox'
+        area_at(35,141,455,167).should_contain_text 'The quick brown fox'
+    end
+end