podoff 1.2.2 → 1.2.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,78 +0,0 @@
1
-
2
- #
3
- # Specifying podoff
4
- #
5
- # Tue Oct 20 13:10:29 JST 2015
6
- #
7
-
8
- require 'pp'
9
- require 'ostruct'
10
-
11
- require 'podoff'
12
-
13
-
14
- RSpec::Matchers.define :be_encoded_as do |encoding|
15
-
16
- match do |path|
17
-
18
- fail ArgumentError.new("expecting a path (String) not a #{path.class}") \
19
- unless path.is_a?(String)
20
-
21
- $vic_r =
22
- `(vim -c 'execute \"silent !echo \" . &fileencoding . " > _enc.txt" | q' #{path} > /dev/null 2>&1); cat _enc.txt; rm _enc.txt`.strip.downcase
23
-
24
- $vic_r == encoding.downcase
25
- end
26
-
27
- failure_message do |path|
28
-
29
- "expected #{encoding.downcase.inspect}, got #{$vic_r.to_s.inspect}"
30
- end
31
- end
32
-
33
-
34
- RSpec::Matchers.define :be_a_valid_pdf do
35
-
36
- match do |o|
37
-
38
- path =
39
- if /\A%PDF-\d/.match(o)
40
- File.open('tmp/_under_check.pdf', 'wb') { |f| f.write(o) }
41
- 'tmp/_under_check.pdf'
42
- else
43
- o
44
- end
45
-
46
- file_cmd =
47
- /darwin/.match(RUBY_PLATFORM) ? 'file -I' : 'file -i'
48
- vim_cmd =
49
- "vim -c 'execute \"silent !echo \" . &fileencoding | q'"
50
-
51
- cmd = [
52
- "echo '* vim :'",
53
- "#{vim_cmd} #{path}",
54
- "echo '* #{file_cmd} :'",
55
- "#{file_cmd} #{path}",
56
- "echo",
57
- "qpdf --check #{path}"
58
- ]
59
- $qpdf_r = `(#{cmd.join('; ')}) 2>&1`
60
- `#{file_cmd} #{path}; echo; qpdf --check #{path} 2>&1`
61
-
62
- $qpdf_r = "#{$qpdf_r}\nexit: #{$?.exitstatus}"
63
- #puts "." * 80
64
- #puts $qpdf_r
65
-
66
- $qpdf_r.match(/exit: 0$/)
67
- end
68
-
69
- failure_message do |o|
70
-
71
- %{
72
- --- qpdf ---------------------------------------------------------------------->
73
- #{$qpdf_r}
74
- <-- qpdf -----------------------------------------------------------------------
75
- }.strip
76
- end
77
- end
78
-
@@ -1,103 +0,0 @@
1
-
2
- #
3
- # specifying podoff
4
- #
5
- # Fri Oct 23 08:36:38 JST 2015
6
- #
7
-
8
- require 'spec_helper'
9
-
10
-
11
- describe Podoff::Stream do
12
-
13
- describe '#tf' do
14
-
15
- it 'sets the current font' do
16
-
17
- st = Podoff::Stream.new(OpenStruct.new(ref: '1 0'))
18
-
19
- st.tf('/Helvetica', 35)
20
- st.bt(10, 20, 'helvetic')
21
- st.tf('/ZapfDingbats', 21)
22
- st.bt(10, 50, 'zapfesque')
23
-
24
- expect(st.to_s).to eq(%{
25
- 1 0 obj
26
- <</Length 95>>
27
- stream
28
- BT /Helvetica 35 Tf 10 20 Td (helvetic) Tj ET
29
- BT /ZapfDingbats 21 Tf 10 50 Td (zapfesque) Tj ET
30
- endstream
31
- endobj
32
- }.strip)
33
- end
34
- end
35
-
36
- describe '#bt' do
37
-
38
- it 'works' do
39
-
40
- st = Podoff::Stream.new(OpenStruct.new(ref: '1 0'))
41
- st.bt(10, 20, 'hello world')
42
-
43
- expect(st.to_s).to eq(%{
44
- 1 0 obj
45
- <</Length 31>>
46
- stream
47
- BT 10 20 Td (hello world) Tj ET
48
- endstream
49
- endobj
50
- }.strip)
51
- end
52
-
53
- it 'escapes the text' do
54
-
55
- st = Podoff::Stream.new(OpenStruct.new(ref: '1 0'))
56
- st.bt(10, 20, 'hello()world')
57
-
58
- expect(st.to_s).to eq(%{
59
- 1 0 obj
60
- <</Length 34>>
61
- stream
62
- BT 10 20 Td (hello\\(\\)world) Tj ET
63
- endstream
64
- endobj
65
- }.strip)
66
- end
67
- end
68
-
69
- describe '#write' do
70
-
71
- it 'injects text into the stream' do
72
-
73
- st = Podoff::Stream.new(OpenStruct.new(ref: '1 0'))
74
- st.bt(10, 20, 'abc')
75
- st.write("\nBT 25 35 Td (ABC) Tj ET")
76
- st.bt(30, 40, 'def')
77
-
78
- expect(st.to_s).to eq(%{
79
- 1 0 obj
80
- <</Length 71>>
81
- stream
82
- BT 10 20 Td (abc) Tj ET
83
- BT 25 35 Td (ABC) Tj ET
84
- BT 30 40 Td (def) Tj ET
85
- endstream
86
- endobj
87
- }.strip)
88
- end
89
- end
90
-
91
- describe '#to_s' do
92
-
93
- it 'applies /Filter /FlateDecode if stream.size > 98' do
94
-
95
- st = Podoff::Stream.new(OpenStruct.new(ref: '1 0'))
96
- st.write("BT /Helvetica 35 Tf 123 456 Td (Hello Nada) Tj ET\n" * 4)
97
-
98
- expect(st.to_s).to match(
99
- /^1 0 obj\n<<\/Length 60 \/Filter \/FlateDecode>>/)
100
- end
101
- end
102
- end
103
-
@@ -1,36 +0,0 @@
1
-
2
- #
3
- # specifying podoff
4
- #
5
- # Tue Oct 20 17:25:49 JST 2015
6
- #
7
-
8
- require 'spec_helper'
9
-
10
-
11
- describe Podoff do
12
-
13
- before :all do
14
-
15
- #@d0 = Podoff.load('pdfs/udocument0.pdf')
16
- #@t0 = Podoff.load('pdfs/t0.pdf')
17
- end
18
-
19
- # describe 'Obj#add_free_text' do
20
- #
21
- # it 'annotates an object with free text' do
22
- #
23
- # doc = @t0.dup
24
- # page = doc.page(1)
25
- #
26
- # puts page.source
27
- # page.add_free_text(100, 100, 'free text', :helvetica, 15)
28
- #
29
- # expect(doc.objs.size).to eq(7)
30
- # expect(doc.additions.size).to eq(2)
31
- #
32
- # doc.write('tmp/out.pdf')
33
- # end
34
- # end
35
- end
36
-
data/todo.txt DELETED
@@ -1,21 +0,0 @@
1
-
2
- [o] implement Document#rewrite
3
- [o] doc.add_stream { |st| st.bt ... }
4
- [o] st = d.addstream
5
- st.tf '/helv', 12
6
- st.bt 5, 6, "hello"
7
- d.write('out.pdf') # closes the stream...
8
- [ ] fail if insert_content or insert_font on an unclosed stream obj
9
-
10
- [o] Document.write('-') (stdout inspiration)
11
-
12
-
13
- [ ] stop using the st-mark thing
14
- [o] recompress idea? uncompress with pdftk, recompress with podoff
15
- smaller docs anyway... /Filter /FlatDecode
16
-
17
- decompress:
18
- qpdf --qdf --object-streams=disable in.pdf out.pdf
19
- recompress:
20
- qpdf in.pdf out.pdf
21
-