preflight 0.1.1 → 0.2.0

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.
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
-