dragonfly_pdf 0.2.7 → 0.3.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.
- checksums.yaml +4 -4
 - data/.travis.yml +3 -1
 - data/CHANGELOG.md +4 -0
 - data/README.md +22 -22
 - data/dragonfly_pdf.gemspec +4 -3
 - data/lib/dragonfly_pdf/analysers/pdf_properties.rb +7 -22
 - data/lib/dragonfly_pdf/plugin.rb +15 -3
 - data/lib/dragonfly_pdf/version.rb +1 -1
 - data/test/dragonfly_pdf/analysers/pdf_properties_test.rb +40 -48
 - data/test/dragonfly_pdf/plugin_test.rb +9 -0
 - data/test/dragonfly_pdf/processors/append_test.rb +8 -28
 - data/test/dragonfly_pdf/processors/page_test.rb +12 -32
 - data/test/dragonfly_pdf/processors/remove_password_test.rb +7 -21
 - data/test/dragonfly_pdf/processors/rotate_test.rb +14 -33
 - data/test/dragonfly_pdf/processors/stamp_test.rb +12 -30
 - data/test/dragonfly_pdf/processors/subset_fonts_test.rb +12 -0
 - metadata +30 -19
 - data/lib/dragonfly_pdf/processors/page_thumb.rb +0 -45
 - data/test/dragonfly_pdf/processors/page_thumb_test.rb +0 -34
 - data/test/dragonfly_pdf/processors/subset_fonts.rb +0 -22
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 708b5f991d28126c6c374d503b4573c28879b8a9
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 1d5d198c02b33d47d6318868da45a4cfdf896d51
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 907ca3ee3cdb14580edea1a20f11ecf7d571a69fa882409625924511434e811e47bb21ad4f3cf4739683377ed9a83cc45a0e81cc57c279b2a94d235d53234ef8
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 26978346b3358fd27bcc0d7eb72bafb5ccbdfeaf5c6e2bdd8fa20c05a0e5f4703f840e368884df08a3c4e0d8b17bda749a5abe2df15a771b1d8204ae96405231
         
     | 
    
        data/.travis.yml
    CHANGED
    
    | 
         @@ -5,11 +5,13 @@ sudo: required 
     | 
|
| 
       5 
5 
     | 
    
         
             
            dist: trusty
         
     | 
| 
       6 
6 
     | 
    
         
             
            rvm:
         
     | 
| 
       7 
7 
     | 
    
         
             
              - 2.2.5
         
     | 
| 
      
 8 
     | 
    
         
            +
            env:
         
     | 
| 
      
 9 
     | 
    
         
            +
              - LIBVIPS_VERSION_MAJOR=8 LIBVIPS_VERSION_MINOR=3 LIBVIPS_VERSION_PATCH=3 LIBVIPS_VERSION=$LIBVIPS_VERSION_MAJOR.$LIBVIPS_VERSION_MINOR.$LIBVIPS_VERSION_PATCH
         
     | 
| 
       8 
10 
     | 
    
         
             
            before_install:
         
     | 
| 
       9 
11 
     | 
    
         
             
              - gem update bundler
         
     | 
| 
       10 
12 
     | 
    
         
             
              - sudo apt-get update
         
     | 
| 
       11 
13 
     | 
    
         
             
              - sudo apt-get install -y pdftk
         
     | 
| 
       12 
     | 
    
         
            -
              -  
     | 
| 
      
 14 
     | 
    
         
            +
              - curl -s https://raw.githubusercontent.com/lovell/sharp/master/preinstall.sh | sudo bash -
         
     | 
| 
       13 
15 
     | 
    
         
             
            notifications:
         
     | 
| 
       14 
16 
     | 
    
         
             
              email:
         
     | 
| 
       15 
17 
     | 
    
         
             
                recipients:
         
     | 
    
        data/CHANGELOG.md
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | 
         @@ -6,25 +6,32 @@ 
     | 
|
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
            ## Dependencies
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
      
 9 
     | 
    
         
            +
            - [libvips](https://github.com/jcupitt/libvips)
         
     | 
| 
      
 10 
     | 
    
         
            +
            - [GhostScript](http://www.ghostscript.com)
         
     | 
| 
      
 11 
     | 
    
         
            +
            - [pdftk](https://www.pdflabs.com/tools/pdftk-server)
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
13 
     | 
    
         
             
            ## Installation
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
15 
     | 
    
         
             
            Add this line to your application's Gemfile:
         
     | 
| 
       16 
16 
     | 
    
         | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
      
 17 
     | 
    
         
            +
            ```
         
     | 
| 
      
 18 
     | 
    
         
            +
            gem 'dragonfly_pdf'
         
     | 
| 
      
 19 
     | 
    
         
            +
            ```
         
     | 
| 
       18 
20 
     | 
    
         | 
| 
       19 
21 
     | 
    
         
             
            And then execute:
         
     | 
| 
       20 
22 
     | 
    
         | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
      
 23 
     | 
    
         
            +
            ```
         
     | 
| 
      
 24 
     | 
    
         
            +
            $ bundle
         
     | 
| 
      
 25 
     | 
    
         
            +
            ```
         
     | 
| 
       22 
26 
     | 
    
         | 
| 
       23 
27 
     | 
    
         
             
            Or install it yourself as:
         
     | 
| 
       24 
28 
     | 
    
         | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
      
 29 
     | 
    
         
            +
            ```
         
     | 
| 
      
 30 
     | 
    
         
            +
            $ gem install dragonfly_pdf
         
     | 
| 
      
 31 
     | 
    
         
            +
            ```
         
     | 
| 
       26 
32 
     | 
    
         | 
| 
       27 
33 
     | 
    
         
             
            ## Usage
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
       28 
35 
     | 
    
         
             
            The analyser and processors are added by configuring the plugin
         
     | 
| 
       29 
36 
     | 
    
         | 
| 
       30 
37 
     | 
    
         
             
            ```ruby
         
     | 
| 
         @@ -49,14 +56,6 @@ pdf.pdf_properties # => { 
     | 
|
| 
       49 
56 
     | 
    
         
             
            }
         
     | 
| 
       50 
57 
     | 
    
         
             
            ```
         
     | 
| 
       51 
58 
     | 
    
         | 
| 
       52 
     | 
    
         
            -
            Optionally pass box type (`MediaBox|CropBox|BleedBox|TrimBox`):
         
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
            ```ruby
         
     | 
| 
       55 
     | 
    
         
            -
            pdf.pdf_properties(box_type: 'MediaBox')
         
     | 
| 
       56 
     | 
    
         
            -
            ```
         
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
       58 
     | 
    
         
            -
            By default `TrimBox`, with a fallback to `MediaBox`.
         
     | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
       60 
59 
     | 
    
         
             
            ## Processors
         
     | 
| 
       61 
60 
     | 
    
         | 
| 
       62 
61 
     | 
    
         
             
            ### Append
         
     | 
| 
         @@ -77,21 +76,22 @@ pdf.page(page_number=1) 
     | 
|
| 
       77 
76 
     | 
    
         | 
| 
       78 
77 
     | 
    
         
             
            ### Page Thumb
         
     | 
| 
       79 
78 
     | 
    
         | 
| 
       80 
     | 
    
         
            -
            Generates thumbnail of a specified page 
     | 
| 
      
 79 
     | 
    
         
            +
            Generates thumbnail of a specified page using the `thumb` processor of [DragonflyLibvips](https://github.com/tomasc/dragonfly_libvips).
         
     | 
| 
       81 
80 
     | 
    
         | 
| 
       82 
81 
     | 
    
         
             
            ```ruby
         
     | 
| 
       83 
     | 
    
         
            -
            pdf.page_thumb(page_number=1, opts={})
         
     | 
| 
      
 82 
     | 
    
         
            +
            pdf.page_thumb(page_number=1, '500x', opts={})
         
     | 
| 
       84 
83 
     | 
    
         
             
            ```
         
     | 
| 
       85 
84 
     | 
    
         | 
| 
       86 
     | 
    
         
            -
            The  
     | 
| 
      
 85 
     | 
    
         
            +
            The default format is `png`, others can be specified
         
     | 
| 
       87 
86 
     | 
    
         | 
| 
       88 
87 
     | 
    
         
             
            ```ruby
         
     | 
| 
       89 
88 
     | 
    
         
             
            {
         
     | 
| 
       90 
     | 
    
         
            -
                 
     | 
| 
       91 
     | 
    
         
            -
                format: :png,
         
     | 
| 
      
 89 
     | 
    
         
            +
                'format' => 'jpg',
         
     | 
| 
       92 
90 
     | 
    
         
             
            }
         
     | 
| 
       93 
91 
     | 
    
         
             
            ```
         
     | 
| 
       94 
92 
     | 
    
         | 
| 
      
 93 
     | 
    
         
            +
            For more options see the [`thumb` doc](https://github.com/tomasc/dragonfly_libvips#thumb).
         
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
       95 
95 
     | 
    
         
             
            ### Remove password
         
     | 
| 
       96 
96 
     | 
    
         | 
| 
       97 
97 
     | 
    
         
             
            Remove password from password protected PDF.
         
     | 
| 
         @@ -109,12 +109,12 @@ pdf.rotate(:left) 
     | 
|
| 
       109 
109 
     | 
    
         
             
            ```
         
     | 
| 
       110 
110 
     | 
    
         | 
| 
       111 
111 
     | 
    
         
             
            Rotate selected pages.
         
     | 
| 
      
 112 
     | 
    
         
            +
             
     | 
| 
       112 
113 
     | 
    
         
             
            ```ruby
         
     | 
| 
       113 
114 
     | 
    
         
             
            pdf.rotate(1 => :left, 3 => :right)
         
     | 
| 
       114 
115 
     | 
    
         
             
            ```
         
     | 
| 
       115 
116 
     | 
    
         | 
| 
       116 
     | 
    
         
            -
            absolute: `north|south|east|west`
         
     | 
| 
       117 
     | 
    
         
            -
            relative: `left|right|down`
         
     | 
| 
      
 117 
     | 
    
         
            +
            absolute: `north|south|east|west` relative: `left|right|down`
         
     | 
| 
       118 
118 
     | 
    
         | 
| 
       119 
119 
     | 
    
         
             
            ### Stamp
         
     | 
| 
       120 
120 
     | 
    
         | 
| 
         @@ -134,7 +134,7 @@ pdf.subset_fonts 
     | 
|
| 
       134 
134 
     | 
    
         | 
| 
       135 
135 
     | 
    
         
             
            ## Contributing
         
     | 
| 
       136 
136 
     | 
    
         | 
| 
       137 
     | 
    
         
            -
            1. Fork it ( https://github.com/tomasc/dragonfly_pdf/fork )
         
     | 
| 
      
 137 
     | 
    
         
            +
            1. Fork it ( <https://github.com/tomasc/dragonfly_pdf/fork> )
         
     | 
| 
       138 
138 
     | 
    
         
             
            2. Create your feature branch (`git checkout -b my-new-feature`)
         
     | 
| 
       139 
139 
     | 
    
         
             
            3. Commit your changes (`git commit -am 'Add some feature'`)
         
     | 
| 
       140 
140 
     | 
    
         
             
            4. Push to the branch (`git push origin my-new-feature`)
         
     | 
    
        data/dragonfly_pdf.gemspec
    CHANGED
    
    | 
         @@ -19,11 +19,12 @@ Gem::Specification.new do |spec| 
     | 
|
| 
       19 
19 
     | 
    
         
             
              spec.require_paths = ['lib']
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
       21 
21 
     | 
    
         
             
              spec.add_dependency 'dragonfly', '~> 1.0'
         
     | 
| 
      
 22 
     | 
    
         
            +
              spec.add_dependency 'dragonfly_libvips', '>= 0.1.1'
         
     | 
| 
       22 
23 
     | 
    
         | 
| 
       23 
     | 
    
         
            -
              spec.add_development_dependency 'bundler', '~> 1. 
     | 
| 
      
 24 
     | 
    
         
            +
              spec.add_development_dependency 'bundler', '~> 1.12'
         
     | 
| 
       24 
25 
     | 
    
         
             
              spec.add_development_dependency 'guard'
         
     | 
| 
       25 
26 
     | 
    
         
             
              spec.add_development_dependency 'guard-minitest'
         
     | 
| 
       26 
     | 
    
         
            -
              spec.add_development_dependency 'minitest'
         
     | 
| 
      
 27 
     | 
    
         
            +
              spec.add_development_dependency 'minitest', '~> 5.0'
         
     | 
| 
      
 28 
     | 
    
         
            +
              spec.add_development_dependency 'rake', '~> 10.0'
         
     | 
| 
       27 
29 
     | 
    
         
             
              spec.add_development_dependency 'pdf-reader'
         
     | 
| 
       28 
     | 
    
         
            -
              spec.add_development_dependency 'rake'
         
     | 
| 
       29 
30 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,31 +1,16 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module DragonflyPdf
         
     | 
| 
       2 
2 
     | 
    
         
             
              module Analysers
         
     | 
| 
       3 
3 
     | 
    
         
             
                class PdfProperties
         
     | 
| 
       4 
     | 
    
         
            -
                  def call(content,  
     | 
| 
       5 
     | 
    
         
            -
                     
     | 
| 
      
 4 
     | 
    
         
            +
                  def call(content, _options = {})
         
     | 
| 
      
 5 
     | 
    
         
            +
                    data = `pdftk #{content.path} dump_data`
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
     | 
    
         
            -
                     
     | 
| 
       8 
     | 
    
         
            -
                     
     | 
| 
       9 
     | 
    
         
            -
                     
     | 
| 
       10 
     | 
    
         
            -
                       
     | 
| 
       11 
     | 
    
         
            -
                      rotate_data += item.scan(/\/Rotate\s(\d+?)\s/)
         
     | 
| 
      
 7 
     | 
    
         
            +
                    page_count = data.scan(/NumberOfPages: (\d+)/).flatten.first.to_i
         
     | 
| 
      
 8 
     | 
    
         
            +
                    page_numbers = data.scan(/PageMediaNumber: (\d+)/).flatten.map(&:to_i)
         
     | 
| 
      
 9 
     | 
    
         
            +
                    page_dimensions = data.scan(/PageMediaDimensions:\s*(\d+\.?\d+)\s*(\d+\.?\d+)/).map do |width_height|
         
     | 
| 
      
 10 
     | 
    
         
            +
                      width_height.map(&:to_f).map { |dim| pt2mm(dim) }
         
     | 
| 
       12 
11 
     | 
    
         
             
                    end
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
                    media_box = box_data.select { |d| d.first =~ /mediabox/i }
         
     | 
| 
       15 
     | 
    
         
            -
                    desired_box = box_data.select { |d| d.first =~ /#{box_type}/i }
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
                    # drop last value, since that comes from data about all pages
         
     | 
| 
       18 
     | 
    
         
            -
                    media_box = media_box[0..-2] if media_box.length > 1
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
                    page_dimensions = (!desired_box.empty? ? desired_box : media_box).map do |dim|
         
     | 
| 
       21 
     | 
    
         
            -
                      i = dim[1..-1].map(&:to_f).map { |d| pt2mm(d) }
         
     | 
| 
       22 
     | 
    
         
            -
                      [i[2] - i[0], i[3] - i[1]]
         
     | 
| 
       23 
     | 
    
         
            -
                    end
         
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
                    page_count = page_dimensions.count
         
     | 
| 
      
 12 
     | 
    
         
            +
                    page_rotations = data.scan(/PageMediaRotation: (\d+)/).flatten.map(&:to_f)
         
     | 
| 
       26 
13 
     | 
    
         
             
                    aspect_ratios = page_dimensions.inject([]) { |res, page| res << (page.first / page.last) }
         
     | 
| 
       27 
     | 
    
         
            -
                    page_numbers = (1..page_count).to_a
         
     | 
| 
       28 
     | 
    
         
            -
                    page_rotations = rotate_data.flatten.map(&:to_f)
         
     | 
| 
       29 
14 
     | 
    
         | 
| 
       30 
15 
     | 
    
         
             
                    {
         
     | 
| 
       31 
16 
     | 
    
         
             
                      aspect_ratios: aspect_ratios,
         
     | 
    
        data/lib/dragonfly_pdf/plugin.rb
    CHANGED
    
    | 
         @@ -1,15 +1,19 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'dragonfly_pdf/analysers/pdf_properties'
         
     | 
| 
       2 
2 
     | 
    
         
             
            require 'dragonfly_pdf/processors/append'
         
     | 
| 
       3 
3 
     | 
    
         
             
            require 'dragonfly_pdf/processors/page'
         
     | 
| 
       4 
     | 
    
         
            -
            require 'dragonfly_pdf/processors/page_thumb'
         
     | 
| 
       5 
4 
     | 
    
         
             
            require 'dragonfly_pdf/processors/remove_password'
         
     | 
| 
       6 
5 
     | 
    
         
             
            require 'dragonfly_pdf/processors/rotate'
         
     | 
| 
       7 
6 
     | 
    
         
             
            require 'dragonfly_pdf/processors/stamp'
         
     | 
| 
       8 
7 
     | 
    
         
             
            require 'dragonfly_pdf/processors/subset_fonts'
         
     | 
| 
       9 
8 
     | 
    
         | 
| 
      
 9 
     | 
    
         
            +
            require 'dragonfly_libvips/analysers/image_properties'
         
     | 
| 
      
 10 
     | 
    
         
            +
            require 'dragonfly_libvips/processors/thumb'
         
     | 
| 
      
 11 
     | 
    
         
            +
            require 'dragonfly_libvips/processors/vipsthumbnail'
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
       10 
13 
     | 
    
         
             
            module DragonflyPdf
         
     | 
| 
       11 
14 
     | 
    
         
             
              class Plugin
         
     | 
| 
       12 
15 
     | 
    
         
             
                def call(app, _opts = {})
         
     | 
| 
      
 16 
     | 
    
         
            +
                  app.add_analyser :image_properties, DragonflyLibvips::Analysers::ImageProperties.new
         
     | 
| 
       13 
17 
     | 
    
         
             
                  app.add_analyser :pdf_properties, DragonflyPdf::Analysers::PdfProperties.new
         
     | 
| 
       14 
18 
     | 
    
         | 
| 
       15 
19 
     | 
    
         
             
                  app.add_analyser :page_count do |content|
         
     | 
| 
         @@ -29,18 +33,26 @@ module DragonflyPdf 
     | 
|
| 
       29 
33 
     | 
    
         
             
                  end
         
     | 
| 
       30 
34 
     | 
    
         | 
| 
       31 
35 
     | 
    
         
             
                  app.add_analyser :aspect_ratios do |content|
         
     | 
| 
       32 
     | 
    
         
            -
                     
     | 
| 
      
 36 
     | 
    
         
            +
                    content.analyse(:pdf_properties)[:aspect_ratios]
         
     | 
| 
       33 
37 
     | 
    
         
             
                  end
         
     | 
| 
       34 
38 
     | 
    
         | 
| 
       35 
39 
     | 
    
         
             
                  # ---------------------------------------------------------------------
         
     | 
| 
       36 
40 
     | 
    
         | 
| 
       37 
41 
     | 
    
         
             
                  app.add_processor :append, DragonflyPdf::Processors::Append.new
         
     | 
| 
       38 
42 
     | 
    
         
             
                  app.add_processor :page, DragonflyPdf::Processors::Page.new
         
     | 
| 
       39 
     | 
    
         
            -
                  app.add_processor :page_thumb, DragonflyPdf::Processors::PageThumb.new
         
     | 
| 
       40 
43 
     | 
    
         
             
                  app.add_processor :remove_password, DragonflyPdf::Processors::RemovePassword.new
         
     | 
| 
       41 
44 
     | 
    
         
             
                  app.add_processor :rotate, DragonflyPdf::Processors::Rotate.new
         
     | 
| 
       42 
45 
     | 
    
         
             
                  app.add_processor :stamp, DragonflyPdf::Processors::Stamp.new
         
     | 
| 
       43 
46 
     | 
    
         
             
                  app.add_processor :subset_fonts, DragonflyPdf::Processors::SubsetFonts.new
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
                  app.add_processor :thumb, DragonflyLibvips::Processors::Thumb.new
         
     | 
| 
      
 49 
     | 
    
         
            +
                  app.add_processor :vipsthumbnail, DragonflyLibvips::Processors::Vipsthumbnail.new
         
     | 
| 
      
 50 
     | 
    
         
            +
                  app.add_processor :page_thumb do |content, page_number, dimensions, options|
         
     | 
| 
      
 51 
     | 
    
         
            +
                    options ||= {}
         
     | 
| 
      
 52 
     | 
    
         
            +
                    options['format'] ||= 'png'
         
     | 
| 
      
 53 
     | 
    
         
            +
                    options['input_args'] = [options['input_args'], "page=#{page_number - 1}"].compact.join(',')
         
     | 
| 
      
 54 
     | 
    
         
            +
                    content.process!(:thumb, dimensions, options)
         
     | 
| 
      
 55 
     | 
    
         
            +
                  end
         
     | 
| 
       44 
56 
     | 
    
         
             
                end
         
     | 
| 
       45 
57 
     | 
    
         
             
              end
         
     | 
| 
       46 
58 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,53 +1,45 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'test_helper'
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
               
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
                   
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
                   
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
                    end
         
     | 
| 
       44 
     | 
    
         
            -
                  end
         
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
                  describe '#page_rotations' do
         
     | 
| 
       47 
     | 
    
         
            -
                    it 'returns correct page count' do
         
     | 
| 
       48 
     | 
    
         
            -
                      analyser.call(sample_pages_rotated)[:page_rotations].must_equal [0.0, 90.0, 180.0, 270.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
         
     | 
| 
       49 
     | 
    
         
            -
                    end
         
     | 
| 
       50 
     | 
    
         
            -
                  end
         
     | 
| 
      
 3 
     | 
    
         
            +
            describe DragonflyPdf::Analysers::PdfProperties do
         
     | 
| 
      
 4 
     | 
    
         
            +
              let(:app) { test_app.configure_with(:pdf) }
         
     | 
| 
      
 5 
     | 
    
         
            +
              let(:analyser) { DragonflyPdf::Analysers::PdfProperties.new }
         
     | 
| 
      
 6 
     | 
    
         
            +
              let(:sample_pages) { app.fetch_file(SAMPLES_DIR.join('sample_pages.pdf')) }
         
     | 
| 
      
 7 
     | 
    
         
            +
              let(:sample_pages_with_bleed) { app.fetch_file(SAMPLES_DIR.join('sample_pages_with_bleed.pdf')) }
         
     | 
| 
      
 8 
     | 
    
         
            +
              let(:sample_pages_rotated) { app.fetch_file(SAMPLES_DIR.join('sample_pages_rotated.pdf')) }
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
              # =====================================================================
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
              it 'returns Hash' do
         
     | 
| 
      
 13 
     | 
    
         
            +
                analyser.call(sample_pages).must_be_kind_of Hash
         
     | 
| 
      
 14 
     | 
    
         
            +
              end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
              describe '#page_numbers' do
         
     | 
| 
      
 17 
     | 
    
         
            +
                it 'returns one-dimensional array' do
         
     | 
| 
      
 18 
     | 
    
         
            +
                  analyser.call(sample_pages)[:page_numbers].must_equal (1..10).to_a
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
              end
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
              describe '#page_count' do
         
     | 
| 
      
 23 
     | 
    
         
            +
                it 'returns correct page count' do
         
     | 
| 
      
 24 
     | 
    
         
            +
                  analyser.call(sample_pages)[:page_count].must_equal 10
         
     | 
| 
      
 25 
     | 
    
         
            +
                end
         
     | 
| 
      
 26 
     | 
    
         
            +
              end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
              describe '#page_dimensions' do
         
     | 
| 
      
 29 
     | 
    
         
            +
                it 'returns array of page dimensions' do
         
     | 
| 
      
 30 
     | 
    
         
            +
                  analyser.call(sample_pages)[:page_dimensions].map { |p| p.map(&:round) }.must_equal [[210, 297]].cycle.take(10)
         
     | 
| 
      
 31 
     | 
    
         
            +
                end
         
     | 
| 
      
 32 
     | 
    
         
            +
              end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
              describe '#aspect_ratios' do
         
     | 
| 
      
 35 
     | 
    
         
            +
                it 'returns aspect ratios' do
         
     | 
| 
      
 36 
     | 
    
         
            +
                  analyser.call(sample_pages)[:aspect_ratios].map { |i| i.round(2) }.must_equal [0.71].cycle.take(10)
         
     | 
| 
      
 37 
     | 
    
         
            +
                end
         
     | 
| 
      
 38 
     | 
    
         
            +
              end
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
              describe '#page_rotations' do
         
     | 
| 
      
 41 
     | 
    
         
            +
                it 'returns correct page count' do
         
     | 
| 
      
 42 
     | 
    
         
            +
                  analyser.call(sample_pages_rotated)[:page_rotations].must_equal [0.0, 90.0, 180.0, 270.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
         
     | 
| 
       51 
43 
     | 
    
         
             
                end
         
     | 
| 
       52 
44 
     | 
    
         
             
              end
         
     | 
| 
       53 
45 
     | 
    
         
             
            end
         
     | 
| 
         @@ -62,5 +62,14 @@ module DragonflyPdf 
     | 
|
| 
       62 
62 
     | 
    
         
             
                    pdf.must_respond_to :subset_fonts
         
     | 
| 
       63 
63 
     | 
    
         
             
                  end
         
     | 
| 
       64 
64 
     | 
    
         
             
                end
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
                describe 'DragonflyLibvips proxy' do
         
     | 
| 
      
 67 
     | 
    
         
            +
                  describe 'page_thumb' do
         
     | 
| 
      
 68 
     | 
    
         
            +
                    it 'encodes the image to the correct format' do
         
     | 
| 
      
 69 
     | 
    
         
            +
                      pdf.page_thumb!(1, '600x')
         
     | 
| 
      
 70 
     | 
    
         
            +
                      `file --mime-type #{pdf.path}`.must_include 'image/png'
         
     | 
| 
      
 71 
     | 
    
         
            +
                    end
         
     | 
| 
      
 72 
     | 
    
         
            +
                  end
         
     | 
| 
      
 73 
     | 
    
         
            +
                end
         
     | 
| 
       65 
74 
     | 
    
         
             
              end
         
     | 
| 
       66 
75 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,34 +1,14 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'pdf-reader'
         
     | 
| 
       2 
1 
     | 
    
         
             
            require 'test_helper'
         
     | 
| 
       3 
2 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
               
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
                  let(:sample_1) { Dragonfly::Content.new(app, SAMPLES_DIR.join('sample_pages.pdf')) }
         
     | 
| 
       10 
     | 
    
         
            -
                  let(:sample_2) { Dragonfly::Content.new(app, SAMPLES_DIR.join('sample_pages_with_bleed.pdf')) }
         
     | 
| 
       11 
     | 
    
         
            -
                  let(:result) { PDF::Reader.new(sample_1.path) }
         
     | 
| 
      
 3 
     | 
    
         
            +
            describe DragonflyPdf::Processors::Append do
         
     | 
| 
      
 4 
     | 
    
         
            +
              let(:app) { test_app.configure_with(:pdf) }
         
     | 
| 
      
 5 
     | 
    
         
            +
              let(:processor) { DragonflyPdf::Processors::Append.new }
         
     | 
| 
      
 6 
     | 
    
         
            +
              let(:sample_1) { Dragonfly::Content.new(app, SAMPLES_DIR.join('sample_pages.pdf')) }
         
     | 
| 
      
 7 
     | 
    
         
            +
              let(:sample_2) { Dragonfly::Content.new(app, SAMPLES_DIR.join('sample_pages_with_bleed.pdf')) }
         
     | 
| 
       12 
8 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
      
 9 
     | 
    
         
            +
              before { processor.call(sample_1, [sample_2]) }
         
     | 
| 
       14 
10 
     | 
    
         | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
                  end
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
                  it 'returns PDF by default' do
         
     | 
| 
       20 
     | 
    
         
            -
                    get_mime_type(sample_1.path).must_include 'application/pdf'
         
     | 
| 
       21 
     | 
    
         
            -
                  end
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
                  it 'has total number of pages' do
         
     | 
| 
       24 
     | 
    
         
            -
                    result.pages.count.must_equal 11
         
     | 
| 
       25 
     | 
    
         
            -
                  end
         
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
                  # ---------------------------------------------------------------------
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
                  def get_mime_type(file_path)
         
     | 
| 
       30 
     | 
    
         
            -
                    `file --mime-type #{file_path}`.delete("\n")
         
     | 
| 
       31 
     | 
    
         
            -
                  end
         
     | 
| 
       32 
     | 
    
         
            -
                end
         
     | 
| 
      
 11 
     | 
    
         
            +
              it 'has total number of pages' do
         
     | 
| 
      
 12 
     | 
    
         
            +
                sample_1.analyse(:page_count).must_equal 11
         
     | 
| 
       33 
13 
     | 
    
         
             
              end
         
     | 
| 
       34 
14 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,39 +1,19 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'pdf-reader'
         
     | 
| 
       2 
1 
     | 
    
         
             
            require 'test_helper'
         
     | 
| 
       3 
2 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
               
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
                  let(:processor) { DragonflyPdf::Processors::Page.new }
         
     | 
| 
       9 
     | 
    
         
            -
                  let(:sample_pages) { Dragonfly::Content.new(app, SAMPLES_DIR.join('sample_pages.pdf')) }
         
     | 
| 
       10 
     | 
    
         
            -
                  let(:result) { PDF::Reader.new(sample_pages.path) }
         
     | 
| 
      
 3 
     | 
    
         
            +
            describe DragonflyPdf::Processors::Page do
         
     | 
| 
      
 4 
     | 
    
         
            +
              let(:app) { test_app.configure_with(:pdf) }
         
     | 
| 
      
 5 
     | 
    
         
            +
              let(:processor) { DragonflyPdf::Processors::Page.new }
         
     | 
| 
      
 6 
     | 
    
         
            +
              let(:sample_pages) { Dragonfly::Content.new(app, SAMPLES_DIR.join('sample_pages.pdf')) }
         
     | 
| 
       11 
7 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
                    get_mime_type(sample_pages.path).must_include 'application/pdf'
         
     | 
| 
       17 
     | 
    
         
            -
                  end
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
                  it 'raises PageNotFound error' do
         
     | 
| 
       20 
     | 
    
         
            -
                    proc { processor.call(sample_pages, 0) }.must_raise DragonflyPdf::PageNotFound
         
     | 
| 
       21 
     | 
    
         
            -
                    proc { processor.call(sample_pages, 11) }.must_raise DragonflyPdf::PageNotFound
         
     | 
| 
       22 
     | 
    
         
            -
                  end
         
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
                  describe 'single pages' do
         
     | 
| 
       25 
     | 
    
         
            -
                    it 'renders page' do
         
     | 
| 
       26 
     | 
    
         
            -
                      processor.call(sample_pages, 1)
         
     | 
| 
       27 
     | 
    
         
            -
                      result.pages.count.must_equal 1
         
     | 
| 
       28 
     | 
    
         
            -
                      result.pages.first.text.must_equal '1'
         
     | 
| 
       29 
     | 
    
         
            -
                    end
         
     | 
| 
       30 
     | 
    
         
            -
                  end
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
                  # ---------------------------------------------------------------------
         
     | 
| 
      
 8 
     | 
    
         
            +
              it 'raises PageNotFound error' do
         
     | 
| 
      
 9 
     | 
    
         
            +
                proc { processor.call(sample_pages, 0) }.must_raise DragonflyPdf::PageNotFound
         
     | 
| 
      
 10 
     | 
    
         
            +
                proc { processor.call(sample_pages, 11) }.must_raise DragonflyPdf::PageNotFound
         
     | 
| 
      
 11 
     | 
    
         
            +
              end
         
     | 
| 
       33 
12 
     | 
    
         | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
                   
     | 
| 
      
 13 
     | 
    
         
            +
              describe 'single pages' do
         
     | 
| 
      
 14 
     | 
    
         
            +
                it 'renders page' do
         
     | 
| 
      
 15 
     | 
    
         
            +
                  processor.call(sample_pages, 1)
         
     | 
| 
      
 16 
     | 
    
         
            +
                  sample_pages.analyse(:page_count).must_equal 1
         
     | 
| 
       37 
17 
     | 
    
         
             
                end
         
     | 
| 
       38 
18 
     | 
    
         
             
              end
         
     | 
| 
       39 
19 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,26 +1,12 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'pdf-reader'
         
     | 
| 
       2 
1 
     | 
    
         
             
            require 'test_helper'
         
     | 
| 
       3 
2 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
               
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
                  let(:processor) { DragonflyPdf::Processors::RemovePassword.new }
         
     | 
| 
       9 
     | 
    
         
            -
                  let(:sample_pages) { Dragonfly::Content.new(app, SAMPLES_DIR.join('sample_pages_with_password.pdf')) }
         
     | 
| 
       10 
     | 
    
         
            -
                  let(:result) { PDF::Reader.new(sample_pages.path) }
         
     | 
| 
      
 3 
     | 
    
         
            +
            describe DragonflyPdf::Processors::RemovePassword do
         
     | 
| 
      
 4 
     | 
    
         
            +
              let(:app) { test_app.configure_with(:pdf) }
         
     | 
| 
      
 5 
     | 
    
         
            +
              let(:processor) { DragonflyPdf::Processors::RemovePassword.new }
         
     | 
| 
      
 6 
     | 
    
         
            +
              let(:sample_pages) { Dragonfly::Content.new(app, SAMPLES_DIR.join('sample_pages_with_password.pdf')) }
         
     | 
| 
       11 
7 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
                    processor.call(sample_pages, 1)
         
     | 
| 
       16 
     | 
    
         
            -
                    get_mime_type(sample_pages.path).must_include 'application/pdf'
         
     | 
| 
       17 
     | 
    
         
            -
                  end
         
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
                  # ---------------------------------------------------------------------
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
                  def get_mime_type(file_path)
         
     | 
| 
       22 
     | 
    
         
            -
                    `file --mime-type #{file_path}`.delete("\n")
         
     | 
| 
       23 
     | 
    
         
            -
                  end
         
     | 
| 
       24 
     | 
    
         
            -
                end
         
     | 
| 
      
 8 
     | 
    
         
            +
              it 'returns PDF by default' do
         
     | 
| 
      
 9 
     | 
    
         
            +
                processor.call(sample_pages, 1)
         
     | 
| 
      
 10 
     | 
    
         
            +
                `pdftk #{sample_pages.path} dump_data`.wont_include 'OWNER PASSWORD REQUIRED'
         
     | 
| 
       25 
11 
     | 
    
         
             
              end
         
     | 
| 
       26 
12 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,40 +1,21 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'pdf-reader'
         
     | 
| 
       2 
1 
     | 
    
         
             
            require 'test_helper'
         
     | 
| 
       3 
2 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
               
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
                  let(:processor) { DragonflyPdf::Processors::Rotate.new }
         
     | 
| 
       9 
     | 
    
         
            -
                  let(:sample_1) { Dragonfly::Content.new(app, SAMPLES_DIR.join('sample_pages.pdf')) }
         
     | 
| 
       10 
     | 
    
         
            -
                  let(:result) { PDF::Reader.new(sample_1.path) }
         
     | 
| 
      
 3 
     | 
    
         
            +
            describe DragonflyPdf::Processors::Rotate do
         
     | 
| 
      
 4 
     | 
    
         
            +
              let(:app) { test_app.configure_with(:pdf) }
         
     | 
| 
      
 5 
     | 
    
         
            +
              let(:processor) { DragonflyPdf::Processors::Rotate.new }
         
     | 
| 
      
 6 
     | 
    
         
            +
              let(:sample_1) { Dragonfly::Content.new(app, SAMPLES_DIR.join('sample_pages.pdf')) }
         
     | 
| 
       11 
7 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
                   
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
                  describe 'arg is String|Symbol' do
         
     | 
| 
       20 
     | 
    
         
            -
                    it 'rotates all pages' do
         
     | 
| 
       21 
     | 
    
         
            -
                      processor.call(sample_1, :left)
         
     | 
| 
       22 
     | 
    
         
            -
                      result.pages.map { |p| p.attributes[:Rotate] }.must_equal [270, 270, 270, 270, 270, 270, 270, 270, 270, 270]
         
     | 
| 
       23 
     | 
    
         
            -
                    end
         
     | 
| 
       24 
     | 
    
         
            -
                  end
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
                  describe 'arg is Hash' do
         
     | 
| 
       27 
     | 
    
         
            -
                    it 'rotates only defined pages' do
         
     | 
| 
       28 
     | 
    
         
            -
                      processor.call(sample_1, 1 => :left, 3 => :right)
         
     | 
| 
       29 
     | 
    
         
            -
                      result.pages.map { |p| p.attributes[:Rotate] }.must_equal [270, nil, 90, nil, nil, nil, nil, nil, nil, nil]
         
     | 
| 
       30 
     | 
    
         
            -
                    end
         
     | 
| 
       31 
     | 
    
         
            -
                  end
         
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
                  # ---------------------------------------------------------------------
         
     | 
| 
      
 8 
     | 
    
         
            +
              describe 'arg is String|Symbol' do
         
     | 
| 
      
 9 
     | 
    
         
            +
                it 'rotates all pages' do
         
     | 
| 
      
 10 
     | 
    
         
            +
                  processor.call(sample_1, :left)
         
     | 
| 
      
 11 
     | 
    
         
            +
                  sample_1.analyse(:page_rotations).must_equal [270, 270, 270, 270, 270, 270, 270, 270, 270, 270]
         
     | 
| 
      
 12 
     | 
    
         
            +
                end
         
     | 
| 
      
 13 
     | 
    
         
            +
              end
         
     | 
| 
       34 
14 
     | 
    
         | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
       37 
     | 
    
         
            -
                   
     | 
| 
      
 15 
     | 
    
         
            +
              describe 'arg is Hash' do
         
     | 
| 
      
 16 
     | 
    
         
            +
                it 'rotates only defined pages' do
         
     | 
| 
      
 17 
     | 
    
         
            +
                  processor.call(sample_1, 1 => :left, 3 => :right)
         
     | 
| 
      
 18 
     | 
    
         
            +
                  sample_1.analyse(:page_rotations).must_equal [270, 0.0, 90, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
         
     | 
| 
       38 
19 
     | 
    
         
             
                end
         
     | 
| 
       39 
20 
     | 
    
         
             
              end
         
     | 
| 
       40 
21 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,38 +1,20 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'pdf-reader'
         
     | 
| 
       2 
2 
     | 
    
         
             
            require 'test_helper'
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
               
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
                  let(:sample_stamp) { Dragonfly::Content.new(app, SAMPLES_DIR.join('sample_stamp.pdf')) }
         
     | 
| 
       11 
     | 
    
         
            -
                  let(:result) { PDF::Reader.new(sample_1.path) }
         
     | 
| 
      
 4 
     | 
    
         
            +
            describe DragonflyPdf::Processors::Stamp do
         
     | 
| 
      
 5 
     | 
    
         
            +
              let(:app) { test_app.configure_with(:pdf) }
         
     | 
| 
      
 6 
     | 
    
         
            +
              let(:processor) { DragonflyPdf::Processors::Stamp.new }
         
     | 
| 
      
 7 
     | 
    
         
            +
              let(:sample_1) { Dragonfly::Content.new(app, SAMPLES_DIR.join('sample_pages.pdf')) }
         
     | 
| 
      
 8 
     | 
    
         
            +
              let(:sample_stamp) { Dragonfly::Content.new(app, SAMPLES_DIR.join('sample_stamp.pdf')) }
         
     | 
| 
      
 9 
     | 
    
         
            +
              let(:text) { PDF::Reader.new(sample_1.path).pages.map(&:text) }
         
     | 
| 
       12 
10 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
      
 11 
     | 
    
         
            +
              before { processor.call(sample_1, sample_stamp) }
         
     | 
| 
       14 
12 
     | 
    
         | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
                  it 'returns PDF by default' do
         
     | 
| 
       20 
     | 
    
         
            -
                    get_mime_type(sample_1.path).must_include 'application/pdf'
         
     | 
| 
       21 
     | 
    
         
            -
                  end
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
                  it 'has same number of pages' do
         
     | 
| 
       24 
     | 
    
         
            -
                    result.pages.count.must_equal 10
         
     | 
| 
       25 
     | 
    
         
            -
                  end
         
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
                  it 'has the stamp' do
         
     | 
| 
       28 
     | 
    
         
            -
                    result.pages.map(&:text).must_equal %w(STAMP).cycle(10).to_a
         
     | 
| 
       29 
     | 
    
         
            -
                  end
         
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
                  # ---------------------------------------------------------------------
         
     | 
| 
      
 13 
     | 
    
         
            +
              it 'has same number of pages' do
         
     | 
| 
      
 14 
     | 
    
         
            +
                sample_1.analyse(:page_count).must_equal 10
         
     | 
| 
      
 15 
     | 
    
         
            +
              end
         
     | 
| 
       32 
16 
     | 
    
         | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
                  end
         
     | 
| 
       36 
     | 
    
         
            -
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
              it 'has the stamp' do
         
     | 
| 
      
 18 
     | 
    
         
            +
                text.must_equal %w(STAMP).cycle(10).to_a
         
     | 
| 
       37 
19 
     | 
    
         
             
              end
         
     | 
| 
       38 
20 
     | 
    
         
             
            end
         
     | 
| 
         @@ -0,0 +1,12 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'test_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            describe DragonflyPdf::Processors::SubsetFonts do
         
     | 
| 
      
 4 
     | 
    
         
            +
              let(:app) { test_app.configure_with(:pdf) }
         
     | 
| 
      
 5 
     | 
    
         
            +
              let(:processor) { DragonflyPdf::Processors::SubsetFonts.new }
         
     | 
| 
      
 6 
     | 
    
         
            +
              let(:sample_pages) { Dragonfly::Content.new(app, SAMPLES_DIR.join('sample_pages.pdf')) }
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
              it 'returns PDF by default' do
         
     | 
| 
      
 9 
     | 
    
         
            +
                skip 'not sure how to test this'
         
     | 
| 
      
 10 
     | 
    
         
            +
                processor.call(sample_pages, 1)
         
     | 
| 
      
 11 
     | 
    
         
            +
              end
         
     | 
| 
      
 12 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: dragonfly_pdf
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.3.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Tomas Celizna
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2016-08- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2016-08-22 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: dragonfly
         
     | 
| 
         @@ -24,20 +24,34 @@ dependencies: 
     | 
|
| 
       24 
24 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       25 
25 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       26 
26 
     | 
    
         
             
                    version: '1.0'
         
     | 
| 
      
 27 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 28 
     | 
    
         
            +
              name: dragonfly_libvips
         
     | 
| 
      
 29 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 30 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 31 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 32 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 33 
     | 
    
         
            +
                    version: 0.1.1
         
     | 
| 
      
 34 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 35 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 36 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 37 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 38 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 39 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 40 
     | 
    
         
            +
                    version: 0.1.1
         
     | 
| 
       27 
41 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       28 
42 
     | 
    
         
             
              name: bundler
         
     | 
| 
       29 
43 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       30 
44 
     | 
    
         
             
                requirements:
         
     | 
| 
       31 
45 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       32 
46 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       33 
     | 
    
         
            -
                    version: '1. 
     | 
| 
      
 47 
     | 
    
         
            +
                    version: '1.12'
         
     | 
| 
       34 
48 
     | 
    
         
             
              type: :development
         
     | 
| 
       35 
49 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       36 
50 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       37 
51 
     | 
    
         
             
                requirements:
         
     | 
| 
       38 
52 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       39 
53 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       40 
     | 
    
         
            -
                    version: '1. 
     | 
| 
      
 54 
     | 
    
         
            +
                    version: '1.12'
         
     | 
| 
       41 
55 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       42 
56 
     | 
    
         
             
              name: guard
         
     | 
| 
       43 
57 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -70,32 +84,32 @@ dependencies: 
     | 
|
| 
       70 
84 
     | 
    
         
             
              name: minitest
         
     | 
| 
       71 
85 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       72 
86 
     | 
    
         
             
                requirements:
         
     | 
| 
       73 
     | 
    
         
            -
                - - " 
     | 
| 
      
 87 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
       74 
88 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       75 
     | 
    
         
            -
                    version: '0'
         
     | 
| 
      
 89 
     | 
    
         
            +
                    version: '5.0'
         
     | 
| 
       76 
90 
     | 
    
         
             
              type: :development
         
     | 
| 
       77 
91 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       78 
92 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       79 
93 
     | 
    
         
             
                requirements:
         
     | 
| 
       80 
     | 
    
         
            -
                - - " 
     | 
| 
      
 94 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
       81 
95 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       82 
     | 
    
         
            -
                    version: '0'
         
     | 
| 
      
 96 
     | 
    
         
            +
                    version: '5.0'
         
     | 
| 
       83 
97 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       84 
     | 
    
         
            -
              name:  
     | 
| 
      
 98 
     | 
    
         
            +
              name: rake
         
     | 
| 
       85 
99 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       86 
100 
     | 
    
         
             
                requirements:
         
     | 
| 
       87 
     | 
    
         
            -
                - - " 
     | 
| 
      
 101 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
       88 
102 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       89 
     | 
    
         
            -
                    version: '0'
         
     | 
| 
      
 103 
     | 
    
         
            +
                    version: '10.0'
         
     | 
| 
       90 
104 
     | 
    
         
             
              type: :development
         
     | 
| 
       91 
105 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       92 
106 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       93 
107 
     | 
    
         
             
                requirements:
         
     | 
| 
       94 
     | 
    
         
            -
                - - " 
     | 
| 
      
 108 
     | 
    
         
            +
                - - "~>"
         
     | 
| 
       95 
109 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       96 
     | 
    
         
            -
                    version: '0'
         
     | 
| 
      
 110 
     | 
    
         
            +
                    version: '10.0'
         
     | 
| 
       97 
111 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       98 
     | 
    
         
            -
              name:  
     | 
| 
      
 112 
     | 
    
         
            +
              name: pdf-reader
         
     | 
| 
       99 
113 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       100 
114 
     | 
    
         
             
                requirements:
         
     | 
| 
       101 
115 
     | 
    
         
             
                - - ">="
         
     | 
| 
         @@ -130,7 +144,6 @@ files: 
     | 
|
| 
       130 
144 
     | 
    
         
             
            - lib/dragonfly_pdf/plugin.rb
         
     | 
| 
       131 
145 
     | 
    
         
             
            - lib/dragonfly_pdf/processors/append.rb
         
     | 
| 
       132 
146 
     | 
    
         
             
            - lib/dragonfly_pdf/processors/page.rb
         
     | 
| 
       133 
     | 
    
         
            -
            - lib/dragonfly_pdf/processors/page_thumb.rb
         
     | 
| 
       134 
147 
     | 
    
         
             
            - lib/dragonfly_pdf/processors/remove_password.rb
         
     | 
| 
       135 
148 
     | 
    
         
             
            - lib/dragonfly_pdf/processors/rotate.rb
         
     | 
| 
       136 
149 
     | 
    
         
             
            - lib/dragonfly_pdf/processors/stamp.rb
         
     | 
| 
         @@ -145,11 +158,10 @@ files: 
     | 
|
| 
       145 
158 
     | 
    
         
             
            - test/dragonfly_pdf/plugin_test.rb
         
     | 
| 
       146 
159 
     | 
    
         
             
            - test/dragonfly_pdf/processors/append_test.rb
         
     | 
| 
       147 
160 
     | 
    
         
             
            - test/dragonfly_pdf/processors/page_test.rb
         
     | 
| 
       148 
     | 
    
         
            -
            - test/dragonfly_pdf/processors/page_thumb_test.rb
         
     | 
| 
       149 
161 
     | 
    
         
             
            - test/dragonfly_pdf/processors/remove_password_test.rb
         
     | 
| 
       150 
162 
     | 
    
         
             
            - test/dragonfly_pdf/processors/rotate_test.rb
         
     | 
| 
       151 
163 
     | 
    
         
             
            - test/dragonfly_pdf/processors/stamp_test.rb
         
     | 
| 
       152 
     | 
    
         
            -
            - test/dragonfly_pdf/processors/ 
     | 
| 
      
 164 
     | 
    
         
            +
            - test/dragonfly_pdf/processors/subset_fonts_test.rb
         
     | 
| 
       153 
165 
     | 
    
         
             
            - test/test_helper.rb
         
     | 
| 
       154 
166 
     | 
    
         
             
            homepage: https://github.com/tomasc/dragonfly_pdf
         
     | 
| 
       155 
167 
     | 
    
         
             
            licenses:
         
     | 
| 
         @@ -180,9 +192,8 @@ test_files: 
     | 
|
| 
       180 
192 
     | 
    
         
             
            - test/dragonfly_pdf/plugin_test.rb
         
     | 
| 
       181 
193 
     | 
    
         
             
            - test/dragonfly_pdf/processors/append_test.rb
         
     | 
| 
       182 
194 
     | 
    
         
             
            - test/dragonfly_pdf/processors/page_test.rb
         
     | 
| 
       183 
     | 
    
         
            -
            - test/dragonfly_pdf/processors/page_thumb_test.rb
         
     | 
| 
       184 
195 
     | 
    
         
             
            - test/dragonfly_pdf/processors/remove_password_test.rb
         
     | 
| 
       185 
196 
     | 
    
         
             
            - test/dragonfly_pdf/processors/rotate_test.rb
         
     | 
| 
       186 
197 
     | 
    
         
             
            - test/dragonfly_pdf/processors/stamp_test.rb
         
     | 
| 
       187 
     | 
    
         
            -
            - test/dragonfly_pdf/processors/ 
     | 
| 
      
 198 
     | 
    
         
            +
            - test/dragonfly_pdf/processors/subset_fonts_test.rb
         
     | 
| 
       188 
199 
     | 
    
         
             
            - test/test_helper.rb
         
     | 
| 
         @@ -1,45 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require_relative '../analysers/pdf_properties'
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            module DragonflyPdf
         
     | 
| 
       4 
     | 
    
         
            -
              module Processors
         
     | 
| 
       5 
     | 
    
         
            -
                class PageThumb
         
     | 
| 
       6 
     | 
    
         
            -
                  attr_reader :content, :density, :page_number, :format
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
                  def call(content, page_number = 1, opts = {})
         
     | 
| 
       9 
     | 
    
         
            -
                    @content = content
         
     | 
| 
       10 
     | 
    
         
            -
                    @page_number = page_number
         
     | 
| 
       11 
     | 
    
         
            -
                    @format = opts['format'] || :png
         
     | 
| 
       12 
     | 
    
         
            -
                    @density = opts['density'] || 150
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
                    content.shell_update(ext: @format) do |old_path, new_path|
         
     | 
| 
       15 
     | 
    
         
            -
                      "#{gs_command} -o '#{new_path}' -f '#{old_path}'"
         
     | 
| 
       16 
     | 
    
         
            -
                    end
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
                    @content.meta['format'] = @format.to_s
         
     | 
| 
       19 
     | 
    
         
            -
                    @content.ext = @format
         
     | 
| 
       20 
     | 
    
         
            -
                  end
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
                  def update_url(attrs, page_number, opts = {})
         
     | 
| 
       23 
     | 
    
         
            -
                    format = opts['format']
         
     | 
| 
       24 
     | 
    
         
            -
                    attrs.page_number = page_number
         
     | 
| 
       25 
     | 
    
         
            -
                    attrs.ext = format if format
         
     | 
| 
       26 
     | 
    
         
            -
                  end
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
                  private # =============================================================
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
                  def gs_command
         
     | 
| 
       31 
     | 
    
         
            -
                    "gs -sDEVICE=#{gs_format} -r#{density} -dTextAlphaBits=4 -dUseArtBox -dFirstPage=#{page_number} -dLastPage=#{page_number}"
         
     | 
| 
       32 
     | 
    
         
            -
                  end
         
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
                  def gs_format
         
     | 
| 
       36 
     | 
    
         
            -
                    case @format
         
     | 
| 
       37 
     | 
    
         
            -
                    when :png then :png16m
         
     | 
| 
       38 
     | 
    
         
            -
                    when :jpg, :jpeg then :jpeg
         
     | 
| 
       39 
     | 
    
         
            -
                    when :tif, :tiff then :tiff48nc
         
     | 
| 
       40 
     | 
    
         
            -
                    else :jpeg
         
     | 
| 
       41 
     | 
    
         
            -
                    end
         
     | 
| 
       42 
     | 
    
         
            -
                  end
         
     | 
| 
       43 
     | 
    
         
            -
                end
         
     | 
| 
       44 
     | 
    
         
            -
              end
         
     | 
| 
       45 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,34 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'test_helper'
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            module DragonflyPdf
         
     | 
| 
       4 
     | 
    
         
            -
              module Processors
         
     | 
| 
       5 
     | 
    
         
            -
                describe PageThumb do
         
     | 
| 
       6 
     | 
    
         
            -
                  let(:app) { test_app.configure_with(:pdf) }
         
     | 
| 
       7 
     | 
    
         
            -
                  let(:processor) { DragonflyPdf::Processors::PageThumb.new }
         
     | 
| 
       8 
     | 
    
         
            -
                  let(:sample_pages) { Dragonfly::Content.new(app, SAMPLES_DIR.join('sample_pages.pdf')) }
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
                  # =====================================================================
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
                  it 'returns PNG by default' do
         
     | 
| 
       13 
     | 
    
         
            -
                    processor.call(sample_pages, 1, density: 72)
         
     | 
| 
       14 
     | 
    
         
            -
                    get_mime_type(sample_pages.path).must_include 'image/png'
         
     | 
| 
       15 
     | 
    
         
            -
                  end
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
                  it 'raises PageNotFound error' do
         
     | 
| 
       18 
     | 
    
         
            -
                    skip 'calling the page properties slows evrything down'
         
     | 
| 
       19 
     | 
    
         
            -
                    proc { processor.call(sample_pages, 0) }.must_raise DragonflyPdf::PageNotFound
         
     | 
| 
       20 
     | 
    
         
            -
                    proc { processor.call(sample_pages, 11) }.must_raise DragonflyPdf::PageNotFound
         
     | 
| 
       21 
     | 
    
         
            -
                  end
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
                  it 'renders page' do
         
     | 
| 
       24 
     | 
    
         
            -
                    processor.call(sample_pages, 1, density: 72)
         
     | 
| 
       25 
     | 
    
         
            -
                  end
         
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
                  # ---------------------------------------------------------------------
         
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
                  def get_mime_type(file_path)
         
     | 
| 
       30 
     | 
    
         
            -
                    `file --mime-type #{file_path}`.delete("\n")
         
     | 
| 
       31 
     | 
    
         
            -
                  end
         
     | 
| 
       32 
     | 
    
         
            -
                end
         
     | 
| 
       33 
     | 
    
         
            -
              end
         
     | 
| 
       34 
     | 
    
         
            -
            end
         
     | 
| 
         @@ -1,22 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            module DragonflyPdf
         
     | 
| 
       2 
     | 
    
         
            -
              module Processors
         
     | 
| 
       3 
     | 
    
         
            -
                describe SubsetFonts do
         
     | 
| 
       4 
     | 
    
         
            -
                  let(:app) { test_app.configure_with(:pdf) }
         
     | 
| 
       5 
     | 
    
         
            -
                  let(:processor) { DragonflyPdf::Processors::SubsetFonts.new }
         
     | 
| 
       6 
     | 
    
         
            -
                  let(:sample_pages) { Dragonfly::Content.new(app, SAMPLES_DIR.join('sample_pages.pdf')) }
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
     | 
    
         
            -
                  # =====================================================================
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
                  it 'returns PDF by default' do
         
     | 
| 
       11 
     | 
    
         
            -
                    processor.call(sample_pages, 1)
         
     | 
| 
       12 
     | 
    
         
            -
                    get_mime_type(sample_pages.path).must_include 'application/pdf'
         
     | 
| 
       13 
     | 
    
         
            -
                  end
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
                  private # =============================================================
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
                  def get_mime_type(file_path)
         
     | 
| 
       18 
     | 
    
         
            -
                    `file --mime-type #{file_path}`.delete("\n")
         
     | 
| 
       19 
     | 
    
         
            -
                  end
         
     | 
| 
       20 
     | 
    
         
            -
                end
         
     | 
| 
       21 
     | 
    
         
            -
              end
         
     | 
| 
       22 
     | 
    
         
            -
            end
         
     |