rpdf2txt 0.8.2
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.
- data/History.txt +5 -0
- data/LICENCE +515 -0
- data/Manifest.txt +126 -0
- data/README.txt +30 -0
- data/Rakefile +24 -0
- data/bin/rpdf2txt +58 -0
- data/config.save +12 -0
- data/install.rb +1098 -0
- data/lib/rpdf2txt-rockit/base_extensions.rb +73 -0
- data/lib/rpdf2txt-rockit/bootstrap.rb +120 -0
- data/lib/rpdf2txt-rockit/bounded_lru_cache.rb +43 -0
- data/lib/rpdf2txt-rockit/conflict_resolution.rb +302 -0
- data/lib/rpdf2txt-rockit/directed_graph.rb +401 -0
- data/lib/rpdf2txt-rockit/glr_parser.rb +393 -0
- data/lib/rpdf2txt-rockit/grammar.rb +644 -0
- data/lib/rpdf2txt-rockit/graphdrawing.rb +107 -0
- data/lib/rpdf2txt-rockit/graphviz_dot.rb +63 -0
- data/lib/rpdf2txt-rockit/indexable.rb +53 -0
- data/lib/rpdf2txt-rockit/lalr_parsetable_generator.rb +144 -0
- data/lib/rpdf2txt-rockit/parse_table.rb +273 -0
- data/lib/rpdf2txt-rockit/parsetable_generation.rb +164 -0
- data/lib/rpdf2txt-rockit/parsing_ambiguities.rb +84 -0
- data/lib/rpdf2txt-rockit/profiler.rb +168 -0
- data/lib/rpdf2txt-rockit/reduce_actions_generator.rb +523 -0
- data/lib/rpdf2txt-rockit/rockit.rb +76 -0
- data/lib/rpdf2txt-rockit/rockit_grammar_ast_eval.rb +187 -0
- data/lib/rpdf2txt-rockit/rockit_grammars_parser.rb +126 -0
- data/lib/rpdf2txt-rockit/sourcecode_dumpable.rb +181 -0
- data/lib/rpdf2txt-rockit/stringscanner.rb +54 -0
- data/lib/rpdf2txt-rockit/syntax_tree.rb +452 -0
- data/lib/rpdf2txt-rockit/token.rb +364 -0
- data/lib/rpdf2txt-rockit/version.rb +3 -0
- data/lib/rpdf2txt/attributesparser.rb +42 -0
- data/lib/rpdf2txt/cmapparser.rb +65 -0
- data/lib/rpdf2txt/data/_cmap.grammar +11 -0
- data/lib/rpdf2txt/data/_cmap_range.grammar +15 -0
- data/lib/rpdf2txt/data/_pdfattributes.grammar +32 -0
- data/lib/rpdf2txt/data/cmap.grammar +11 -0
- data/lib/rpdf2txt/data/cmap.rb +37 -0
- data/lib/rpdf2txt/data/cmap_range.grammar +15 -0
- data/lib/rpdf2txt/data/cmap_range.rb +43 -0
- data/lib/rpdf2txt/data/fonts/Courier-Bold.afm +342 -0
- data/lib/rpdf2txt/data/fonts/Courier-BoldOblique.afm +342 -0
- data/lib/rpdf2txt/data/fonts/Courier-Oblique.afm +342 -0
- data/lib/rpdf2txt/data/fonts/Courier.afm +342 -0
- data/lib/rpdf2txt/data/fonts/Helvetica-Bold.afm +2827 -0
- data/lib/rpdf2txt/data/fonts/Helvetica-BoldOblique.afm +2827 -0
- data/lib/rpdf2txt/data/fonts/Helvetica-Oblique.afm +3051 -0
- data/lib/rpdf2txt/data/fonts/Helvetica.afm +3051 -0
- data/lib/rpdf2txt/data/fonts/License-Adobe.txt +65 -0
- data/lib/rpdf2txt/data/fonts/Symbol.afm +213 -0
- data/lib/rpdf2txt/data/fonts/Times-Bold.afm +2588 -0
- data/lib/rpdf2txt/data/fonts/Times-BoldItalic.afm +2384 -0
- data/lib/rpdf2txt/data/fonts/Times-Italic.afm +2667 -0
- data/lib/rpdf2txt/data/fonts/Times-Roman.afm +2419 -0
- data/lib/rpdf2txt/data/fonts/ZapfDingbats.afm +225 -0
- data/lib/rpdf2txt/data/pdfattributes.grammar +32 -0
- data/lib/rpdf2txt/data/pdfattributes.rb +71 -0
- data/lib/rpdf2txt/data/pdftext.grammar +102 -0
- data/lib/rpdf2txt/data/pdftext.rb +146 -0
- data/lib/rpdf2txt/default_handler.rb +352 -0
- data/lib/rpdf2txt/lzw.rb +69 -0
- data/lib/rpdf2txt/object.rb +1114 -0
- data/lib/rpdf2txt/parser.rb +169 -0
- data/lib/rpdf2txt/symbol.rb +408 -0
- data/lib/rpdf2txt/text.rb +182 -0
- data/lib/rpdf2txt/text_state.rb +434 -0
- data/lib/rpdf2txt/textparser.rb +42 -0
- data/test/data/3392_obj +0 -0
- data/test/data/397_decrypted +15 -0
- data/test/data/450_decrypted +153 -0
- data/test/data/450_obj +0 -0
- data/test/data/452_decrypted +125 -0
- data/test/data/454_decrypted +108 -0
- data/test/data/456_decrypted +106 -0
- data/test/data/458_decrypted +111 -0
- data/test/data/458_obj +0 -0
- data/test/data/460_decrypted +118 -0
- data/test/data/460_obj +0 -0
- data/test/data/463_decrypted +117 -0
- data/test/data/465_decrypted +107 -0
- data/test/data/465_obj +0 -0
- data/test/data/90_obj +0 -0
- data/test/data/90_obj_comp +1 -0
- data/test/data/decrypted +0 -0
- data/test/data/encrypt_obj +0 -0
- data/test/data/encrypt_string +0 -0
- data/test/data/encrypt_string_128bit +0 -0
- data/test/data/encrypted_object_stream.pdf +0 -0
- data/test/data/firststream +1 -0
- data/test/data/index.pdfobj +0 -0
- data/test/data/index_2bit.pdfobj +0 -0
- data/test/data/index_masked.pdfobj +0 -0
- data/test/data/indexed.pdfobj +0 -0
- data/test/data/indexed_2bit.pdfobj +0 -0
- data/test/data/indexed_masked.pdfobj +0 -0
- data/test/data/inline.png +0 -0
- data/test/data/logo.png +0 -0
- data/test/data/lzw.pdfobj +0 -0
- data/test/data/lzw_index.pdfobj +0 -0
- data/test/data/page_tree.pdf +148 -0
- data/test/data/pdf_20.png +0 -0
- data/test/data/pdf_21.png +0 -0
- data/test/data/pdf_22.png +0 -0
- data/test/data/pdf_50.png +0 -0
- data/test/data/png.pdfobj +0 -0
- data/test/data/space_bug_stream.txt +119 -0
- data/test/data/stream.txt +292 -0
- data/test/data/stream_kerning_bug.txt +13 -0
- data/test/data/stream_kerning_bug2.txt +6 -0
- data/test/data/test.pdf +0 -0
- data/test/data/test.txt +8 -0
- data/test/data/test_text.txt +42 -0
- data/test/data/working_obj +0 -0
- data/test/data/working_obj2 +0 -0
- data/test/mock.rb +149 -0
- data/test/suite.rb +30 -0
- data/test/test_pdf_object.rb +1802 -0
- data/test/test_pdf_parser.rb +1340 -0
- data/test/test_pdf_text.rb +789 -0
- data/test/test_space_bug_05_2004.rb +87 -0
- data/test/test_stream.rb +194 -0
- data/test/test_text_state.rb +315 -0
- data/usage-en.txt +112 -0
- data/user-stories/UserStories_Rpdf2Txt.txt +34 -0
- data/user-stories/documents/swissmedicjournal/04_2004.pdf +0 -0
- metadata +220 -0
|
@@ -0,0 +1,789 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
#
|
|
3
|
+
# Rpdf2txt -- PDF to Text Parser
|
|
4
|
+
# Copyright (C) 2003 Andreas Schrafl, Hannes Wyss
|
|
5
|
+
#
|
|
6
|
+
# This library is free software; you can redistribute it and/or
|
|
7
|
+
# modify it under the terms of the GNU Lesser General Public
|
|
8
|
+
# License as published by the Free Software Foundation; either
|
|
9
|
+
# version 2.1 of the License, or (at your option) any later version.
|
|
10
|
+
#
|
|
11
|
+
# This library is distributed in the hope that it will be useful,
|
|
12
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
13
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
14
|
+
# Lesser General Public License for more details.
|
|
15
|
+
#
|
|
16
|
+
# You should have received a copy of the GNU Lesser General Public
|
|
17
|
+
# License along with this library; if not, write to the Free Software
|
|
18
|
+
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
19
|
+
#
|
|
20
|
+
# ywesee - intellectual capital connected, Winterthurerstrasse 52, CH-8006 Z�rich, Switzerland
|
|
21
|
+
# hwyss@ywesee.com, aschrafl@ywesee.com
|
|
22
|
+
#
|
|
23
|
+
# TestText -- Rpdf2txt -- 28.11.2002 -- aschrafl@ywesee.com
|
|
24
|
+
|
|
25
|
+
$: << File.dirname(__FILE__)
|
|
26
|
+
$: << File.expand_path('../lib', File.dirname(__FILE__))
|
|
27
|
+
|
|
28
|
+
require 'test/unit'
|
|
29
|
+
require 'rpdf2txt/text'
|
|
30
|
+
require 'mock'
|
|
31
|
+
|
|
32
|
+
module Rpdf2txt
|
|
33
|
+
class Text
|
|
34
|
+
attr_accessor :src
|
|
35
|
+
end
|
|
36
|
+
class TestText < Test::Unit::TestCase
|
|
37
|
+
def setup
|
|
38
|
+
path = File.expand_path("./data/test_text.txt", File.dirname(__FILE__))
|
|
39
|
+
src = File.read(path)
|
|
40
|
+
#@handler = Rpdf2txt::HTMLHandler.new
|
|
41
|
+
@text=Rpdf2txt::Text.new(src)
|
|
42
|
+
end
|
|
43
|
+
def test_scan
|
|
44
|
+
result = @text.scan
|
|
45
|
+
assert_instance_of(Array, result)
|
|
46
|
+
assert_equal(28, result.size)
|
|
47
|
+
end
|
|
48
|
+
def test_scan_line1
|
|
49
|
+
@text.src = <<-EOS
|
|
50
|
+
BT
|
|
51
|
+
[(Packungen:)-4532.5(01)-305.3(005)-7697.4(1)-566.9(Stechampulle\\(n\\))-11154.6(A)]TJ
|
|
52
|
+
ET
|
|
53
|
+
EOS
|
|
54
|
+
expected = "Packungen: 01 005 1 Stechampulle(n) A"
|
|
55
|
+
assert_nothing_raised{
|
|
56
|
+
ast = Rpdf2txt.text_parser.parse(@text.src)
|
|
57
|
+
}
|
|
58
|
+
end
|
|
59
|
+
def test_scan_line2
|
|
60
|
+
pointer = Mock.new
|
|
61
|
+
@text.src = <<-EOS
|
|
62
|
+
BT
|
|
63
|
+
[(Druck:)-277.8(Rickli+Wyss AG, Eymattstrasse 5, Postfach 316, 3027 Ber)-17.8(n)]TJ
|
|
64
|
+
ET
|
|
65
|
+
EOS
|
|
66
|
+
expected = "Druck: Rickli+Wyss AG, Eymattstrasse 5, Postfach 316, 3027 Bern"
|
|
67
|
+
assert_nothing_raised{
|
|
68
|
+
ast = Rpdf2txt.text_parser.parse(@text.src)
|
|
69
|
+
}
|
|
70
|
+
end
|
|
71
|
+
def test_extract_Tc
|
|
72
|
+
#PDF doc: Tc always has 1 operand
|
|
73
|
+
@text.src = <<-EOS
|
|
74
|
+
BT
|
|
75
|
+
-0.0002 Tc
|
|
76
|
+
ET
|
|
77
|
+
EOS
|
|
78
|
+
ast = Rpdf2txt.text_parser.parse(@text.src)
|
|
79
|
+
assert_equal("-0.0002", ast.values.first.charspace.value)
|
|
80
|
+
text_state = Mock.new("text_state")
|
|
81
|
+
text_state.__next(:transformation_matrix=) {}
|
|
82
|
+
@text.text_state = text_state
|
|
83
|
+
text_state.__next(:set_char_spacing){|value|
|
|
84
|
+
assert_equal("-0.0002", value)
|
|
85
|
+
}
|
|
86
|
+
@text.scan
|
|
87
|
+
text_state.__verify
|
|
88
|
+
end
|
|
89
|
+
def test_extract_TD
|
|
90
|
+
#PDF doc: TD always has 2 operands
|
|
91
|
+
@text.src = <<-EOS
|
|
92
|
+
BT
|
|
93
|
+
-36.7896 -1.3662 TD
|
|
94
|
+
ET
|
|
95
|
+
EOS
|
|
96
|
+
text_state = Mock.new("text_state")
|
|
97
|
+
text_state.__next(:transformation_matrix=) {}
|
|
98
|
+
@text.text_state = text_state
|
|
99
|
+
text_state.__next(:update_x){ |x|
|
|
100
|
+
assert_equal(-36.7896, x)
|
|
101
|
+
}
|
|
102
|
+
text_state.__next(:set_lead) { |y|
|
|
103
|
+
assert_equal(-1.3662, y)
|
|
104
|
+
}
|
|
105
|
+
text_state.__next(:update_y) { |y|
|
|
106
|
+
assert_equal(-1.3662, y)
|
|
107
|
+
}
|
|
108
|
+
@text.scan
|
|
109
|
+
text_state.__verify
|
|
110
|
+
end
|
|
111
|
+
def test_extract_Td
|
|
112
|
+
#PDF doc: TD always has 2 operands
|
|
113
|
+
@text.src = <<-EOS
|
|
114
|
+
BT
|
|
115
|
+
-36.7896 -1.3662 Td
|
|
116
|
+
ET
|
|
117
|
+
EOS
|
|
118
|
+
text_state = Mock.new("text_state")
|
|
119
|
+
text_state.__next(:transformation_matrix=) {}
|
|
120
|
+
@text.text_state = text_state
|
|
121
|
+
text_state.__next(:update_x){}
|
|
122
|
+
text_state.__next(:update_y){}
|
|
123
|
+
@text.scan
|
|
124
|
+
text_state.__verify
|
|
125
|
+
end
|
|
126
|
+
def test_extract_Tf
|
|
127
|
+
current_page = Mock.new("current_page")
|
|
128
|
+
@text.current_page = current_page
|
|
129
|
+
@text.src = <<-EOS
|
|
130
|
+
BT
|
|
131
|
+
/F16 1 Tf
|
|
132
|
+
ET
|
|
133
|
+
EOS
|
|
134
|
+
text_state = Mock.new("text_state")
|
|
135
|
+
text_state.__next(:transformation_matrix=) {}
|
|
136
|
+
@text.text_state = text_state
|
|
137
|
+
current_page.__next(:font){ |font|
|
|
138
|
+
assert_equal(:f16, font)
|
|
139
|
+
}
|
|
140
|
+
text_state.__next(:set_font){ |font|}
|
|
141
|
+
text_state.__next(:set_font_size){ |font|}
|
|
142
|
+
@text.scan
|
|
143
|
+
text_state.__verify
|
|
144
|
+
end
|
|
145
|
+
def test_ff2
|
|
146
|
+
current_page = Mock.new("current_page")
|
|
147
|
+
@text.current_page = current_page
|
|
148
|
+
@text.src = <<-EOS
|
|
149
|
+
BT
|
|
150
|
+
/C2_0 1 Tf
|
|
151
|
+
ET
|
|
152
|
+
EOS
|
|
153
|
+
text_state = Mock.new("text_state")
|
|
154
|
+
text_state.__next(:transformation_matrix=) {}
|
|
155
|
+
@text.text_state = text_state
|
|
156
|
+
current_page.__next(:font){ |font|
|
|
157
|
+
assert_equal(:c2_0, font)
|
|
158
|
+
}
|
|
159
|
+
text_state.__next(:set_font){ |font|}
|
|
160
|
+
text_state.__next(:set_font_size){ |font|}
|
|
161
|
+
@text.scan
|
|
162
|
+
text_state.__verify
|
|
163
|
+
end
|
|
164
|
+
def test_extract_Tm
|
|
165
|
+
#according to the pdf doc the Tm operator always has 6 operands
|
|
166
|
+
@text.src = <<-EOS
|
|
167
|
+
BT
|
|
168
|
+
10 0 0 10 113.0394 441.3592 Tm
|
|
169
|
+
ET
|
|
170
|
+
EOS
|
|
171
|
+
text_state = Mock.new("text_state")
|
|
172
|
+
text_state.__next(:transformation_matrix=) {}
|
|
173
|
+
@text.text_state = text_state
|
|
174
|
+
text_state.__next(:set_xscale){|x|
|
|
175
|
+
assert_equal("10", x)
|
|
176
|
+
}
|
|
177
|
+
text_state.__next(:tmalpha=){|x|
|
|
178
|
+
assert_equal(0.0, x)
|
|
179
|
+
}
|
|
180
|
+
text_state.__next(:tmbeta=){|x|
|
|
181
|
+
assert_equal(0.0, x)
|
|
182
|
+
}
|
|
183
|
+
text_state.__next(:set_yscale){|y|
|
|
184
|
+
assert_equal("10", y)
|
|
185
|
+
}
|
|
186
|
+
text_state.__next(:set_x){|x|
|
|
187
|
+
assert_equal(113.0394, x)
|
|
188
|
+
}
|
|
189
|
+
text_state.__next(:set_y){ |y|
|
|
190
|
+
assert_equal("441.3592", y)
|
|
191
|
+
}
|
|
192
|
+
@text.scan
|
|
193
|
+
text_state.__verify
|
|
194
|
+
end
|
|
195
|
+
def test_extract_Tw
|
|
196
|
+
@text.src = <<-EOS
|
|
197
|
+
BT
|
|
198
|
+
0.0000 Tw
|
|
199
|
+
ET
|
|
200
|
+
EOS
|
|
201
|
+
text_state = Mock.new("text_state")
|
|
202
|
+
text_state.__next(:transformation_matrix=) {}
|
|
203
|
+
@text.text_state = text_state
|
|
204
|
+
text_state.__next(:set_word_spacing){ |wordspace|
|
|
205
|
+
assert_equal('0.0000', wordspace)
|
|
206
|
+
}
|
|
207
|
+
@text.scan
|
|
208
|
+
text_state.__verify
|
|
209
|
+
end
|
|
210
|
+
def test_extract_Tj
|
|
211
|
+
input = <<-EOS
|
|
212
|
+
BT
|
|
213
|
+
(Abgabekategorie: \\) )Tj
|
|
214
|
+
ET
|
|
215
|
+
EOS
|
|
216
|
+
ast = Rpdf2txt.text_parser.parse(input)
|
|
217
|
+
assert_equal("(Abgabekategorie: \\) )", ast.values.first.snippet.value)
|
|
218
|
+
end
|
|
219
|
+
def test_extract_Tj_2
|
|
220
|
+
input = <<-EOS
|
|
221
|
+
BT
|
|
222
|
+
(50882)Tj\n
|
|
223
|
+
ET
|
|
224
|
+
EOS
|
|
225
|
+
ast = Rpdf2txt.text_parser.parse(input)
|
|
226
|
+
assert_equal("(50882)", ast.values.first.snippet.value)
|
|
227
|
+
@text.scan
|
|
228
|
+
end
|
|
229
|
+
def test_extract_Tj_3
|
|
230
|
+
@text.src = <<-EOS
|
|
231
|
+
BT
|
|
232
|
+
/F2 1 Tf
|
|
233
|
+
6 0 0 6 502.3646 619.0707 Tm
|
|
234
|
+
0.000 0.000 0.000 1.000 k
|
|
235
|
+
/GS3 gs
|
|
236
|
+
0.2778 Tc
|
|
237
|
+
0.0000 Tw
|
|
238
|
+
[(01.)-358.6(Jahrgang)]TJ
|
|
239
|
+
0 -1.1667 TD
|
|
240
|
+
(01)Tj
|
|
241
|
+
3 0 0 3 512.371 614.1957 Tm
|
|
242
|
+
0.0000 Tc
|
|
243
|
+
(e)Tj
|
|
244
|
+
6 0 0 6 517.8562 612.0707 Tm
|
|
245
|
+
0.2779 Tc
|
|
246
|
+
(ann)Tj
|
|
247
|
+
5 0 0 5 502.3646 598.5707 Tm
|
|
248
|
+
0.1111 Tc
|
|
249
|
+
-0.0306 Tw
|
|
250
|
+
(ISSN 0026-9212)Tj
|
|
251
|
+
/F4 1 Tf
|
|
252
|
+
14 0 0 14 501.6627 625.3198 Tm
|
|
253
|
+
0.0000 Tw
|
|
254
|
+
(5/2002)Tj
|
|
255
|
+
ET
|
|
256
|
+
EOS
|
|
257
|
+
assert_nothing_raised{
|
|
258
|
+
@text.scan
|
|
259
|
+
}
|
|
260
|
+
end
|
|
261
|
+
def test_extract_Tj4
|
|
262
|
+
input = <<-EOS
|
|
263
|
+
BT
|
|
264
|
+
(Abgabekategorie: )Tj
|
|
265
|
+
ET
|
|
266
|
+
EOS
|
|
267
|
+
ast = Rpdf2txt.text_parser.parse(input)
|
|
268
|
+
assert_equal("(Abgabekategorie: )", ast.values.first.snippet.value)
|
|
269
|
+
end
|
|
270
|
+
def test_extract_Tj_hex
|
|
271
|
+
input = <<-EOS
|
|
272
|
+
BT
|
|
273
|
+
<0074>Tj
|
|
274
|
+
ET
|
|
275
|
+
EOS
|
|
276
|
+
#input2 = '<00af>Tj'
|
|
277
|
+
ast = Rpdf2txt.text_parser.parse(input)
|
|
278
|
+
assert_equal("0074", ast.values.first.hexsnippet.value)
|
|
279
|
+
#ast = Rpdf2txt.text_parser.parse(input2)
|
|
280
|
+
#assert_equal("00af", ast.values.first.hexsnippet.value)
|
|
281
|
+
@text.scan
|
|
282
|
+
end
|
|
283
|
+
def test_extract_Tj_binary
|
|
284
|
+
@text.src = <<-EOS
|
|
285
|
+
BT
|
|
286
|
+
(\001\002\003
|
|
287
|
+
\002\004
|
|
288
|
+
\001\003)Tj
|
|
289
|
+
ET
|
|
290
|
+
EOS
|
|
291
|
+
#input2 = '<00af>Tj'
|
|
292
|
+
#ast = Rpdf2txt.text_parser.parse(@text.src)
|
|
293
|
+
#puts ast.values.first.snippet.value
|
|
294
|
+
#assert_equal("0074", ast.values.first.hexsnippet.value)
|
|
295
|
+
#ast = Rpdf2txt.text_parser.parse(input2)
|
|
296
|
+
#assert_equal("00af", ast.values.first.hexsnippet.value)
|
|
297
|
+
@text.scan
|
|
298
|
+
end
|
|
299
|
+
def test_extract_TL
|
|
300
|
+
input = <<-EOS
|
|
301
|
+
BT
|
|
302
|
+
2.345 TL
|
|
303
|
+
ET
|
|
304
|
+
EOS
|
|
305
|
+
ast = Rpdf2txt.text_parser.parse(input)
|
|
306
|
+
assert_equal('2.345', ast.values.first.lead.value)
|
|
307
|
+
end
|
|
308
|
+
def test_extract_TStar
|
|
309
|
+
input = <<-EOS
|
|
310
|
+
BT
|
|
311
|
+
T*
|
|
312
|
+
ET
|
|
313
|
+
EOS
|
|
314
|
+
ast = Rpdf2txt.text_parser.parse(input)
|
|
315
|
+
assert_equal('T*', ast.values.first.linebreak.value)
|
|
316
|
+
end
|
|
317
|
+
def test_extract_Apostroph
|
|
318
|
+
input = <<-EOS
|
|
319
|
+
BT
|
|
320
|
+
(foobar)'
|
|
321
|
+
ET
|
|
322
|
+
EOS
|
|
323
|
+
ast = Rpdf2txt.text_parser.parse(input)
|
|
324
|
+
assert_equal("(foobar)", ast.values.first.aposnippet.value)
|
|
325
|
+
end
|
|
326
|
+
def test_extract_quotes
|
|
327
|
+
input = <<-EOS
|
|
328
|
+
BT
|
|
329
|
+
1.2 3.4 (barbaz)"
|
|
330
|
+
ET
|
|
331
|
+
EOS
|
|
332
|
+
ast = Rpdf2txt::text_parser.parse(input)
|
|
333
|
+
assert_equal("1.2", ast.values.first.wordspace.value)
|
|
334
|
+
assert_equal("3.4", ast.values.first.charspace.value)
|
|
335
|
+
assert_equal("(barbaz)", ast.values.first.aposnippet.value)
|
|
336
|
+
end
|
|
337
|
+
def test_extract_TmTcTw
|
|
338
|
+
input = <<-EOS
|
|
339
|
+
BT
|
|
340
|
+
0.003 Tc -0.0008 Tw 7.5 0 0 7.5 320.1 764.1803 Tm
|
|
341
|
+
ET
|
|
342
|
+
EOS
|
|
343
|
+
assert_nothing_raised{
|
|
344
|
+
ast = Rpdf2txt.text_parser.parse(input)
|
|
345
|
+
}
|
|
346
|
+
end
|
|
347
|
+
def test_extract_Tj2
|
|
348
|
+
input = <<-EOS
|
|
349
|
+
BT
|
|
350
|
+
(cht-)Tj
|
|
351
|
+
ET
|
|
352
|
+
EOS
|
|
353
|
+
ast = Rpdf2txt.text_parser.parse(input)
|
|
354
|
+
assert_equal("(cht-)", ast.values.first.snippet.value)
|
|
355
|
+
end
|
|
356
|
+
def test_extract_color_space
|
|
357
|
+
input = <<-EOS
|
|
358
|
+
BT
|
|
359
|
+
/F5 1 Tf
|
|
360
|
+
12.5 0 0 12.5 34.311 811.2271 Tm
|
|
361
|
+
0.13725 0.12157 0.12549 scn
|
|
362
|
+
-0.0001 Tc
|
|
363
|
+
0 Tw
|
|
364
|
+
(Inhalt)Tj
|
|
365
|
+
ET
|
|
366
|
+
EOS
|
|
367
|
+
assert_nothing_raised {
|
|
368
|
+
Rpdf2txt.text_parser.parse(input)
|
|
369
|
+
}
|
|
370
|
+
end
|
|
371
|
+
def test_real_life
|
|
372
|
+
@text.src = <<-EOS
|
|
373
|
+
BT
|
|
374
|
+
10 0 0 10 113.0394 441.3592 Tm
|
|
375
|
+
-0.0002 Tc
|
|
376
|
+
0.0000 Tw
|
|
377
|
+
[(Zul.-Nr)91.6(.: )]TJ
|
|
378
|
+
/F16 1 Tf
|
|
379
|
+
3.8771 0 TD
|
|
380
|
+
(33273)Tj
|
|
381
|
+
/F3 1 Tf
|
|
382
|
+
8.8787 0 TD
|
|
383
|
+
-0.0001 Tc
|
|
384
|
+
(Abgabekategorie: )Tj
|
|
385
|
+
/F16 1 Tf
|
|
386
|
+
8.6923 0 TD
|
|
387
|
+
0.0000 Tc
|
|
388
|
+
(B)Tj
|
|
389
|
+
/F3 1 Tf
|
|
390
|
+
4.0636 0 TD
|
|
391
|
+
-0.0001 Tc
|
|
392
|
+
-0.0306 Tw
|
|
393
|
+
[(Index: 02.08.3.)-9563.5(18.11.2002)]TJ
|
|
394
|
+
-25.5118 -2.2428 TD
|
|
395
|
+
0.0000 Tw
|
|
396
|
+
[(Zusammensetzung:)-921.1(06)]TJ
|
|
397
|
+
8.3 0 0 8.3 226.4252 418.9312 Tm
|
|
398
|
+
0.2005 Tw
|
|
399
|
+
[(POLIDOCANOLUM 600 5)-278.1(mg, ETHANOLUM, KALII et NA)73.7(TRII PHOSPHA)73.7(TES, A)]TJ
|
|
400
|
+
36.7896 0 TD
|
|
401
|
+
(QUA q.s. ad)Tj
|
|
402
|
+
-36.7896 -1.3662 TD
|
|
403
|
+
-0.0306 Tw
|
|
404
|
+
[(SOLUTIONEM pro 1)-278.1(mL. )]TJ
|
|
405
|
+
10 0 0 10 212.252 393.4185 Tm
|
|
406
|
+
-0.0002 Tc
|
|
407
|
+
0.0000 Tw
|
|
408
|
+
(07)Tj
|
|
409
|
+
8.3 0 0 8.3 226.4252 393.4185 Tm
|
|
410
|
+
-0.0001 Tc
|
|
411
|
+
0.1449 Tw
|
|
412
|
+
[(POLIDOCANOLUM 600 10)-278.1(mg, ETHANOLUM, KALII et NA)73.7(TRII PHOSPHA)73.7(TES, )]TJ
|
|
413
|
+
36.1789 0 TD
|
|
414
|
+
(AQUA q.s. ad)Tj
|
|
415
|
+
-36.1789 -1.3661 TD
|
|
416
|
+
-0.0306 Tw
|
|
417
|
+
[(SOLUTIONEM pro 1)-278.1(mL. )]TJ
|
|
418
|
+
10 0 0 10 212.252 367.9059 Tm
|
|
419
|
+
-0.0002 Tc
|
|
420
|
+
0.0000 Tw
|
|
421
|
+
(08)Tj
|
|
422
|
+
8.3 0 0 8.3 226.4252 367.9059 Tm
|
|
423
|
+
-0.0001 Tc
|
|
424
|
+
0.1449 Tw
|
|
425
|
+
[(POLIDOCANOLUM 600 20)-278.1(mg, ETHANOLUM, KALII et NA)73.7(TRII PHOSPHA)73.7(TES, )]TJ
|
|
426
|
+
36.1789 0 TD
|
|
427
|
+
(AQUA q.s. ad)Tj
|
|
428
|
+
-36.1789 -1.3662 TD
|
|
429
|
+
-0.0306 Tw
|
|
430
|
+
[(SOLUTIONEM pro 1)-278.1(mL. )]TJ
|
|
431
|
+
10 0 0 10 212.252 342.3933 Tm
|
|
432
|
+
-0.0002 Tc
|
|
433
|
+
0.0000 Tw
|
|
434
|
+
(09)Tj
|
|
435
|
+
8.3 0 0 8.3 226.4252 342.3934 Tm
|
|
436
|
+
-0.0001 Tc
|
|
437
|
+
0.1449 Tw
|
|
438
|
+
[(POLIDOCANOLUM 600 30)-278.1(mg, ETHANOLUM, KALII et NA)73.7(TRII PHOSPHA)73.7(TES, )]TJ
|
|
439
|
+
36.1789 0 TD
|
|
440
|
+
(AQUA q.s. ad)Tj
|
|
441
|
+
-36.1789 -1.3662 TD
|
|
442
|
+
-0.0306 Tw
|
|
443
|
+
[(SOLUTIONEM pro 1)-278.1(mL. )]TJ
|
|
444
|
+
10 0 0 10 212.252 316.8806 Tm
|
|
445
|
+
-0.0002 Tc
|
|
446
|
+
0.0000 Tw
|
|
447
|
+
(11)Tj
|
|
448
|
+
8.3 0 0 8.3 226.4252 316.8806 Tm
|
|
449
|
+
-0.0001 Tc
|
|
450
|
+
0.1172 Tw
|
|
451
|
+
[(POLIDOCANOLUM 600 2.5)-278.1(mg, ETHANOLUM, KALII et NA)73.7(TRII PHOSPHA)73.7(TES,)]TJ
|
|
452
|
+
35.8395 0 TD
|
|
453
|
+
0.1171 Tw
|
|
454
|
+
[( AQUA q.s. ad)]TJ
|
|
455
|
+
-35.8395 -1.3661 TD
|
|
456
|
+
-0.0306 Tw
|
|
457
|
+
[(SOLUTIONEM pro 1)-278.1(mL. )]TJ
|
|
458
|
+
10 0 0 10 113.0394 291.368 Tm
|
|
459
|
+
0.0000 Tw
|
|
460
|
+
[(Anwendung:)-5285.2(V)48.7(arizenver�dung)]TJ
|
|
461
|
+
0 -1.4174 TD
|
|
462
|
+
-0.0306 Tw
|
|
463
|
+
[(Packungen:)-4532.7(06)-305.6(010)-5591.4(1 x 30)-567(mL)-12217.5(B)]TJ
|
|
464
|
+
11.3386 -1.4174 TD
|
|
465
|
+
[(061)-6147.3(5 x 2)-567(m)0(L)-12217.5(B)]TJ
|
|
466
|
+
-1.4173 -1.4174 TD
|
|
467
|
+
[(07)-305.6(029)-5591.4(1 x 30)-567(mL)-12217.5(B)]TJ
|
|
468
|
+
1.4173 -1.4174 TD
|
|
469
|
+
[(088)-6147.3(5 x 2)-567(m)0(L)-12217.5(B)]TJ
|
|
470
|
+
-1.4173 -1.4174 TD
|
|
471
|
+
[(08)-305.6(096)-6147.3(5 x 2)-567(m)0(L)-12217.5(B)]TJ
|
|
472
|
+
T*
|
|
473
|
+
[(09)-305.6(118)-6147.3(5 x 2)-567(m)0(L)-12217.5(B)]TJ
|
|
474
|
+
T*
|
|
475
|
+
[(11)-305.6(134)-6147.3(5 x 2)-567(m)0(L)-12217.5(B)]TJ
|
|
476
|
+
-9.9213 -1.4174 TD
|
|
477
|
+
[(* G�ltig bis:)-5844.6(17. November 2007)]TJ
|
|
478
|
+
ET
|
|
479
|
+
EOS
|
|
480
|
+
assert_nothing_raised {
|
|
481
|
+
@text.scan
|
|
482
|
+
}
|
|
483
|
+
end
|
|
484
|
+
def test_oneliner
|
|
485
|
+
@text.src = <<-EOS
|
|
486
|
+
BT /F1 16 Tf 1 0 0 -1 0 14.347 Tm(Ponstan�) Tj 0 0 0 RG ET
|
|
487
|
+
EOS
|
|
488
|
+
assert_nothing_raised {
|
|
489
|
+
@text.scan
|
|
490
|
+
}
|
|
491
|
+
end
|
|
492
|
+
def test_array_space_tj
|
|
493
|
+
@text.src = <<-EOS
|
|
494
|
+
BT /F0 8 Tf 1 0 0 -1 232.336 7.573 Tm[(Interesting text just before an empty space)
|
|
495
|
+
-3( )] TJ ET
|
|
496
|
+
EOS
|
|
497
|
+
assert_nothing_raised {
|
|
498
|
+
@text.scan
|
|
499
|
+
}
|
|
500
|
+
end
|
|
501
|
+
def test_array_hexsnippet
|
|
502
|
+
@text.src = <<-EOS
|
|
503
|
+
BT /F2 8 Tf 1 0 0 -1 0 62.573 Tm(Pulver und L�sungsmittel zur Herstellung einer Injektionsl�sung)
|
|
504
|
+
Tj /F3 9 Tf 0 -14.547 Td(Fibrinolytikum) Tj /F2 8 Tf 0 -15.853 Td(Zusammensetzung)
|
|
505
|
+
Tj /F3 8 Tf 0 -9.6 Td(Metalyse 8'000 U) Tj 0 -9.6 Td(1 Injektionsflasche) Tj /F0
|
|
506
|
+
8 Tf 65.816 0 Td( enth�lt: 8'000 U \\(40 mg\\) Tenecteplasum \\(gefriergetrocknetes Pulver\\).)
|
|
507
|
+
Tj /F3 8 Tf -65.816 -9.6 Td(Hilfsstoffe:) Tj /F0 8 Tf 37.344 0 Td( Polysorbatum 20, L-Argininum, Acidum phosphoricum.)
|
|
508
|
+
Tj /F3 8 Tf -37.344 -9.6 Td(1 Fertigspritze) Tj /F0 8 Tf 50.684 0 Td( enth�lt: 8 ml Aqua ad iniectabilia \\(Ph. Eur.\\).)
|
|
509
|
+
Tj /F3 8 Tf -50.684 -13.6 Td(Metalyse 10'000 U) Tj 0 -9.6 Td(1 Injektionsflasche)
|
|
510
|
+
Tj /F0 8 Tf 65.816 0 Td( enth�lt: 10'000 U \\(50 mg\\) Tenecteplasum \\(gefriergetrocknetes Pulver\\).)
|
|
511
|
+
Tj /F3 8 Tf -65.816 -9.6 Td(Hilfsstoffe:) Tj /F0 8 Tf 37.344 0 Td( Polysorbatum 20, L-Argininum, Acidum phosphoricum.)
|
|
512
|
+
Tj /F3 8 Tf -37.344 -9.6 Td(1 Fertigspritze) Tj /F0 8 Tf 50.684 0 Td( enth�lt: 10 ml Aqua ad iniectabilia \\(Ph. Eur.\\).)
|
|
513
|
+
Tj -50.684 -9.6 Td(Die gebrauchsfertige L�sung enth�lt 1'000 U \\(5 mg\\) Tenecteplase pro ml.)
|
|
514
|
+
Tj 0 -9.6 Td(Die Wirkst�rke von Tenecteplase wird in Einheiten \\(U\\) angegeben, unter Bezugnahme auf einen Referenzstandard, der)
|
|
515
|
+
Tj 0 -9.6 Td(Tenecteplase-spezifisch ist und mit den f�r andere Fibrinolytika verwendeten Einheiten nicht vergleichbar ist.)
|
|
516
|
+
Tj /F2 8 Tf 0 -15.6 Td(Eigenschaften/Wirkungen) Tj /F0 8 Tf 0 -9.6 Td(Tenecteplase ist ein rekombinanter fibrinspezifischer Plasminogen-Aktivator \\(t-PA\\), der durch Modifizierung von nat�rlichem)
|
|
517
|
+
Tj 0 -9.6 Td(Plasminogen-Aktivator t-PA an drei Stellen des Molek�ls entsteht. Er bindet an das Fibrin eines Thrombus \\(Blutgerinnsel\\) und)
|
|
518
|
+
Tj 0 -9.6 Td(wandelt an den Thrombus gebundenes Plasminogen in Plasmin um, und f�hrt so zur Aufl�sung des Thrombus. Tenecteplase)
|
|
519
|
+
Tj 0 -9.6 Td(weist eine h�here Fibrinspezifit�t als nat�rliches t-PA auf und wird weniger durch den endogenen Inhibitor \\(PAI-1\\) inaktiviert.)Tj 0 -9.6 Td(Nach Gabe von Tenecteplase wurde ein dosisabh�ngiger Verbrauch von )
|
|
520
|
+
Tj /F4 8 Tf 260.128 0 Td[ -4<012e>] TJ /F0 8 Tf 4.656 0 Td(2-Antiplasmin \\(dem plasmatischen Inhibitor des)
|
|
521
|
+
Tj -264.784 -9.6 Td(Plasmins\\) mit entsprechender Zunahme einer systemischen Plasminbildung beobachtet. In Vergleichsstudien \\(Tenecteplase)
|
|
522
|
+
Tj 0 -9.6 Td(versus Alteplase\\) wurde bei Patienten, die mit der Maximaldosis von Tenecteplase \\(10'000 U, entsprechend 50 mg\\) behandelt)
|
|
523
|
+
Tj -0.134 Tw 0 -9.6 Td(wurden, ein Abfall des Fibrinogens um weniger als 15% und des Plasminogens um weniger als 25% beobachtet. Demgegen�ber)
|
|
524
|
+
Tj 0 Tw 0 -9.6 Td(kam es unter Alteplase zu einem Abfall der Fibrinogen- und Plasminogenspiegel um ca. 50%.)
|
|
525
|
+
Tj -0.449 Tw 0 -9.6 Td(Die Gef�ssdurchg�ngigkeitswerte angiographisch kontrollierter Phase I und II Studien zeigen, dass Tenecteplase als intraven�ser)
|
|
526
|
+
Tj 0 Tw 0 -9.6 Td(Einfach-Bolus dosisabh�ngig Thromben in der Infarktarterie von Patienten mit akutem Herzinfarkt aufl�st. In einer Dosis-)
|
|
527
|
+
Tj -0.156 Tw 0 -9.6 Td(Wirkungsstudie \\(TIMI 10B\\) konnte mit 30 mg Tenecteplase bei 54%, mit 40 mg bei 63% und mit 50 mg bei 66% der Patienten ein)
|
|
528
|
+
Tj 0 Tw 0 -9.6 Td(Fluss TIMI Grad 3 erzielt werden. Diese Unterschiede waren statistisch nicht signifikant.)
|
|
529
|
+
Tj 0 -9.6 Td(Eine grosse doppelblinde Vergleichsstudie \\(ASSENT-II\\) mit etwa 17'000 Patienten zeigte, dass Tenecteplase im Vergleich zu)
|
|
530
|
+
Tj -0.122 Tw 0 -9.6 Td(Alteplase hinsichtlich der Mortalit�tsrate therapeutisch �quivalent ist \\(6,2% in beiden Therapiegruppen nach 30 Tagen\\), wobei es)
|
|
531
|
+
Tj -0.048 Tw 0 -9.6 Td(unter Tenecteplase zu signifikant weniger nicht-zerebralen Blutungen kam \\(26,4% versus 28,9%, p= 0,0003\\). Dies bedingte eine)
|
|
532
|
+
Tj 0 Tw 0 -9.6 Td(signifikant geringere Bluttransfusionsrate \\(4,3% versus 5,5%, p= 0,0002\\). Die zerebrale Blutungsrate betrug 0,93% f�r)
|
|
533
|
+
Tj 0 -9.6 Td(Tenecteplase bzw. 0,94% f�r Alteplase.) Tj 0 -9.6 Td(Nach 30 Tagen wurde keine Antik�rperbildung gegen Tenecteplase beobachtet. Daten zur wiederholten Gabe liegen allerdings)
|
|
534
|
+
Tj 0 -9.6 Td(nicht vor.) Tj -0.425 Tw 0 -9.6 Td(Eine weitere randomisierte Vergleichsstudie \\(ASSENT-III\\) wurde an ca. 6'000 Patienten zur Ermittlung der Nutzen/Risiko-Relation)
|
|
535
|
+
Tj 0 Tw 0 -9.6 Td(von Metalyse bei gleichzeitiger Gabe von verschiedenen antithrombotischen Substanzen bei der Lysetherapie akuter)
|
|
536
|
+
Tj 0 -9.6 Td(Myokardinfarkte durchgef�hrt. Je ca. 2'000 Patienten wurden einer der folgenden Gruppen zugeteilt:)
|
|
537
|
+
Tj /F3 8 Tf -0.28 Tw 0 -9.6 Td(Gruppe A:) Tj /F0 8 Tf 36.184 0 Td( Metalyse in unten angegebener Dosierung als Einmalbolus i.v. und unfraktioniertes Heparin als Einmalbolus \\(60 IU/kg,)
|
|
538
|
+
Tj -0.243 Tw -36.184 -9.6 Td(max. 4'000 IU\\), danach als i.v. Infusion \\(12 IU/kg/Std., max. 1'000 IU/Std. �ber 3 Stunden, danach �ber bis zu 48 Stunden je nach)
|
|
539
|
+
Tj 0 Tw 0 -9.6 Td(aPTT [Ziel: 50-70 Sek.]\\).) Tj /F3 8 Tf -0.398 Tw 0 -9.6 Td(Gruppe B:)
|
|
540
|
+
Tj /F0 8 Tf 36.067 0 Td( Metalyse in unten angegebener Dosierung als Einmalbolus i.v. und Enoxaparin \\(ein initialer i.v.-Bolus von 30 mg, sofort)
|
|
541
|
+
Tj 0 Tw -36.067 -9.6 Td(danach beginnend alle 12 Stunden s.c. Injektion von 1 mg/kg, max. 100 mg f�r die ersten beiden s.c. Dosen\\). Die Enoxaparin-)
|
|
542
|
+
Tj 0 -9.6 Td(Therapie wurde bis zur Entlassung aus der station�ren Behandlung oder bis zur Revaskularisation oder maximal �ber 1 Woche)
|
|
543
|
+
Tj 0 -9.6 Td(durchgef�hrt.) Tj /F3 8 Tf -0.682 Tw 0 -9.6 Td(Gruppe C:) Tj /F0 8 Tf
|
|
544
|
+
36.225 0 Td( Metalyse in der halben unten angegebenen Dosierung \\(gewichtsadaptiert 3'000 U-5'000 U\\) und Abciximab \\(Einmaldosis)
|
|
545
|
+
Tj -0.231 Tw -36.225 -9.6 Td(0,25 mg/kg, danach i.v. Infusion von 0,125 �g/kg/Min., max. 10 �g/Min., �ber 12 Stunden\\) und zus�tzlich unfraktioniertes Heparin)
|
|
546
|
+
Tj -0.307 Tw 0 -9.6 Td(\\(40 IU/kg, max. 3'000 IU als Einmalbolus i.v., danach 7 IU/kg/Std., max. 800 IU/Std., als i.v. Infusion �ber 3 Stunden, danach nach)
|
|
547
|
+
Tj -0.54 Tw 0 -9.6 Td(aPTT �ber bis zu 48 Stunden\\). Die Patienten in allen 3 Gruppen erhielten zus�tzlich Acetylsalicyls�ure oral \\(150-325 mg bei Eintritt)
|
|
548
|
+
Tj 0 -9.6 Td(in die Studie, danach 75-325 mg �ber mind. 30 Tage\\). Falls eine orale Anwendung von Acetylsalicyls�ure nicht m�glich war, wurde)
|
|
549
|
+
Tj 0 Tw 0 -9.6 Td(die Substanz in einer Dosierung von 150-250 mg rektal oder i.v. verabreicht.)
|
|
550
|
+
Tj -0.564 Tw 0 -9.6 Td(Es zeigte sich, dass die Patienten der Gruppen B und C bez�glich der Wirksamkeits-Endpunkte \\(30-Tage-Mortalit�t einschliesslich)
|
|
551
|
+
Tj -0.741 Tw 0 -9.6 Td(der w�hrend der station�ren Behandlung auftretenden Reinfarkte oder persistierenden kardialen Isch�mien\\) signifikant \\(p= 0,0001\\))
|
|
552
|
+
Tj 0 Tw 0 -9.6 Td(im Vorteil waren. Die Rate der oben genannten Komplikationen lag bei Gruppe A bei 15,4%, w�hrend sie bei Gruppe B und C)
|
|
553
|
+
Tj 0 -9.6 Td(11,4% bzw. 11,1% betrug. Bei zus�tzlicher Betrachtung der Sicherheits-Endpunkte \\(intrakranielle Blutungen w�hrend des)
|
|
554
|
+
Tj -0.045 Tw 0 -9.6 Td(station�ren Aufenthalts, weitere Blutungen mit konsekutiver Kreislaufinsuffizienz oder transfusionspflichtige Blutungen\\) lagen die)
|
|
555
|
+
Tj -0.073 Tw 0 -9.6 Td(Komplikationsraten bei 17,0% in Gruppe A, bei 13,8% in Gruppe B und bei 14,2% in Gruppe C. Schwerwiegende sowie leichtere)
|
|
556
|
+
Tj 0 Tw 0 -9.6 Td(Blutungen und Thrombozytopenien wurden allerdings in Gruppe C signifikant h�ufiger als in den beiden anderen Gruppen)
|
|
557
|
+
Tj 0 -9.6 Td(festgestellt.) Tj /F2 8 Tf 0 -15.6 Td(Pharmakokinetik) Tj /F3 8 Tf 0
|
|
558
|
+
-9.6 Td(Metabolismus) Tj /F0 8 Tf 0 -9.6 Td(Tenecteplase wird durch Bindung an spezifische Leberrezeptoren und nachfolgende Spaltung in kleine Peptide aus dem)
|
|
559
|
+
Tj 0 -9.6 Td(Blutkreislauf eliminiert. Im Vergleich zu nat�rlichem t-PA ist die Bindung an die Leberrezeptoren weniger stark ausgepr�gt, was)
|
|
560
|
+
Tj 0 -9.6 Td(zu einer verl�ngerten Halbwertszeit f�hrt.) Tj ET
|
|
561
|
+
EOS
|
|
562
|
+
assert_nothing_raised {
|
|
563
|
+
@text.scan
|
|
564
|
+
}
|
|
565
|
+
end
|
|
566
|
+
def test__yab
|
|
567
|
+
@text.src = <<-EOS
|
|
568
|
+
BT
|
|
569
|
+
/F0 1 Tf
|
|
570
|
+
10 0 0 10 100.0144 143.3671 Tm
|
|
571
|
+
0 Tr
|
|
572
|
+
0 0 0 1 k
|
|
573
|
+
0 Tc
|
|
574
|
+
-0.031 Tw
|
|
575
|
+
[(Erscheint monatlich)-139(/)-167(Publication mensuelle)]TJ
|
|
576
|
+
0 -2.24 TD
|
|
577
|
+
[(Jahr)18(esabonnement)-303(\\()50(12 Nummer)-18(n\\))-1091(Fr)92(. 150.\\320)-3432(Einzelnummer)-1033(Fr)92(. 15.\\320)]TJ
|
|
578
|
+
0 -1.12 TD
|
|
579
|
+
0 Tw
|
|
580
|
+
(Abonnement)Tj
|
|
581
|
+
5.80374 0.00001 TD
|
|
582
|
+
(annuel)Tj
|
|
583
|
+
3.08134 0.00001 TD
|
|
584
|
+
(\\()Tj
|
|
585
|
+
0.2556 0.00001 TD
|
|
586
|
+
(12)Tj
|
|
587
|
+
1.3035 0.00001 TD
|
|
588
|
+
(num\\216r)Tj
|
|
589
|
+
2.75952 0.00001 TD
|
|
590
|
+
(os\\))Tj
|
|
591
|
+
2.38685 0.00001 TD
|
|
592
|
+
-0.031 Tw
|
|
593
|
+
[(Fr)91(. 150.\\320)-3431(Un num\\216r)18(o)-2301(Fr)91(. 15.\\320)]TJ
|
|
594
|
+
-15.5906 -2.24 TD
|
|
595
|
+
[(Redaktion und Administration: Stabsber)18(eich Kommunikation, Hallerstrasse 7, Postfach, CH-3000 Ber)-18(n 9, )]TJ
|
|
596
|
+
0 -1.12 TD
|
|
597
|
+
(T)Tj
|
|
598
|
+
0.3892 0 TD
|
|
599
|
+
(el. +41 (0)31 322 02 11, www)Tj
|
|
600
|
+
12.86619 0.00001 TD
|
|
601
|
+
0 Tw
|
|
602
|
+
(.swissmedic.ch)Tj
|
|
603
|
+
-13.2554 -2.24 TD
|
|
604
|
+
-0.031 Tw
|
|
605
|
+
[(Druck:)-278(Rickli+Wyss AG, Eymattstrasse 5, Postfach 316, 3027 Ber)-18(n)]TJ
|
|
606
|
+
ET
|
|
607
|
+
EOS
|
|
608
|
+
assert_nothing_raised {
|
|
609
|
+
@text.scan
|
|
610
|
+
}
|
|
611
|
+
end
|
|
612
|
+
def test__yab__side_effects
|
|
613
|
+
## bracket opens in Tj, closes in following TJ
|
|
614
|
+
@text.src = <<-EOS
|
|
615
|
+
BT
|
|
616
|
+
/F1 1 Tf
|
|
617
|
+
10.02 0 0 10.02 48.24 821.187 Tm
|
|
618
|
+
0 g
|
|
619
|
+
-0.0001 Tc
|
|
620
|
+
-0.0024 Tw
|
|
621
|
+
[(Regulator)5.7(y News / R\351gl)8.4(ementation )]TJ
|
|
622
|
+
/F2 1 Tf
|
|
623
|
+
7.02 0 0 7.02 87.9 24.987 Tm
|
|
624
|
+
0 Tc
|
|
625
|
+
0.004 Tw
|
|
626
|
+
[(Swissmedic)8.1( Journa)9(l 06)9(-2007)9( )]TJ
|
|
627
|
+
1 g
|
|
628
|
+
30.6752 0 TD
|
|
629
|
+
-0.0004 Tc
|
|
630
|
+
0 Tw
|
|
631
|
+
(434)Tj
|
|
632
|
+
0 g
|
|
633
|
+
1.6667 0 TD
|
|
634
|
+
0 Tc
|
|
635
|
+
( )Tj
|
|
636
|
+
/F1 1 Tf
|
|
637
|
+
10.02 0 0 10.02 96.42 774.147 Tm
|
|
638
|
+
24.8982 0 TD
|
|
639
|
+
-0.0009 Tc
|
|
640
|
+
0.1241 Tw
|
|
641
|
+
(\\(Texte, Abbildungen und allf\344llige graphische )Tj
|
|
642
|
+
-21.3772 -1.1976 TD
|
|
643
|
+
-0.0002 Tc
|
|
644
|
+
-0.0023 Tw
|
|
645
|
+
[(Gest)5.6(altung f)5.6(\374)0(r Faltsch)6(a)-1.1(ch)6(teln, Sachet)5.6(s usw.\\), \\(5-fac)6.7(h\\). )]TJ
|
|
646
|
+
ET
|
|
647
|
+
EOS
|
|
648
|
+
assert_nothing_raised {
|
|
649
|
+
@text.scan
|
|
650
|
+
}
|
|
651
|
+
end
|
|
652
|
+
def test__scn_with_names
|
|
653
|
+
@text.src = <<-EOS
|
|
654
|
+
BT
|
|
655
|
+
/F3 1 Tf
|
|
656
|
+
6 0 0 6 476.5289 590.9604 Tm
|
|
657
|
+
/RelativeColorimetric ri /Cs2 cs 1.0 scn
|
|
658
|
+
/GS3 gs [(;)-278]TJ
|
|
659
|
+
[<1A>-278]TJ
|
|
660
|
+
[(,)278]TJ
|
|
661
|
+
2.58198 0 Td
|
|
662
|
+
[(\n)-278]TJ
|
|
663
|
+
[<12>-278]TJ
|
|
664
|
+
1.38866 0 Td
|
|
665
|
+
[( )-278]TJ
|
|
666
|
+
[(.)-278]TJ
|
|
667
|
+
[<1F>-278]TJ
|
|
668
|
+
[<12>-278]TJ
|
|
669
|
+
[(&)-278]TJ
|
|
670
|
+
[<1F>556]TJ
|
|
671
|
+
-3.97064 -1.16667 TD
|
|
672
|
+
[(;)-278]TJ
|
|
673
|
+
[<1A>556]TJ
|
|
674
|
+
3 0 0 3 486.5352 586.0854 Tm
|
|
675
|
+
/GS3 gs <18>Tj
|
|
676
|
+
6 0 0 6 492.0204 583.9604 Tm
|
|
677
|
+
/GS3 gs [<12>-278]TJ
|
|
678
|
+
[(&)-278]TJ
|
|
679
|
+
[(&)-278]TJ
|
|
680
|
+
2.44569 0 Td
|
|
681
|
+
[<19>-278]TJ
|
|
682
|
+
[<18>500]TJ
|
|
683
|
+
5 0 0 5 476.5289 570.4604 Tm
|
|
684
|
+
/GS3 gs [(\t)-111]TJ
|
|
685
|
+
0.3331 0.0000076 TD
|
|
686
|
+
[<0E>-111]TJ
|
|
687
|
+
[<0E>-111]TJ
|
|
688
|
+
1.22237 0 Td
|
|
689
|
+
[<0B>-111]TJ
|
|
690
|
+
1.1366 0 Td
|
|
691
|
+
[(;)-111]TJ
|
|
692
|
+
0.66708 0 Td
|
|
693
|
+
[(;)-111]TJ
|
|
694
|
+
0.66708 0 Td
|
|
695
|
+
[(6)-111]TJ
|
|
696
|
+
0.66708 0 Td
|
|
697
|
+
[(1)-111]TJ
|
|
698
|
+
0.66708 0 Td
|
|
699
|
+
[(!)-111]TJ
|
|
700
|
+
[(')-111]TJ
|
|
701
|
+
1.11102 0 Td
|
|
702
|
+
[(6)-111]TJ
|
|
703
|
+
[(\))-111]TJ
|
|
704
|
+
1.33416 0 Td
|
|
705
|
+
[(6)556]TJ
|
|
706
|
+
/F1 1 Tf
|
|
707
|
+
14 0 0 14 473.3866 597.2096 Tm
|
|
708
|
+
/GS3 gs <02>Tj
|
|
709
|
+
0.62262 0 Td
|
|
710
|
+
[<03>-111]TJ
|
|
711
|
+
0.50009 0 Td
|
|
712
|
+
[<04>-111]TJ
|
|
713
|
+
[<05>-111]TJ
|
|
714
|
+
1.33417 0 Td
|
|
715
|
+
[<05>-111]TJ
|
|
716
|
+
[<01>556]TJ
|
|
717
|
+
ET
|
|
718
|
+
|
|
719
|
+
EOS
|
|
720
|
+
assert_nothing_raised {
|
|
721
|
+
@text.scan
|
|
722
|
+
}
|
|
723
|
+
end
|
|
724
|
+
def test__ambiguity_in_scm
|
|
725
|
+
@text.src = <<-EOS
|
|
726
|
+
BT
|
|
727
|
+
/F1 1 Tf
|
|
728
|
+
10.02 0 0 10.02 160.2 1147.6191 Tm
|
|
729
|
+
/RelativeColorimetric ri /Cs1 cs 1.0 scn
|
|
730
|
+
-0.0007 Tc
|
|
731
|
+
-0.0018 Tw
|
|
732
|
+
/GS3 gs (Inhalt / Table des mati?res )Tj
|
|
733
|
+
/TT2 1 Tf
|
|
734
|
+
7.02 0 0 7.02 199.86 351.4191 Tm
|
|
735
|
+
-0.0008 Tc
|
|
736
|
+
0.005 Tw
|
|
737
|
+
/GS3 gs [(Sw)12(issmedic Journa)8.3(l 06/2009)8.3( )]TJ
|
|
738
|
+
/RelativeColorimetric ri /Cs1 cs 0.0 scn
|
|
739
|
+
30.6752 0 TD
|
|
740
|
+
-0.0006 Tc
|
|
741
|
+
0 Tw
|
|
742
|
+
/GS2 gs (554 )Tj
|
|
743
|
+
/RelativeColorimetric ri /Cs1 cs 1.0 scn
|
|
744
|
+
37.1795 0 TD
|
|
745
|
+
0 Tc
|
|
746
|
+
/GS3 gs ( )Tj
|
|
747
|
+
/F2 1 Tf
|
|
748
|
+
11.52 0 0 11.52 208.38 1100.5791 Tm
|
|
749
|
+
-0.0013 Tc
|
|
750
|
+
16.7786 Tw
|
|
751
|
+
/GS3 gs [( Seite)]TJ
|
|
752
|
+
/F1 1 Tf
|
|
753
|
+
10.02 0 0 10.02 208.38 1076.399 Tm
|
|
754
|
+
-0.0005 Tc
|
|
755
|
+
-0.0021 Tw
|
|
756
|
+
/GS3 gs [(Im Brennpun)5.7(kt )-11407.2( )]TJ
|
|
757
|
+
ET
|
|
758
|
+
|
|
759
|
+
EOS
|
|
760
|
+
assert_nothing_raised {
|
|
761
|
+
begin
|
|
762
|
+
@text.scan
|
|
763
|
+
rescue Exception => e
|
|
764
|
+
e.alternatives.each do |alt| puts alt.inspect end
|
|
765
|
+
raise
|
|
766
|
+
end
|
|
767
|
+
}
|
|
768
|
+
end
|
|
769
|
+
def test__binary_TJ
|
|
770
|
+
@text.src = <<-EOS
|
|
771
|
+
BT
|
|
772
|
+
1 scn
|
|
773
|
+
/T1_4 1 Tf
|
|
774
|
+
8 0 0 8 33 892.8898 Tm
|
|
775
|
+
[(\021\001\004\r\003\007\023\005\003\003\b)-1200(\007\001\013\001\005\003\003\f\000\000\004\b\r\006\f\000\022\025\027\000\
|
|
776
|
+
\000\021\024\026\030\024\000\004)]TJ
|
|
777
|
+
ET
|
|
778
|
+
EOS
|
|
779
|
+
assert_nothing_raised {
|
|
780
|
+
begin
|
|
781
|
+
@text.scan
|
|
782
|
+
rescue Exception => e
|
|
783
|
+
e.alternatives.each do |alt| puts alt.inspect end
|
|
784
|
+
raise
|
|
785
|
+
end
|
|
786
|
+
}
|
|
787
|
+
end
|
|
788
|
+
end
|
|
789
|
+
end
|