preflight 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. data/CHANGELOG +8 -1
  2. data/README.rdoc +21 -4
  3. data/lib/preflight.rb +1 -0
  4. data/lib/preflight/issue.rb +35 -0
  5. data/lib/preflight/profile.rb +38 -16
  6. data/lib/preflight/profiles/pdfa1a.rb +0 -1
  7. data/lib/preflight/profiles/pdfx1a.rb +4 -3
  8. data/lib/preflight/rules.rb +17 -2
  9. data/lib/preflight/rules/box_nesting.rb +35 -23
  10. data/lib/preflight/rules/compression_algorithms.rb +14 -4
  11. data/lib/preflight/rules/consistent_boxes.rb +63 -0
  12. data/lib/preflight/rules/cropbox_matches_mediabox.rb +38 -0
  13. data/lib/preflight/rules/document_id.rb +14 -2
  14. data/lib/preflight/rules/info_has_keys.rb +15 -3
  15. data/lib/preflight/rules/info_specifies_trapping.rb +16 -3
  16. data/lib/preflight/rules/match_info_entries.rb +17 -3
  17. data/lib/preflight/rules/max_ink_density.rb +69 -0
  18. data/lib/preflight/rules/max_version.rb +14 -2
  19. data/lib/preflight/rules/mediabox_at_origin.rb +42 -0
  20. data/lib/preflight/rules/min_bleed.rb +171 -0
  21. data/lib/preflight/rules/min_ppi.rb +54 -116
  22. data/lib/preflight/rules/no_cmyk.rb +113 -0
  23. data/lib/preflight/rules/no_filespecs.rb +15 -5
  24. data/lib/preflight/rules/no_font_subsets.rb +15 -6
  25. data/lib/preflight/rules/no_gray.rb +105 -0
  26. data/lib/preflight/rules/no_page_rotation.rb +36 -0
  27. data/lib/preflight/rules/no_private_data.rb +37 -0
  28. data/lib/preflight/rules/no_registration_black.rb +102 -0
  29. data/lib/preflight/rules/no_rgb.rb +112 -0
  30. data/lib/preflight/rules/no_separation.rb +85 -0
  31. data/lib/preflight/rules/no_transparency.rb +90 -0
  32. data/lib/preflight/rules/only_embedded_fonts.rb +28 -14
  33. data/lib/preflight/rules/output_intent_for_pdfx.rb +14 -2
  34. data/lib/preflight/rules/page_box_height.rb +88 -0
  35. data/lib/preflight/rules/page_box_size.rb +106 -0
  36. data/lib/preflight/rules/page_box_width.rb +88 -0
  37. data/lib/preflight/rules/page_count.rb +87 -0
  38. data/lib/preflight/rules/pdfx_output_intent_has_keys.rb +12 -2
  39. data/lib/preflight/rules/print_boxes.rb +21 -19
  40. data/lib/preflight/rules/root_has_keys.rb +15 -3
  41. metadata +97 -113
  42. data/lib/preflight/rules/no_encryption.rb +0 -16
  43. data/lib/preflight/rules/no_proprietary_fonts.rb +0 -50
@@ -0,0 +1,106 @@
1
+ # coding: utf-8
2
+
3
+ module Preflight
4
+ module Rules
5
+
6
+ # Ensure that the requests page box (MediaBox, TrimBox, etc) on every page
7
+ # has the requested size. Dimensions can be in points, mm or inches. Skips
8
+ # the page if the requested box isn't defined, it's up to other rules to
9
+ # check for the existence of the box. Pass an array of sizes to allow each
10
+ # of those sizes.
11
+ #
12
+ # Usage:
13
+ #
14
+ # class MyPreflight
15
+ # include Preflight::Profile
16
+ #
17
+ # rule Preflight::Rules::PageBoxSize, :MediaBox, [
18
+ # { :width => 100, :height => 200, :units => :mm },
19
+ # { :width => 200, :height => 400, :units => :mm }
20
+ # ]
21
+ # rule Preflight::Rules::PageBoxSize, :TrimBox,
22
+ # { :width => 600, :height => 200, :units => :pts }
23
+ # end
24
+ #
25
+ class PageBoxSize
26
+ include Preflight::Measurements
27
+
28
+ attr_reader :issues
29
+
30
+ def initialize(box, sizes)
31
+ @box, @units = box
32
+ sizes = [sizes] if sizes.kind_of?(Hash)
33
+ @orig_sizes = sizes
34
+
35
+ @sizes = sizes.map do |size|
36
+ size[:width] = length_to_points(size[:width], size[:units])
37
+ size[:height] = length_to_points(size[:height], size[:units])
38
+ size
39
+ end
40
+ end
41
+
42
+ def page=(page)
43
+ @issues = []
44
+ dict = page.attributes
45
+
46
+ if dict[@box]
47
+ box_width = dict[@box][2] - dict[@box][0]
48
+ box_height = dict[@box][3] - dict[@box][1]
49
+
50
+ invalid_size = @sizes.none? do |size|
51
+ size[:width].include?(box_width) &&
52
+ size[:height].include?(box_height)
53
+ end
54
+
55
+ if invalid_size
56
+ @issues << Issue.new("#{@box} size didn't match provided size",
57
+ self,
58
+ :page => page.number,
59
+ :box => @box,
60
+ :box_height => box_height,
61
+ :box_width => box_width)
62
+ end
63
+ end
64
+ end
65
+
66
+ private
67
+
68
+ def length_to_points(length, units)
69
+ case units
70
+ when :mm then mm_to_points(length)
71
+ when :in then inches_to_points(length)
72
+ else
73
+ points_to_points(length)
74
+ end
75
+ end
76
+
77
+ def inches_to_points(height)
78
+ case height
79
+ when Numeric then Range.new(in2pt(height)-1, in2pt(height)+1)
80
+ when Range then Range.new(in2pt(height.min), in2pt(height.max))
81
+ else
82
+ raise ArgumentError, "height must be a Numeric or Range object"
83
+ end
84
+ end
85
+
86
+ def mm_to_points(height)
87
+ case height
88
+ when Numeric then Range.new(mm2pt(height)-1, mm2pt(height)+1)
89
+ when Range then Range.new(mm2pt(height.min), mm2pt(height.max))
90
+ else
91
+ raise ArgumentError, "height must be a Numeric or Range object"
92
+ end
93
+ end
94
+
95
+ def points_to_points(height)
96
+ case height
97
+ when Numeric then Range.new(height, height)
98
+ when Range then height
99
+ else
100
+ raise ArgumentError, "height must be a Numeric or Range object"
101
+ end
102
+ end
103
+
104
+ end
105
+ end
106
+ end
@@ -0,0 +1,88 @@
1
+ # coding: utf-8
2
+
3
+ module Preflight
4
+ module Rules
5
+
6
+ # Ensure the requested page box (MediaBox, TrimBox, etc) on every page has
7
+ # the requested width. Dimensions can be in points, mm or inches. Skips
8
+ # the page if the requested box isn't defined, it's up to other rules to
9
+ # check for the existence of the box.
10
+ #
11
+ # Arguments: the target page box, the target height and the the units
12
+ #
13
+ # Usage:
14
+ #
15
+ # class MyPreflight
16
+ # include Preflight::Profile
17
+ #
18
+ # rule Preflight::Rules::PageBoxHeight, :MediaBox, 100, :mm
19
+ # rule Preflight::Rules::PageBoxHeight, :TrimBox, 600, :pts
20
+ # rule Preflight::Rules::PageBoxHeight, :CropBox, 5, :in
21
+ # rule Preflight::Rules::PageBoxHeight, :MediaBox, 100..101, :mm
22
+ # rule Preflight::Rules::PageBoxHeight, :TrimBox, 600..700, :pts
23
+ # rule Preflight::Rules::PageBoxHeight, :CropBox, 5..6, :in
24
+ # end
25
+ #
26
+ class PageBoxWidth
27
+ include Preflight::Measurements
28
+
29
+ attr_reader :issues
30
+
31
+ def initialize(box, width, units)
32
+ @box, @units = box, units
33
+ @orig_width = width
34
+ @width = case units
35
+ when :mm then mm_to_points(width)
36
+ when :in then inches_to_points(width)
37
+ else
38
+ points_to_points(width)
39
+ end
40
+ end
41
+
42
+ def page=(page)
43
+ @issues = []
44
+ dict = page.attributes
45
+
46
+ if dict[@box]
47
+ box_width = dict[@box][2] - dict[@box][0]
48
+
49
+ if !@width.include?(box_width)
50
+ @issues << Issue.new("#{@box} width must be #{@orig_width}#{@units}", self, :page => page.number,
51
+ :box => @box,
52
+ :width => @orig_width,
53
+ :units => @units)
54
+ end
55
+ end
56
+ end
57
+
58
+ private
59
+
60
+ def inches_to_points(width)
61
+ case width
62
+ when Numeric then Range.new(in2pt(width)-1, in2pt(width)+1)
63
+ when Range then Range.new(in2pt(width.min), in2pt(width.max))
64
+ else
65
+ raise ArgumentError, "width must be a Numeric or Range object"
66
+ end
67
+ end
68
+
69
+ def mm_to_points(width)
70
+ case width
71
+ when Numeric then Range.new(mm2pt(width)-1, mm2pt(width)+1)
72
+ when Range then Range.new(mm2pt(width.min), mm2pt(width.max))
73
+ else
74
+ raise ArgumentError, "width must be a Numeric or Range object"
75
+ end
76
+ end
77
+
78
+ def points_to_points(width)
79
+ case width
80
+ when Numeric then Range.new(width, width)
81
+ when Range then width
82
+ else
83
+ raise ArgumentError, "width must be a Numeric or Range object"
84
+ end
85
+ end
86
+ end
87
+ end
88
+ end
@@ -0,0 +1,87 @@
1
+ # coding: utf-8
2
+
3
+ module Preflight
4
+ module Rules
5
+
6
+ # Ensure the page count matches certain criteria.
7
+ #
8
+ # Arguments: An integer, range, :even or :odd
9
+ #
10
+ # Usage:
11
+ #
12
+ # class MyPreflight
13
+ # include Preflight::Profile
14
+ #
15
+ # rule Preflight::Rules::PageCount, 1
16
+ # rule Preflight::Rules::PageCount, 1..2
17
+ # rule Preflight::Rules::PageCount, [4, 8]
18
+ # rule Preflight::Rules::PageCount, :even
19
+ # rule Preflight::Rules::PageCount, :odd
20
+ # end
21
+ #
22
+ class PageCount
23
+
24
+ def initialize(pattern)
25
+ @pattern = pattern
26
+ end
27
+
28
+ def check_hash(objects)
29
+ root = objects.deref(objects.trailer[:Root])
30
+ pages = objects.deref(root[:Pages])
31
+ count = objects.deref(pages[:Count])
32
+
33
+ case @pattern
34
+ when Fixnum then check_numeric(count)
35
+ when Range then check_range(count)
36
+ when Array then check_array(count)
37
+ when :even then check_even(count)
38
+ when :odd then check_odd(count)
39
+ else
40
+ [Issue.new("PageCount: invalid pattern", self)]
41
+ end
42
+ end
43
+
44
+ private
45
+
46
+ def check_numeric(count)
47
+ if count != @pattern
48
+ [Issue.new("Page count must equal #{@pattern}", self, :pattern => :invalid, :count => count)]
49
+ else
50
+ []
51
+ end
52
+ end
53
+
54
+ def check_range(count)
55
+ if !@pattern.include?(count)
56
+ [Issue.new("Page count must be between #{@pattern.min} and #{@pattern.max}", self, :pattern => @pattern, :count => count)]
57
+ else
58
+ []
59
+ end
60
+ end
61
+
62
+ def check_array(count)
63
+ if !@pattern.include?(count)
64
+ [Issue.new("Page count must be one of #{@pattern.join(', ')}", self, :pattern => @pattern, :count => count)]
65
+ else
66
+ []
67
+ end
68
+ end
69
+
70
+ def check_even(count)
71
+ if count.odd?
72
+ [Issue.new("Page count must be an even number", self, :pattern => @pattern, :count => count)]
73
+ else
74
+ []
75
+ end
76
+ end
77
+
78
+ def check_odd(count)
79
+ if count.even?
80
+ [Issue.new("Page count must be an odd number", self, :pattern => @pattern, :count => count)]
81
+ else
82
+ []
83
+ end
84
+ end
85
+ end
86
+ end
87
+ end
@@ -9,20 +9,30 @@ module Preflight
9
9
  # This doesn't raise an error if there is no GTS_PDFX, that's another
10
10
  # rules job.
11
11
  #
12
+ # Arguments: none
13
+ #
14
+ # Usage:
15
+ #
16
+ # class MyPreflight
17
+ # include Preflight::Profile
18
+ #
19
+ # rule Preflight::Rules::PdfxOutputIntentHasKeys, :OutputConditionIdentifier, :Info
20
+ # end
21
+ #
12
22
  class PdfxOutputIntentHasKeys
13
23
 
14
24
  def initialize(*keys)
15
25
  @keys = keys.flatten
16
26
  end
17
27
 
18
- def messages(ohash)
28
+ def check_hash(ohash)
19
29
  oi = pdfx_output_intent(ohash)
20
30
 
21
31
  return [] if oi.nil?
22
32
 
23
33
  missing = @keys - oi.keys
24
34
  missing.map { |key|
25
- "The GTS_PDFX OutputIntent missing require key #{key}"
35
+ Issue.new("The GTS_PDFX OutputIntent missing required key #{key}", self, :key => key)
26
36
  }
27
37
  end
28
38
 
@@ -6,29 +6,31 @@ module Preflight
6
6
  # For PDFX/1a, every page must have MediaBox, plus either ArtBox or
7
7
  # TrimBox
8
8
  #
9
+ # Arguments: none
10
+ #
11
+ # Usage:
12
+ #
13
+ # class MyPreflight
14
+ # include Preflight::Profile
15
+ #
16
+ # rule Preflight::Rules::PrintBoxes
17
+ # end
18
+ #
9
19
  class PrintBoxes
10
- attr_reader :messages
11
20
 
12
- def initialize
13
- @messages = []
14
- @page_num = 0
15
- @parent = {}
16
- end
17
-
18
- def begin_page_container(hash = {})
19
- @parent.merge!(hash)
20
- end
21
+ attr_reader :issues
21
22
 
22
- def begin_page(hash = {})
23
- @page_num += 1
24
- hash = @parent.merge(hash)
23
+ def page=(page)
24
+ dict = page.attributes
25
25
 
26
- if hash[:MediaBox].nil?
27
- @messages << "every page must have a MediaBox (page #{@page_num})"
28
- elsif hash[:ArtBox].nil? && hash[:TrimBox].nil?
29
- @messages << "every page must have either an ArtBox or a TrimBox (page #{@page_num})"
30
- elsif hash[:ArtBox] && hash[:TrimBox]
31
- @messages << "no page can have both ArtBox and TrimBox - TrimBox is preferred (page #{@page_num})"
26
+ if dict[:MediaBox].nil?
27
+ @issues = [Issue.new("every page must have a MediaBox", self, :page => page.number)]
28
+ elsif dict[:ArtBox].nil? && dict[:TrimBox].nil?
29
+ @issues = [Issue.new("every page must have either an ArtBox or a TrimBox", self, :page => page.number)]
30
+ elsif dict[:ArtBox] && dict[:TrimBox]
31
+ @issues = [Issue.new("no page can have both ArtBox and TrimBox - TrimBox is preferred", self, :page => page.number)]
32
+ else
33
+ @issues = []
32
34
  end
33
35
  end
34
36
  end
@@ -3,18 +3,30 @@
3
3
  module Preflight
4
4
  module Rules
5
5
 
6
- # ensure the root dict has the specified keys
6
+ # Every PDF has a 'Root' dictionary, check that the target file has
7
+ # certain keys in it's Root
8
+ #
9
+ # Arguments: the required keys
10
+ #
11
+ # Usage:
12
+ #
13
+ # class MyPreflight
14
+ # include Preflight::Profile
15
+ #
16
+ # rule Preflight::Rules::RootHasKeys, :OutputIntents
17
+ # end
18
+ #
7
19
  class RootHasKeys
8
20
 
9
21
  def initialize(*keys)
10
22
  @keys = keys.flatten
11
23
  end
12
24
 
13
- def messages(ohash)
25
+ def check_hash(ohash)
14
26
  root = ohash.object(ohash.trailer[:Root])
15
27
  missing = @keys - root.keys
16
28
  missing.map { |key|
17
- "Root dict missing required key #{key}"
29
+ Issue.new("Root dict missing required key #{key}", self, :key => key)
18
30
  }
19
31
  end
20
32
  end
metadata CHANGED
@@ -1,164 +1,148 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: preflight
3
- version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 1
8
- - 1
9
- version: 0.1.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ prerelease:
10
6
  platform: ruby
11
- authors:
7
+ authors:
12
8
  - James Healy
13
9
  autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
-
17
- date: 2011-07-06 00:00:00 +10:00
18
- default_executable:
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2012-03-25 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: pdf-reader
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &19765840 !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ~>
27
- - !ruby/object:Gem::Version
28
- segments:
29
- - 0
30
- - 10
31
- - 0
32
- version: 0.10.0
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 1.1.0
33
22
  type: :runtime
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
36
- name: ttfunk
37
23
  prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
39
- none: false
40
- requirements:
41
- - - ~>
42
- - !ruby/object:Gem::Version
43
- segments:
44
- - 1
45
- - 0
46
- - 1
47
- version: 1.0.1
48
- type: :runtime
49
- version_requirements: *id002
50
- - !ruby/object:Gem::Dependency
24
+ version_requirements: *19765840
25
+ - !ruby/object:Gem::Dependency
51
26
  name: rake
52
- prerelease: false
53
- requirement: &id003 !ruby/object:Gem::Requirement
27
+ requirement: &19764920 !ruby/object:Gem::Requirement
54
28
  none: false
55
- requirements:
56
- - - ">="
57
- - !ruby/object:Gem::Version
58
- segments:
59
- - 0
60
- version: "0"
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
61
33
  type: :development
62
- version_requirements: *id003
63
- - !ruby/object:Gem::Dependency
64
- name: roodi
65
34
  prerelease: false
66
- requirement: &id004 !ruby/object:Gem::Requirement
35
+ version_requirements: *19764920
36
+ - !ruby/object:Gem::Dependency
37
+ name: roodi
38
+ requirement: &19763500 !ruby/object:Gem::Requirement
67
39
  none: false
68
- requirements:
69
- - - ">="
70
- - !ruby/object:Gem::Version
71
- segments:
72
- - 0
73
- version: "0"
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
74
44
  type: :development
75
- version_requirements: *id004
76
- - !ruby/object:Gem::Dependency
45
+ prerelease: false
46
+ version_requirements: *19763500
47
+ - !ruby/object:Gem::Dependency
77
48
  name: rspec
49
+ requirement: &19762780 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '2.3'
55
+ type: :development
78
56
  prerelease: false
79
- requirement: &id005 !ruby/object:Gem::Requirement
57
+ version_requirements: *19762780
58
+ - !ruby/object:Gem::Dependency
59
+ name: ZenTest
60
+ requirement: &19762260 !ruby/object:Gem::Requirement
80
61
  none: false
81
- requirements:
62
+ requirements:
82
63
  - - ~>
83
- - !ruby/object:Gem::Version
84
- segments:
85
- - 2
86
- - 0
87
- version: "2.0"
64
+ - !ruby/object:Gem::Version
65
+ version: 4.4.2
88
66
  type: :development
89
- version_requirements: *id005
90
- description: Provides a programatic way to check a PDF file conforms to standards like PDF-X/1a
91
- email:
67
+ prerelease: false
68
+ version_requirements: *19762260
69
+ description: Provides a programatic way to check a PDF file conforms to standards
70
+ like PDF-X/1a
71
+ email:
92
72
  - james@yob.id.au
93
- executables:
73
+ executables:
94
74
  - is_pdfx_1a
95
75
  extensions: []
96
-
97
76
  extra_rdoc_files: []
98
-
99
- files:
100
- - lib/preflight/profiles/pdfx1a.rb
101
- - lib/preflight/profiles/pdfa1a.rb
77
+ files:
78
+ - lib/preflight.rb
102
79
  - lib/preflight/profile.rb
103
- - lib/preflight/rules/root_has_keys.rb
104
- - lib/preflight/rules/min_ppi.rb
80
+ - lib/preflight/profiles.rb
81
+ - lib/preflight/rules/no_separation.rb
82
+ - lib/preflight/rules/no_private_data.rb
105
83
  - lib/preflight/rules/print_boxes.rb
106
- - lib/preflight/rules/no_filespecs.rb
107
84
  - lib/preflight/rules/info_specifies_trapping.rb
108
- - lib/preflight/rules/only_embedded_fonts.rb
109
- - lib/preflight/rules/compression_algorithms.rb
110
- - lib/preflight/rules/no_encryption.rb
111
- - lib/preflight/rules/no_font_subsets.rb
112
85
  - lib/preflight/rules/match_info_entries.rb
113
- - lib/preflight/rules/max_version.rb
114
- - lib/preflight/rules/no_proprietary_fonts.rb
115
- - lib/preflight/rules/pdfx_output_intent_has_keys.rb
86
+ - lib/preflight/rules/box_nesting.rb
116
87
  - lib/preflight/rules/output_intent_for_pdfx.rb
117
- - lib/preflight/rules/info_has_keys.rb
88
+ - lib/preflight/rules/page_box_size.rb
89
+ - lib/preflight/rules/max_ink_density.rb
90
+ - lib/preflight/rules/page_box_width.rb
91
+ - lib/preflight/rules/pdfx_output_intent_has_keys.rb
92
+ - lib/preflight/rules/min_bleed.rb
93
+ - lib/preflight/rules/no_rgb.rb
94
+ - lib/preflight/rules/page_box_height.rb
95
+ - lib/preflight/rules/no_cmyk.rb
96
+ - lib/preflight/rules/min_ppi.rb
97
+ - lib/preflight/rules/no_transparency.rb
98
+ - lib/preflight/rules/no_filespecs.rb
99
+ - lib/preflight/rules/no_gray.rb
118
100
  - lib/preflight/rules/document_id.rb
119
- - lib/preflight/rules/box_nesting.rb
120
- - lib/preflight/measurements.rb
101
+ - lib/preflight/rules/max_version.rb
102
+ - lib/preflight/rules/only_embedded_fonts.rb
103
+ - lib/preflight/rules/no_font_subsets.rb
104
+ - lib/preflight/rules/compression_algorithms.rb
105
+ - lib/preflight/rules/mediabox_at_origin.rb
106
+ - lib/preflight/rules/cropbox_matches_mediabox.rb
107
+ - lib/preflight/rules/no_registration_black.rb
108
+ - lib/preflight/rules/info_has_keys.rb
109
+ - lib/preflight/rules/page_count.rb
110
+ - lib/preflight/rules/root_has_keys.rb
111
+ - lib/preflight/rules/no_page_rotation.rb
112
+ - lib/preflight/rules/consistent_boxes.rb
113
+ - lib/preflight/profiles/pdfa1a.rb
114
+ - lib/preflight/profiles/pdfx1a.rb
121
115
  - lib/preflight/rules.rb
122
- - lib/preflight/profiles.rb
123
- - lib/preflight.rb
116
+ - lib/preflight/measurements.rb
117
+ - lib/preflight/issue.rb
124
118
  - bin/is_pdfx_1a
125
119
  - README.rdoc
126
120
  - CHANGELOG
127
- has_rdoc: true
128
121
  homepage: http://github.com/yob/pdf-preflight
129
122
  licenses: []
130
-
131
123
  post_install_message:
132
- rdoc_options:
124
+ rdoc_options:
133
125
  - --title
134
126
  - PDF::Preflight
135
127
  - --line-numbers
136
- require_paths:
128
+ require_paths:
137
129
  - lib
138
- required_ruby_version: !ruby/object:Gem::Requirement
130
+ required_ruby_version: !ruby/object:Gem::Requirement
139
131
  none: false
140
- requirements:
141
- - - ">="
142
- - !ruby/object:Gem::Version
143
- segments:
144
- - 0
145
- version: "0"
146
- required_rubygems_version: !ruby/object:Gem::Requirement
132
+ requirements:
133
+ - - ! '>='
134
+ - !ruby/object:Gem::Version
135
+ version: 1.8.7
136
+ required_rubygems_version: !ruby/object:Gem::Requirement
147
137
  none: false
148
- requirements:
149
- - - ">="
150
- - !ruby/object:Gem::Version
151
- segments:
152
- - 1
153
- - 3
154
- - 2
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
155
141
  version: 1.3.2
156
142
  requirements: []
157
-
158
143
  rubyforge_project:
159
- rubygems_version: 1.3.7
144
+ rubygems_version: 1.8.11
160
145
  signing_key:
161
146
  specification_version: 3
162
147
  summary: Check PDF files conform to various standards
163
148
  test_files: []
164
-