rbpdf 1.18.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (120) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG +35 -0
  3. data/Gemfile +4 -0
  4. data/README.md +68 -0
  5. data/Rakefile +2 -0
  6. data/lib/core/rmagick.rb +85 -0
  7. data/lib/fonts/README.z +2 -0
  8. data/lib/fonts/arialunicid0_cw.rb +1738 -0
  9. data/lib/fonts/cid0cs.rb +21 -0
  10. data/lib/fonts/cid0ct.rb +21 -0
  11. data/lib/fonts/cid0jp.rb +21 -0
  12. data/lib/fonts/cid0kr.rb +21 -0
  13. data/lib/fonts/courier.rb +37 -0
  14. data/lib/fonts/dejavu-fonts-ttf-2.33/AUTHORS +53 -0
  15. data/lib/fonts/dejavu-fonts-ttf-2.33/BUGS +3 -0
  16. data/lib/fonts/dejavu-fonts-ttf-2.33/LICENSE +99 -0
  17. data/lib/fonts/dejavu-fonts-ttf-2.33/NEWS +1315 -0
  18. data/lib/fonts/dejavu-fonts-ttf-2.33/README +59 -0
  19. data/lib/fonts/dejavusans.ctg.z +0 -0
  20. data/lib/fonts/dejavusans.rb +338 -0
  21. data/lib/fonts/dejavusans.z +0 -0
  22. data/lib/fonts/dejavusansb.ctg.z +0 -0
  23. data/lib/fonts/dejavusansb.rb +330 -0
  24. data/lib/fonts/dejavusansb.z +0 -0
  25. data/lib/fonts/dejavusansbi.ctg.z +0 -0
  26. data/lib/fonts/dejavusansbi.rb +297 -0
  27. data/lib/fonts/dejavusansbi.z +0 -0
  28. data/lib/fonts/dejavusansi.ctg.z +0 -0
  29. data/lib/fonts/dejavusansi.rb +305 -0
  30. data/lib/fonts/dejavusansi.z +0 -0
  31. data/lib/fonts/freefont-20080912/AUTHORS +191 -0
  32. data/lib/fonts/freefont-20080912/COPYING +341 -0
  33. data/lib/fonts/freefont-20080912/CREDITS +506 -0
  34. data/lib/fonts/freefont-20080912/ChangeLog +3320 -0
  35. data/lib/fonts/freefont-20080912/INSTALL +81 -0
  36. data/lib/fonts/freefont-20080912/README +108 -0
  37. data/lib/fonts/freemono.ctg.z +0 -0
  38. data/lib/fonts/freemono.rb +203 -0
  39. data/lib/fonts/freemono.z +0 -0
  40. data/lib/fonts/freemonob.ctg.z +0 -0
  41. data/lib/fonts/freemonob.rb +120 -0
  42. data/lib/fonts/freemonob.z +0 -0
  43. data/lib/fonts/freemonobi.ctg.z +0 -0
  44. data/lib/fonts/freemonobi.rb +84 -0
  45. data/lib/fonts/freemonobi.z +0 -0
  46. data/lib/fonts/freemonoi.ctg.z +0 -0
  47. data/lib/fonts/freemonoi.rb +136 -0
  48. data/lib/fonts/freemonoi.z +0 -0
  49. data/lib/fonts/freesans.ctg.z +0 -0
  50. data/lib/fonts/freesans.rb +196 -0
  51. data/lib/fonts/freesans.z +0 -0
  52. data/lib/fonts/freesansb.ctg.z +0 -0
  53. data/lib/fonts/freesansb.rb +136 -0
  54. data/lib/fonts/freesansb.z +0 -0
  55. data/lib/fonts/freesansbi.ctg.z +0 -0
  56. data/lib/fonts/freesansbi.rb +108 -0
  57. data/lib/fonts/freesansbi.z +0 -0
  58. data/lib/fonts/freesansi.ctg.z +0 -0
  59. data/lib/fonts/freesansi.rb +136 -0
  60. data/lib/fonts/freesansi.z +0 -0
  61. data/lib/fonts/freeserif.ctg.z +0 -0
  62. data/lib/fonts/freeserif.rb +285 -0
  63. data/lib/fonts/freeserif.z +0 -0
  64. data/lib/fonts/freeserifb.ctg.z +0 -0
  65. data/lib/fonts/freeserifb.rb +164 -0
  66. data/lib/fonts/freeserifb.z +0 -0
  67. data/lib/fonts/freeserifbi.ctg.z +0 -0
  68. data/lib/fonts/freeserifbi.rb +130 -0
  69. data/lib/fonts/freeserifbi.z +0 -0
  70. data/lib/fonts/freeserifi.ctg.z +0 -0
  71. data/lib/fonts/freeserifi.rb +151 -0
  72. data/lib/fonts/freeserifi.z +0 -0
  73. data/lib/fonts/helvetica.rb +34 -0
  74. data/lib/fonts/helveticab.rb +34 -0
  75. data/lib/fonts/helveticabi.rb +34 -0
  76. data/lib/fonts/helveticai.rb +34 -0
  77. data/lib/fonts/hysmyeongjostdmedium.rb +31 -0
  78. data/lib/fonts/kozgopromedium.rb +47 -0
  79. data/lib/fonts/kozminproregular.rb +46 -0
  80. data/lib/fonts/msungstdlight.rb +23 -0
  81. data/lib/fonts/sjis.rb +834 -0
  82. data/lib/fonts/stsongstdlight.rb +23 -0
  83. data/lib/fonts/symbol.rb +33 -0
  84. data/lib/fonts/times.rb +34 -0
  85. data/lib/fonts/timesb.rb +34 -0
  86. data/lib/fonts/timesbi.rb +34 -0
  87. data/lib/fonts/timesi.rb +34 -0
  88. data/lib/fonts/uni2cid_ac15.rb +23613 -0
  89. data/lib/fonts/uni2cid_ag15.rb +30222 -0
  90. data/lib/fonts/uni2cid_aj16.rb +15705 -0
  91. data/lib/fonts/uni2cid_ak12.rb +17530 -0
  92. data/lib/fonts/zapfdingbats.rb +33 -0
  93. data/lib/htmlcolors.rb +207 -0
  94. data/lib/rbpdf.rb +14472 -0
  95. data/lib/rbpdf/version.rb +3 -0
  96. data/lib/unicode_data.rb +18315 -0
  97. data/logo_example.png +0 -0
  98. data/rbpdf.gemspec +35 -0
  99. data/test/rbpdf_bidi_test.rb +65 -0
  100. data/test/rbpdf_bookmark_test.rb +57 -0
  101. data/test/rbpdf_cell_test.rb +232 -0
  102. data/test/rbpdf_content_test.rb +117 -0
  103. data/test/rbpdf_css_test.rb +318 -0
  104. data/test/rbpdf_dom_test.rb +113 -0
  105. data/test/rbpdf_font_func_test.rb +27 -0
  106. data/test/rbpdf_font_style_test.rb +34 -0
  107. data/test/rbpdf_font_test.rb +181 -0
  108. data/test/rbpdf_format_test.rb +27 -0
  109. data/test/rbpdf_func_test.rb +126 -0
  110. data/test/rbpdf_html_test.rb +164 -0
  111. data/test/rbpdf_htmlcell_test.rb +64 -0
  112. data/test/rbpdf_image_test.rb +108 -0
  113. data/test/rbpdf_test.rb +245 -0
  114. data/test/rbpdf_transaction_test.rb +199 -0
  115. data/test/rbpdf_viewerpreferences_test.rb +37 -0
  116. data/test/rbpdf_write_test.rb +173 -0
  117. data/test/test_helper.rb +1 -0
  118. data/test_unicode.rbpdf +115 -0
  119. data/utf8test.txt +120 -0
  120. metadata +216 -0
@@ -0,0 +1,37 @@
1
+ require 'test_helper'
2
+
3
+ class RbpdfPageTest < ActiveSupport::TestCase
4
+ class MYPDF < RBPDF
5
+ def putviewerpreferences
6
+ super
7
+ end
8
+ end
9
+
10
+ test "viewerpreferences test" do
11
+ # set array for viewer preferences
12
+ preferences = {
13
+ 'HideToolbar' => true,
14
+ 'HideMenubar' => true,
15
+ 'HideWindowUI' => true,
16
+ 'FitWindow' => true,
17
+ 'CenterWindow' => true,
18
+ 'DisplayDocTitle' => true,
19
+ 'NonFullScreenPageMode' => 'UseNone', # UseNone, UseOutlines, UseThumbs, UseOC
20
+ 'ViewArea' => 'CropBox', # CropBox, BleedBox, TrimBox, ArtBox
21
+ 'ViewClip' => 'CropBox', # CropBox, BleedBox, TrimBox, ArtBox
22
+ 'PrintArea' => 'CropBox', # CropBox, BleedBox, TrimBox, ArtBox
23
+ 'PrintClip' => 'CropBox', # CropBox, BleedBox, TrimBox, ArtBox
24
+ 'PrintScaling' => 'AppDefault', # None, AppDefault
25
+ 'Duplex' => 'DuplexFlipLongEdge', # Simplex, DuplexFlipShortEdge, DuplexFlipLongEdge
26
+ 'PickTrayByPDFSize' => true,
27
+ 'PrintPageRange' => [1,1,2,3],
28
+ 'NumCopies' => 2
29
+ }
30
+
31
+ pdf = MYPDF.new
32
+ pdf.set_viewer_preferences(preferences)
33
+ out = pdf.putviewerpreferences()
34
+
35
+ assert_equal out, '/ViewerPreferences << /Direction /L2R /HideToolbar true /HideMenubar true /HideWindowUI true /FitWindow true /CenterWindow true /DisplayDocTitle true /NonFullScreenPageMode /UseNone /ViewArea /CropBox /ViewClip /CropBox /PrintArea /CropBox /PrintClip /CropBox /PrintScaling /AppDefault /Duplex /DuplexFlipLongEdge /PickTrayByPDFSize true /PrintPageRange [0 0 1 2] /NumCopies 2 >>'
36
+ end
37
+ end
@@ -0,0 +1,173 @@
1
+ require 'test_helper'
2
+
3
+ class RbpdfTest < ActiveSupport::TestCase
4
+
5
+ test "write Basic test" do
6
+ pdf = RBPDF.new
7
+
8
+ line = pdf.write(0, "LINE 1")
9
+ assert_equal line, 1
10
+
11
+ line = pdf.write(0, "LINE 1\n")
12
+ assert_equal line, 1
13
+
14
+ line = pdf.write(0, "LINE 1\n2\n")
15
+ assert_equal line, 2
16
+
17
+ line = pdf.write(0, "")
18
+ assert_equal line, 1
19
+
20
+ line = pdf.write(0, "\n")
21
+ assert_equal line, 1
22
+
23
+ line = pdf.write(0, "abcdefghijklmnopgrstuvwxyz01234567890")
24
+ assert_equal line, 1
25
+ line = pdf.write(0, "abcdefghijklmnopgrstuvwxyz01234567890 abcdefghijklmnopgrstuvwxyz01234567890 abcdefghijklmnopgrstuvwxyz01234567890")
26
+ assert_equal line, 2
27
+ line = pdf.write(0, "abcdefghijklmnopgrstuvwxyz01234567890 abcdefghijklmnopgrstuvwxyz01234567890 abcdefghijklmnopgrstuvwxyz01234567890 abcdefghijklmnopgrstuvwxyz01234567890 abcdefghijklmnopgrstuvwxyz01234567890")
28
+ assert_equal line, 3
29
+ end
30
+
31
+ test "write Break test single line 1" do
32
+ pdf = RBPDF.new
33
+ pdf.add_page()
34
+
35
+ cell_hight = pdf.get_cell_height_ratio()
36
+ fontsize = pdf.get_font_size()
37
+ break_hight = pdf.set_auto_page_break(true)
38
+
39
+ pno = pdf.get_page
40
+ assert_equal pno, 1
41
+
42
+ 0.upto(60) do |i|
43
+ y = pdf.get_y()
44
+ old_pno = pno
45
+
46
+ line = pdf.write(0, "LINE 1\n")
47
+ assert_equal line, 1
48
+
49
+ pno = pdf.get_page
50
+
51
+ if y + fontsize * cell_hight < break_hight
52
+ assert_equal pno, old_pno
53
+ else
54
+ assert_equal pno, old_pno + 1
55
+ end
56
+ end
57
+ end
58
+
59
+ test "write Break test single line 2" do
60
+ pdf = RBPDF.new
61
+ pdf.add_page()
62
+
63
+ 0.upto(49) do |i|
64
+ line = pdf.write(0, "LINE 1\n")
65
+ assert_equal line, 1
66
+
67
+ pno = pdf.get_page
68
+ assert_equal pno, 1
69
+ end
70
+
71
+ line = pdf.write(0, "abcdefghijklmnopgrstuvwxyz01234567890 abcdefghijklmnopgrstuvwxyz01234567890 abcdefghijklmnopgrstuvwxyz01234567890")
72
+ assert_equal line, 2
73
+ pno = pdf.get_page
74
+ assert_equal pno, 2
75
+ end
76
+
77
+ test "write Break test multi line 1" do
78
+ pdf = RBPDF.new
79
+ pdf.add_page()
80
+ pno = pdf.get_page
81
+ assert_equal pno, 1
82
+
83
+ line = pdf.write(0, "1\n\n\n\n\n\n\n\n\n\n 2\n\n\n\n\n\n\n\n\n\n 3\n\n\n\n\n\n\n\n\n\n 4\n\n\n\n\n\n\n\n\n\n")
84
+ assert_equal line, 40
85
+ pno = pdf.get_page
86
+ assert_equal pno, 1
87
+
88
+ line = pdf.write(0, "1\n\n\n\n\n\n\n\n\n\n 2\n\n\n\n\n\n\n\n\n\n 3\n\n\n\n\n\n\n\n\n\n 4\n\n\n\n\n\n\n\n\n\n")
89
+ assert_equal line, 40
90
+ pno = pdf.get_page
91
+ assert_equal pno, 2
92
+ end
93
+
94
+ test "write Break test multi line 2" do
95
+ pdf = RBPDF.new
96
+ pdf.add_page()
97
+ pno = pdf.get_page
98
+ assert_equal pno, 1
99
+
100
+ line = pdf.write(0, "1\n\n\n\n\n\n\n\n\n\n 2\n\n\n\n\n\n\n\n\n\n 3\n\n\n\n\n\n\n\n\n\n 4\n\n\n\n\n\n\n\n\n\n 5\n\n\n\n\n\n\n\n\n\n 6\n\n\n\n\n\n\n\n\n\n 7\n\n\n\n\n\n\n\n\n\n 8\n\n\n\n\n\n\n\n\n\n 9\n\n\n\n\n\n\n\n\n\n 10\n\n\n\n\n\n\n\n\n\n 11\n\n\n\n\n\n\n\n\n\n")
101
+ assert_equal line, 110
102
+ pno = pdf.get_page
103
+ assert_equal pno, 3
104
+ end
105
+
106
+ test "write firstline test" do
107
+ pdf = RBPDF.new
108
+ pdf.add_page()
109
+ pno = pdf.get_page
110
+ assert_equal pno, 1
111
+
112
+ line = pdf.write(0, "\n", nil, 0, '', false, 0, true)
113
+ assert_equal line, "\n"
114
+
115
+ line = pdf.write(0, "\n", nil, 0, '', false, 0, true)
116
+ assert_equal line, "\n"
117
+
118
+ line = pdf.write(0, "12345\n", nil, 0, '', false, 0, true)
119
+ assert_equal line, "\n"
120
+
121
+ line = pdf.write(0, "12345\nabcde", nil, 0, '', false, 0, true)
122
+ assert_equal line, "\nabcde"
123
+
124
+ line = pdf.write(0, "12345\nabcde\n", nil, 0, '', false, 0, true)
125
+ assert_equal line, "\nabcde\n"
126
+
127
+ line = pdf.write(0, "12345\nabcde\nefgh", nil, 0, '', false, 0, true)
128
+ assert_equal line, "\nabcde\nefgh"
129
+ end
130
+
131
+ class MYPDF < RBPDF
132
+ def endlinex
133
+ @endlinex
134
+ end
135
+ def r_margin
136
+ @r_margin
137
+ end
138
+ end
139
+
140
+ test "write endline x test 1" do
141
+ pdf = MYPDF.new
142
+ pdf.add_page()
143
+ line = pdf.write(0, " cccccccccc cccccccccc ", nil, 0, '', false, 0, true)
144
+ endlinex = pdf.endlinex()
145
+ assert_not_equal endlinex, 0
146
+ end
147
+
148
+ test "write endline x test 2" do
149
+ pdf = MYPDF.new
150
+ pdf.add_page()
151
+
152
+ r_margin = pdf.r_margin()
153
+ width = pdf.getPageWidth()
154
+ x = width - r_margin - 10
155
+ pdf.SetX(x)
156
+ line = pdf.write(0, " cccccccccc cccccccccc ", nil, 0, '', false, 0, true)
157
+ endlinex = pdf.endlinex()
158
+ assert_equal endlinex, x
159
+ end
160
+
161
+ test "write endline x test 3" do
162
+ pdf = MYPDF.new
163
+ pdf.add_page()
164
+
165
+ r_margin = pdf.r_margin()
166
+ width = pdf.getPageWidth()
167
+ x = width - r_margin - 10
168
+ pdf.SetX(x)
169
+ line = pdf.write(0, "cccccccccc cccccccccc ", nil, 0, '', false, 0, true)
170
+ endlinex = pdf.endlinex()
171
+ assert_not_equal endlinex, x
172
+ end
173
+ end
@@ -0,0 +1 @@
1
+ #!/usr/bin/env ruby
@@ -0,0 +1,115 @@
1
+ <%
2
+ doc_title = "test title"
3
+ doc_subject = "test description"
4
+ doc_keywords = "test keywords"
5
+ htmlcontent = "&lt; € &euro; &#8364; &amp; è &egrave; &copy; &gt;<br /><h1>heading 1</h1><h2>heading 2</h2><h3>heading 3</h3><h4>heading 4</h4><h5>heading 5</h5><h6>heading 6</h6>ordered list:<br /><ol><li><b>bold text</b></li><li><i>italic text</i></li><li><u>underlined text</u></li><li><a href=\"http:#www.tecnick.com\">link to http://www.tecnick.com</a></li><li>test break<br />second line<br />third line</li><li><font size=\"+3\">font + 3</font></li><li><small>small text</small></li><li>normal <sub>subscript</sub> <sup>superscript</sup></li></ul><hr />table:<br /><table border=\"1\" cellspacing=\"1\" cellpadding=\"1\"><tr><th>#</th><th>A</th><th>B</th></tr><tr><th>1</th><td bgcolor=\"#cccccc\">A1</td><td>B1</td></tr><tr><th>2</th><td>A2 € &euro; &#8364; &amp; è &egrave; </td><td>B2</td></tr><tr><th>3</th><td>A3</td><td><font color=\"#FF0000\">B3</font></td></tr></table><hr />image:<br /><img src=\"#{File.join(Rails.root.to_s, 'public')}/logo_example.png\" alt=\"test alt attribute\" width=\"100\" height=\"100\" border=\"0\" />"
6
+
7
+
8
+ # ENGLISH
9
+
10
+ @l = {}
11
+
12
+ # PAGE META DESCRIPTORS --------------------------------------
13
+
14
+ @l['a_meta_charset'] = "UTF-8"
15
+ @l['a_meta_dir'] = "ltr"
16
+ @l['a_meta_language'] = "en"
17
+
18
+ # TRANSLATIONS --------------------------------------
19
+ @l['w_page'] = "page"
20
+
21
+
22
+ # create new PDF document (document units are set by default to millimeters)
23
+ pdf = RBPDF.new
24
+
25
+ # set document information
26
+ pdf.set_creator("RBPDF")
27
+ pdf.set_author("RBPDF")
28
+ pdf.set_title(doc_title)
29
+ pdf.set_subject(doc_subject)
30
+ pdf.set_keywords(doc_keywords)
31
+
32
+ pdf.set_header_data("#{File.join(Rails.root.to_s, 'public')}/logo_example.png", 20, "header title", "first row\nsecond row\nthird row")
33
+
34
+ #set margins
35
+ pdf.set_margins(15, 27, 15)
36
+ #set auto page breaks
37
+ pdf.set_auto_page_break(true, 25)
38
+ pdf.set_print_header
39
+ pdf.set_print_footer
40
+ pdf.set_header_margin(5)
41
+ pdf.set_footer_margin(10)
42
+ pdf.set_image_scale(4); #set image scale factor
43
+
44
+ pdf.set_header_font(["FreeSans", '', 10])
45
+ pdf.set_footer_font(["FreeSans", '', 8])
46
+
47
+ pdf.set_language_array(@l) # set language items
48
+
49
+
50
+ #initialize document
51
+ pdf.alias_nb_pages()
52
+
53
+ pdf.add_page()
54
+
55
+ # set barcode
56
+ # pdf.set_barcode(Time.now.strftime("Y-m-d H:i:s"))
57
+
58
+ # output some HTML code
59
+ pdf.set_font("times", "", 10)
60
+
61
+ pdf.write_html(htmlcontent, true, 0)
62
+
63
+ # output two html columns
64
+ first_column_width = 80
65
+ current_y_position = pdf.get_y()
66
+ pdf.write_html_cell(first_column_width, 0, '', current_y_position, "<b>hello</b>", 0, 0, 0)
67
+ pdf.write_html_cell(0, 0, first_column_width, current_y_position, "<i>world</i>", 0, 1, 0)
68
+
69
+ # output some content
70
+ pdf.set_font("times", "BI", 20)
71
+ pdf.cell(0,10,"TEST Bold-Italic Cell",1,1,'C')
72
+
73
+ # output some UTF-8 test content
74
+ pdf.add_page()
75
+ pdf.set_font("FreeSerif", "", 12)
76
+ utf8text = open(File.join(Rails.root.to_s, 'public',"utf8test.txt"), "rb").read # get utf-8 text form file
77
+ pdf.set_fill_color(230, 240, 255, true)
78
+ pdf.write(5, utf8text, '', 1)
79
+
80
+ # remove page header/footer
81
+ pdf.set_print_header(false)
82
+ pdf.set_print_footer(false)
83
+
84
+ # Two HTML columns test
85
+ pdf.add_page()
86
+ right_column = "<b>right column</b> right column right column right column right column
87
+ right column right column right column right column right column right column
88
+ right column right column right column right column right column right column"
89
+ left_column = "<b>left column</b> left column left column left column left column left
90
+ column left column left column left column left column left column left column
91
+ left column left column left column left column left column left column left
92
+ column"
93
+ first_column_width = 80
94
+ second_column_width = 80
95
+ column_space = 20
96
+ current_y_position = pdf.get_y()
97
+ pdf.write_html_cell(first_column_width, 0, '', '', left_column, 1, 0, 0)
98
+ pdf.cell(0)
99
+ pdf.write_html_cell(second_column_width, 0, first_column_width+column_space, current_y_position, right_column, 0, 0, 0)
100
+
101
+ # add page header/footer
102
+ pdf.set_print_header(true)
103
+ pdf.set_print_footer(true)
104
+
105
+ pdf.add_page()
106
+
107
+ # multi_cell test
108
+ pdf.multi_cell(40, 5, "A test multicell line 1\ntest multicell line 2\ntest multicell line 3", 1, 'J', 0, 0)
109
+ pdf.multi_cell(40, 5, "B test multicell line 1\ntest multicell line 2\ntest multicell line 3", 1, 'J', 0)
110
+ pdf.multi_cell(40, 5, "C test multicell line 1\ntest multicell line 2\ntest multicell line 3", 1, 'J', 0, 0)
111
+ pdf.multi_cell(40, 5, "D test multicell line 1\ntest multicell line 2\ntest multicell line 3", 1, 'J', 0, 2)
112
+ pdf.multi_cell(40, 5, "F test multicell line 1\ntest multicell line 2\ntest multicell line 3", 1, 'J', 0)
113
+
114
+ #Close and output PDF document
115
+ %><%==pdf.output()%>
data/utf8test.txt ADDED
@@ -0,0 +1,120 @@
1
+ Sentences that contain all letters commonly used in a language
2
+ --------------------------------------------------------------
3
+
4
+ Markus Kuhn <http://www.cl.cam.ac.uk/~mgk25/> -- 2001-09-02
5
+
6
+ This file is UTF-8 encoded.
7
+
8
+
9
+ Danish (da)
10
+ ---------
11
+
12
+ Quizdeltagerne spiste jordbær med fløde, mens cirkusklovnen
13
+ Wolther spillede på xylofon.
14
+ (= Quiz contestants were eating strawbery with cream while Wolther
15
+ the circus clown played on xylophone.)
16
+
17
+ German (de)
18
+ -----------
19
+
20
+ Falsches Üben von Xylophonmusik quält jeden größeren Zwerg
21
+ (= Wrongful practicing of xylophone music tortures every larger dwarf)
22
+
23
+ Zwölf Boxkämpfer jagten Eva quer über den Sylter Deich
24
+ (= Twelve boxing fighters hunted Eva across the dike of Sylt)
25
+
26
+ Heizölrückstoßabdämpfung
27
+ (= fuel oil recoil absorber)
28
+ (jqvwxy missing, but all non-ASCII letters in one word)
29
+
30
+ English (en)
31
+ ------------
32
+
33
+ The quick brown fox jumps over the lazy dog
34
+
35
+ Spanish (es)
36
+ ------------
37
+
38
+ El pingüino Wenceslao hizo kilómetros bajo exhaustiva lluvia y
39
+ frío, añoraba a su querido cachorro.
40
+ (Contains every letter and every accent, but not every combination
41
+ of vowel + acute.)
42
+
43
+ French (fr)
44
+ -----------
45
+
46
+ Portez ce vieux whisky au juge blond qui fume sur son île intérieure, à
47
+ côté de l'alcôve ovoïde, où les bûches se consument dans l'âtre, ce
48
+ qui lui permet de penser à la cænogenèse de l'être dont il est question
49
+ dans la cause ambiguë entendue à Moÿ, dans un capharnaüm qui,
50
+ pense-t-il, diminue çà et là la qualité de son œuvre.
51
+
52
+ l'île exiguë
53
+ Où l'obèse jury mûr
54
+ Fête l'haï volapük,
55
+ Âne ex aéquo au whist,
56
+ Ôtez ce vœu déçu.
57
+
58
+ Le cœur déçu mais l'âme plutôt naïve, Louÿs rêva de crapaüter en
59
+ canoë au delà des îles, près du mälström où brûlent les novæ.
60
+
61
+ Irish Gaelic (ga)
62
+ -----------------
63
+
64
+ D'fhuascail Íosa, Úrmhac na hÓighe Beannaithe, pór Éava agus Ádhaimh
65
+
66
+ Hungarian (hu)
67
+ --------------
68
+
69
+ Árvíztűrő tükörfúrógép
70
+ (= flood-proof mirror-drilling machine, only all non-ASCII letters)
71
+
72
+ Icelandic (is)
73
+ --------------
74
+
75
+ Kæmi ný öxi hér ykist þjófum nú bæði víl og ádrepa
76
+
77
+ Sævör grét áðan því úlpan var ónýt
78
+ (some ASCII letters missing)
79
+
80
+ Greek (el)
81
+ -------------
82
+
83
+ Γαζέες καὶ μυρτιὲς δὲν θὰ βρῶ πιὰ στὸ χρυσαφὶ ξέφωτο
84
+ (= No more shall I see acacias or myrtles in the golden clearing)
85
+
86
+ Ξεσκεπάζω τὴν ψυχοφθόρα βδελυγμία
87
+ (= I uncover the soul-destroying abhorrence)
88
+
89
+ Hebrew (iw)
90
+ -----------
91
+
92
+ ? דג סקרן שט בים מאוכזב ולפתע מצא לו חברה איך הקליטה
93
+
94
+ Polish (pl)
95
+ -----------
96
+
97
+ Pchnąć w tę łódź jeża lub ośm skrzyń fig
98
+ (= To push a hedgehog or eight bins of figs in this boat)
99
+
100
+ Russian (ru)
101
+ ------------
102
+
103
+ В чащах юга жил бы цитрус? Да, но фальшивый экземпляр!
104
+ (= Would a citrus live in the bushes of south? Yes, but only a fake one!)
105
+
106
+ Thai (th)
107
+ ---------
108
+
109
+ [--------------------------|------------------------]
110
+ ๏ เป็นมนุษย์สุดประเสริฐเลิศคุณค่า กว่าบรรดาฝูงสัตว์เดรัจฉาน
111
+ จงฝ่าฟันพัฒนาวิชาการ อย่าล้างผลาญฤๅเข่นฆ่าบีฑาใคร
112
+ ไม่ถือโทษโกรธแช่งซัดฮึดฮัดด่า หัดอภัยเหมือนกีฬาอัชฌาสัย
113
+ ปฏิบัติประพฤติกฎกำหนดใจ พูดจาให้จ๊ะๆ จ๋าๆ น่าฟังเอย ฯ
114
+
115
+ [The copyright for the Thai example is owned by The Computer
116
+ Association of Thailand under the Royal Patronage of His Majesty the
117
+ King.]
118
+
119
+ Please let me know if you find others! Special thanks to the people
120
+ from all over the world who contributed these sentences.