dragonfly_pdf 2.2.1 → 2.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/lib/dragonfly_pdf/analysers/pdf_properties.rb +38 -10
- data/lib/dragonfly_pdf/version.rb +1 -1
- data/lib/dragonfly_pdf.rb +1 -1
- metadata +7 -41
- data/.gitignore +0 -23
- data/.tool-versions +0 -1
- data/.travis.yml +0 -28
- data/Gemfile +0 -4
- data/Guardfile +0 -8
- data/LICENSE +0 -21
- data/dragonfly_pdf.gemspec +0 -31
- data/samples/sample_pages.pdf +0 -0
- data/samples/sample_pages_rotated.pdf +0 -0
- data/samples/sample_pages_with_bleed.pdf +0 -0
- data/samples/sample_pages_with_password.pdf +0 -0
- data/samples/sample_stamp.pdf +0 -0
- data/test/dragonfly_pdf/analysers/pdf_properties_test.rb +0 -16
- data/test/dragonfly_pdf/plugin_test.rb +0 -30
- data/test/dragonfly_pdf/processors/append_test.rb +0 -16
- data/test/dragonfly_pdf/processors/convert_test.rb +0 -25
- data/test/dragonfly_pdf/processors/page_test.rb +0 -19
- data/test/dragonfly_pdf/processors/page_thumb_test.rb +0 -27
- data/test/dragonfly_pdf/processors/remove_password_test.rb +0 -15
- data/test/dragonfly_pdf/processors/rotate_test.rb +0 -22
- data/test/dragonfly_pdf/processors/stamp_test.rb +0 -18
- data/test/dragonfly_pdf/processors/subset_fonts_test.rb +0 -17
- data/test/test_helper.rb +0 -20
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 82ce144970343c6de53384e1b1cf1a6c1844d25007c9afda222fcdc1105db747
         | 
| 4 | 
            +
              data.tar.gz: 5467a0f818a38d111edd3045e5a6d7b022f1c6926d540b30fbc1b2a2fa1efae2
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: b55595af48d2d58bff454245b96c3c0362388c26ec902603e31189444339f95d5ecf7d3b5d3f3c9d8163913080b02fa9c2b71c5e4468a5e228da5624df94b279
         | 
| 7 | 
            +
              data.tar.gz: 8c744fca929302ca9c7a8d592a8c9faff67de7fee5af373ad40650f8e1e37d7e142201ff53bb5ee90add7339eba67f00c0a7d6c294a08cbd5dee40b7dee183f8
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    
| @@ -1,35 +1,63 @@ | |
| 1 1 | 
             
            module DragonflyPdf
         | 
| 2 2 | 
             
              module Analysers
         | 
| 3 3 | 
             
                class PdfProperties
         | 
| 4 | 
            +
                  NUMBER_OF_PAGES_REGEX = /NumberOfPages:\s*(\d+)/
         | 
| 5 | 
            +
                  PAGE_MEDIA_NUMBER_REGEX = /PageMediaNumber:\s*(\d+)/
         | 
| 6 | 
            +
                  PAGE_MEDIA_DIMENSIONS_REGEX = /PageMediaDimensions:\s*(\d+\,?\d+\.?\d+)\s*(\d+\,?\d+\.?\d+)/
         | 
| 7 | 
            +
                  PAGE_MEDIA_ROTATIONS_REGEX = /PageMediaRotation:\s*(\d+)/
         | 
| 8 | 
            +
             | 
| 4 9 | 
             
                  def call(content, options = {})
         | 
| 5 10 | 
             
                    return {} unless content.ext
         | 
| 6 11 | 
             
                    return {} unless SUPPORTED_FORMATS.include?(content.ext.downcase)
         | 
| 7 12 |  | 
| 8 13 | 
             
                    data = `pdftk "#{content.path}" dump_data`
         | 
| 9 14 |  | 
| 10 | 
            -
                    page_count = data | 
| 11 | 
            -
                    page_numbers = data | 
| 12 | 
            -
                    page_dimensions = data | 
| 13 | 
            -
             | 
| 14 | 
            -
                     | 
| 15 | 
            -
                    page_rotations = data.scan(/PageMediaRotation: (\d+)/).flatten.map(&:to_f)
         | 
| 16 | 
            -
                    aspect_ratios = page_dimensions.inject([]) { |res, page| res << (page.first / page.last) }
         | 
| 15 | 
            +
                    page_count = extract_page_count(data)
         | 
| 16 | 
            +
                    page_numbers = extract_page_numbers(data)
         | 
| 17 | 
            +
                    page_dimensions = extract_page_dimensions(data)
         | 
| 18 | 
            +
                    page_rotations = extract_page_rotations(data)
         | 
| 19 | 
            +
                    aspect_ratios = calculate_aspect_ratios(page_dimensions)
         | 
| 17 20 |  | 
| 18 21 | 
             
                    {
         | 
| 19 | 
            -
                      'format' => content.ext.downcase,
         | 
| 20 22 | 
             
                      'aspect_ratios' => aspect_ratios,
         | 
| 23 | 
            +
                      'format' => content.ext.downcase,
         | 
| 21 24 | 
             
                      'page_count' => page_count,
         | 
| 22 25 | 
             
                      'page_dimensions' => page_dimensions,
         | 
| 23 26 | 
             
                      'page_numbers' => page_numbers,
         | 
| 24 | 
            -
                      'page_rotations' => page_rotations
         | 
| 27 | 
            +
                      'page_rotations' => page_rotations,
         | 
| 25 28 | 
             
                    }
         | 
| 26 29 | 
             
                  end
         | 
| 27 30 |  | 
| 28 31 | 
             
                  private
         | 
| 29 32 |  | 
| 30 | 
            -
                  def  | 
| 33 | 
            +
                  def extract_page_count(data)
         | 
| 34 | 
            +
                    data.scan(NUMBER_OF_PAGES_REGEX).flatten.first.to_i
         | 
| 35 | 
            +
                  end
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                  def extract_page_numbers(data)
         | 
| 38 | 
            +
                    data.scan(PAGE_MEDIA_NUMBER_REGEX).flatten.map(&:to_i)
         | 
| 39 | 
            +
                  end
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                  def extract_page_dimensions(data)
         | 
| 42 | 
            +
                    data.scan(PAGE_MEDIA_DIMENSIONS_REGEX).map do |width, height|
         | 
| 43 | 
            +
                      [pt_to_mm(width), pt_to_mm(height)]
         | 
| 44 | 
            +
                    end
         | 
| 45 | 
            +
                  end
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                  def pt_to_mm(length)
         | 
| 48 | 
            +
                    pt = length.gsub(",", "").to_f
         | 
| 31 49 | 
             
                    (pt / 72.0) * 25.4
         | 
| 32 50 | 
             
                  end
         | 
| 51 | 
            +
             | 
| 52 | 
            +
                  def extract_page_rotations(data)
         | 
| 53 | 
            +
                    data.scan(PAGE_MEDIA_ROTATIONS_REGEX).flatten.map(&:to_f)
         | 
| 54 | 
            +
                  end
         | 
| 55 | 
            +
             | 
| 56 | 
            +
                  def calculate_aspect_ratios(page_dimensions)
         | 
| 57 | 
            +
                    page_dimensions.map do |width, height|
         | 
| 58 | 
            +
                      width / height.to_f
         | 
| 59 | 
            +
                    end
         | 
| 60 | 
            +
                  end
         | 
| 33 61 | 
             
                end
         | 
| 34 62 | 
             
              end
         | 
| 35 63 | 
             
            end
         | 
    
        data/lib/dragonfly_pdf.rb
    CHANGED
    
    | @@ -8,7 +8,7 @@ module DragonflyPdf | |
| 8 8 | 
             
              class UnsupportedFormat < RuntimeError; end
         | 
| 9 9 |  | 
| 10 10 | 
             
              SUPPORTED_FORMATS = %w[pdf].freeze
         | 
| 11 | 
            -
              SUPPORTED_OUTPUT_FORMATS = %w[png pam pbm pkm pnm pdf  | 
| 11 | 
            +
              SUPPORTED_OUTPUT_FORMATS = %w[png pam pbm pkm pnm pdf svg].uniq.sort
         | 
| 12 12 |  | 
| 13 13 | 
             
              private
         | 
| 14 14 |  | 
    
        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: 2.2. | 
| 4 | 
            +
              version: 2.2.2
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Tomas Celizna
         | 
| 8 | 
            -
            autorequire: | 
| 8 | 
            +
            autorequire:
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2022-01-31 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: dragonfly
         | 
| @@ -143,16 +143,9 @@ executables: [] | |
| 143 143 | 
             
            extensions: []
         | 
| 144 144 | 
             
            extra_rdoc_files: []
         | 
| 145 145 | 
             
            files:
         | 
| 146 | 
            -
            - ".gitignore"
         | 
| 147 | 
            -
            - ".tool-versions"
         | 
| 148 | 
            -
            - ".travis.yml"
         | 
| 149 146 | 
             
            - CHANGELOG.md
         | 
| 150 | 
            -
            - Gemfile
         | 
| 151 | 
            -
            - Guardfile
         | 
| 152 | 
            -
            - LICENSE
         | 
| 153 147 | 
             
            - README.md
         | 
| 154 148 | 
             
            - Rakefile
         | 
| 155 | 
            -
            - dragonfly_pdf.gemspec
         | 
| 156 149 | 
             
            - lib/dragonfly_pdf.rb
         | 
| 157 150 | 
             
            - lib/dragonfly_pdf/analysers/pdf_properties.rb
         | 
| 158 151 | 
             
            - lib/dragonfly_pdf/plugin.rb
         | 
| @@ -165,27 +158,11 @@ files: | |
| 165 158 | 
             
            - lib/dragonfly_pdf/processors/stamp.rb
         | 
| 166 159 | 
             
            - lib/dragonfly_pdf/processors/subset_fonts.rb
         | 
| 167 160 | 
             
            - lib/dragonfly_pdf/version.rb
         | 
| 168 | 
            -
            - samples/sample_pages.pdf
         | 
| 169 | 
            -
            - samples/sample_pages_rotated.pdf
         | 
| 170 | 
            -
            - samples/sample_pages_with_bleed.pdf
         | 
| 171 | 
            -
            - samples/sample_pages_with_password.pdf
         | 
| 172 | 
            -
            - samples/sample_stamp.pdf
         | 
| 173 | 
            -
            - test/dragonfly_pdf/analysers/pdf_properties_test.rb
         | 
| 174 | 
            -
            - test/dragonfly_pdf/plugin_test.rb
         | 
| 175 | 
            -
            - test/dragonfly_pdf/processors/append_test.rb
         | 
| 176 | 
            -
            - test/dragonfly_pdf/processors/convert_test.rb
         | 
| 177 | 
            -
            - test/dragonfly_pdf/processors/page_test.rb
         | 
| 178 | 
            -
            - test/dragonfly_pdf/processors/page_thumb_test.rb
         | 
| 179 | 
            -
            - test/dragonfly_pdf/processors/remove_password_test.rb
         | 
| 180 | 
            -
            - test/dragonfly_pdf/processors/rotate_test.rb
         | 
| 181 | 
            -
            - test/dragonfly_pdf/processors/stamp_test.rb
         | 
| 182 | 
            -
            - test/dragonfly_pdf/processors/subset_fonts_test.rb
         | 
| 183 | 
            -
            - test/test_helper.rb
         | 
| 184 161 | 
             
            homepage: https://github.com/tomasc/dragonfly_pdf
         | 
| 185 162 | 
             
            licenses:
         | 
| 186 163 | 
             
            - MIT
         | 
| 187 164 | 
             
            metadata: {}
         | 
| 188 | 
            -
            post_install_message: | 
| 165 | 
            +
            post_install_message:
         | 
| 189 166 | 
             
            rdoc_options: []
         | 
| 190 167 | 
             
            require_paths:
         | 
| 191 168 | 
             
            - lib
         | 
| @@ -200,19 +177,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 200 177 | 
             
                - !ruby/object:Gem::Version
         | 
| 201 178 | 
             
                  version: '0'
         | 
| 202 179 | 
             
            requirements: []
         | 
| 203 | 
            -
            rubygems_version: 3. | 
| 204 | 
            -
            signing_key: | 
| 180 | 
            +
            rubygems_version: 3.1.6
         | 
| 181 | 
            +
            signing_key:
         | 
| 205 182 | 
             
            specification_version: 4
         | 
| 206 183 | 
             
            summary: Dragonfly PDF analysers and processors.
         | 
| 207 | 
            -
            test_files:
         | 
| 208 | 
            -
            - test/dragonfly_pdf/analysers/pdf_properties_test.rb
         | 
| 209 | 
            -
            - test/dragonfly_pdf/plugin_test.rb
         | 
| 210 | 
            -
            - test/dragonfly_pdf/processors/append_test.rb
         | 
| 211 | 
            -
            - test/dragonfly_pdf/processors/convert_test.rb
         | 
| 212 | 
            -
            - test/dragonfly_pdf/processors/page_test.rb
         | 
| 213 | 
            -
            - test/dragonfly_pdf/processors/page_thumb_test.rb
         | 
| 214 | 
            -
            - test/dragonfly_pdf/processors/remove_password_test.rb
         | 
| 215 | 
            -
            - test/dragonfly_pdf/processors/rotate_test.rb
         | 
| 216 | 
            -
            - test/dragonfly_pdf/processors/stamp_test.rb
         | 
| 217 | 
            -
            - test/dragonfly_pdf/processors/subset_fonts_test.rb
         | 
| 218 | 
            -
            - test/test_helper.rb
         | 
| 184 | 
            +
            test_files: []
         | 
    
        data/.gitignore
    DELETED
    
    | @@ -1,23 +0,0 @@ | |
| 1 | 
            -
            *.gem
         | 
| 2 | 
            -
            *.rbc
         | 
| 3 | 
            -
            .bundle
         | 
| 4 | 
            -
            .config
         | 
| 5 | 
            -
            .yardoc
         | 
| 6 | 
            -
            Gemfile.lock
         | 
| 7 | 
            -
            InstalledFiles
         | 
| 8 | 
            -
            _yardoc
         | 
| 9 | 
            -
            coverage
         | 
| 10 | 
            -
            doc/
         | 
| 11 | 
            -
            lib/bundler/man
         | 
| 12 | 
            -
            pkg
         | 
| 13 | 
            -
            rdoc
         | 
| 14 | 
            -
            spec/reports
         | 
| 15 | 
            -
            test/tmp
         | 
| 16 | 
            -
            test/version_tmp
         | 
| 17 | 
            -
            tmp
         | 
| 18 | 
            -
            *.bundle
         | 
| 19 | 
            -
            *.so
         | 
| 20 | 
            -
            *.o
         | 
| 21 | 
            -
            *.a
         | 
| 22 | 
            -
            mkmf.log
         | 
| 23 | 
            -
            dragonfly.log
         | 
    
        data/.tool-versions
    DELETED
    
    | @@ -1 +0,0 @@ | |
| 1 | 
            -
            ruby 2.6.3
         | 
    
        data/.travis.yml
    DELETED
    
    | @@ -1,28 +0,0 @@ | |
| 1 | 
            -
            language: ruby
         | 
| 2 | 
            -
            cache: bundler
         | 
| 3 | 
            -
            script: 'bundle exec rake'
         | 
| 4 | 
            -
            sudo: required
         | 
| 5 | 
            -
            dist: trusty
         | 
| 6 | 
            -
            rvm:
         | 
| 7 | 
            -
              - 2.2.5
         | 
| 8 | 
            -
             | 
| 9 | 
            -
            before_install:
         | 
| 10 | 
            -
              - gem update bundler
         | 
| 11 | 
            -
              - sudo add-apt-repository -y ppa:ubuntuhandbook1/apps
         | 
| 12 | 
            -
              - sudo apt-get update
         | 
| 13 | 
            -
              - sudo apt-get install -y pdftk
         | 
| 14 | 
            -
              - sudo apt-get install -y ghostscript
         | 
| 15 | 
            -
              - curl -OL https://mupdf.com/downloads/mupdf-1.13.0-source.tar.gz
         | 
| 16 | 
            -
              - tar zvxf mupdf-1.13.0-source.tar.gz && cd mupdf-1.13.0-source && sudo make HAVE_X11=no HAVE_GLUT=no prefix=/usr/local install
         | 
| 17 | 
            -
              - sudo apt-get install -y gobject-introspection libgirepository1.0-dev libglib2.0-dev libpoppler-glib-dev
         | 
| 18 | 
            -
              - curl -OL https://github.com/jcupitt/libvips/releases/download/v8.5.8/vips-8.5.8.tar.gz
         | 
| 19 | 
            -
              - tar zvxf vips-8.5.8.tar.gz && cd vips-8.5.8 && ./configure && sudo make && sudo make install
         | 
| 20 | 
            -
              - export GI_TYPELIB_PATH=/usr/local/lib/girepository-1.0/
         | 
| 21 | 
            -
              - sudo ldconfig
         | 
| 22 | 
            -
             | 
| 23 | 
            -
            notifications:
         | 
| 24 | 
            -
              email:
         | 
| 25 | 
            -
                recipients:
         | 
| 26 | 
            -
                  - tomas.celizna@gmail.com
         | 
| 27 | 
            -
                on_failure: change
         | 
| 28 | 
            -
                on_success: never
         | 
    
        data/Gemfile
    DELETED
    
    
    
        data/Guardfile
    DELETED
    
    
    
        data/LICENSE
    DELETED
    
    | @@ -1,21 +0,0 @@ | |
| 1 | 
            -
            The MIT License (MIT)
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            Copyright (c) 2014 Tomas Celizna
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            Permission is hereby granted, free of charge, to any person obtaining a copy
         | 
| 6 | 
            -
            of this software and associated documentation files (the "Software"), to deal
         | 
| 7 | 
            -
            in the Software without restriction, including without limitation the rights
         | 
| 8 | 
            -
            to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
         | 
| 9 | 
            -
            copies of the Software, and to permit persons to whom the Software is
         | 
| 10 | 
            -
            furnished to do so, subject to the following conditions:
         | 
| 11 | 
            -
             | 
| 12 | 
            -
            The above copyright notice and this permission notice shall be included in all
         | 
| 13 | 
            -
            copies or substantial portions of the Software.
         | 
| 14 | 
            -
             | 
| 15 | 
            -
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
         | 
| 16 | 
            -
            IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
         | 
| 17 | 
            -
            FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
         | 
| 18 | 
            -
            AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
         | 
| 19 | 
            -
            LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
         | 
| 20 | 
            -
            OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
         | 
| 21 | 
            -
            SOFTWARE.
         | 
    
        data/dragonfly_pdf.gemspec
    DELETED
    
    | @@ -1,31 +0,0 @@ | |
| 1 | 
            -
             | 
| 2 | 
            -
            lib = File.expand_path('lib', __dir__)
         | 
| 3 | 
            -
            $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
         | 
| 4 | 
            -
            require 'dragonfly_pdf/version'
         | 
| 5 | 
            -
             | 
| 6 | 
            -
            Gem::Specification.new do |spec|
         | 
| 7 | 
            -
              spec.name          = 'dragonfly_pdf'
         | 
| 8 | 
            -
              spec.version       = DragonflyPdf::VERSION
         | 
| 9 | 
            -
              spec.authors       = ['Tomas Celizna']
         | 
| 10 | 
            -
              spec.email         = ['tomas.celizna@gmail.com']
         | 
| 11 | 
            -
              spec.summary       = 'Dragonfly PDF analysers and processors.'
         | 
| 12 | 
            -
              spec.description   = 'Dragonfly PDF analysers and processors.'
         | 
| 13 | 
            -
              spec.homepage      = 'https://github.com/tomasc/dragonfly_pdf'
         | 
| 14 | 
            -
              spec.license       = 'MIT'
         | 
| 15 | 
            -
             | 
| 16 | 
            -
              spec.files         = `git ls-files -z`.split("\x0")
         | 
| 17 | 
            -
              spec.executables   = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
         | 
| 18 | 
            -
              spec.test_files    = spec.files.grep(%r{^(test|spec|features)/})
         | 
| 19 | 
            -
              spec.require_paths = ['lib']
         | 
| 20 | 
            -
             | 
| 21 | 
            -
              spec.add_dependency 'dragonfly', '~> 1.0'
         | 
| 22 | 
            -
              spec.add_dependency 'dragonfly_libvips', '~> 2.4.0'
         | 
| 23 | 
            -
             | 
| 24 | 
            -
              spec.add_development_dependency 'bundler', '~> 1.12'
         | 
| 25 | 
            -
              spec.add_development_dependency 'guard'
         | 
| 26 | 
            -
              spec.add_development_dependency 'guard-minitest'
         | 
| 27 | 
            -
              spec.add_development_dependency 'minitest', '~> 5.0'
         | 
| 28 | 
            -
              spec.add_development_dependency 'minitest-reporters'
         | 
| 29 | 
            -
              spec.add_development_dependency 'rake', '~> 10.0'
         | 
| 30 | 
            -
              spec.add_development_dependency 'pdf-reader'
         | 
| 31 | 
            -
            end
         | 
    
        data/samples/sample_pages.pdf
    DELETED
    
    | Binary file | 
| Binary file | 
| Binary file | 
| Binary file | 
    
        data/samples/sample_stamp.pdf
    DELETED
    
    | Binary file | 
| @@ -1,16 +0,0 @@ | |
| 1 | 
            -
            require 'test_helper'
         | 
| 2 | 
            -
             | 
| 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 | 
            -
              it { analyser.call(sample_pages).must_be_kind_of Hash }
         | 
| 11 | 
            -
              it { analyser.call(sample_pages)['page_numbers'].must_equal (1..10).to_a }
         | 
| 12 | 
            -
              it { analyser.call(sample_pages)['page_count'].must_equal 10 }
         | 
| 13 | 
            -
              it { analyser.call(sample_pages)['page_dimensions'].map { |p| p.map(&:round) }.must_equal [[210, 297]].cycle.take(10) }
         | 
| 14 | 
            -
              it { analyser.call(sample_pages)['aspect_ratios'].map { |i| i.round(2) }.must_equal [0.71].cycle.take(10) }
         | 
| 15 | 
            -
              it { 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] }
         | 
| 16 | 
            -
            end
         | 
| @@ -1,30 +0,0 @@ | |
| 1 | 
            -
            require 'test_helper'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            module DragonflyPdf
         | 
| 4 | 
            -
              describe Plugin do
         | 
| 5 | 
            -
                let(:app) { test_app.configure_with(:pdf) }
         | 
| 6 | 
            -
                let(:content) { app.fetch_file(SAMPLES_DIR.join('sample_pages.pdf')) }
         | 
| 7 | 
            -
             | 
| 8 | 
            -
                describe 'analysers' do
         | 
| 9 | 
            -
                  it { content.must_respond_to :pdf_properties }
         | 
| 10 | 
            -
                  it { content.pdf_properties.must_be_kind_of Hash }
         | 
| 11 | 
            -
                  it { content.must_respond_to :page_count }
         | 
| 12 | 
            -
                  it { content.must_respond_to :page_numbers }
         | 
| 13 | 
            -
                  it { content.must_respond_to :page_dimensions }
         | 
| 14 | 
            -
                  it { content.must_respond_to :aspect_ratios }
         | 
| 15 | 
            -
                  it { content.must_respond_to :page_rotations }
         | 
| 16 | 
            -
                end
         | 
| 17 | 
            -
             | 
| 18 | 
            -
                describe 'processors' do
         | 
| 19 | 
            -
                  it { content.must_respond_to :append }
         | 
| 20 | 
            -
                  it { content.must_respond_to :convert }
         | 
| 21 | 
            -
                  it { content.must_respond_to :encode }
         | 
| 22 | 
            -
                  it { content.must_respond_to :page }
         | 
| 23 | 
            -
                  it { content.must_respond_to :page_thumb }
         | 
| 24 | 
            -
                  it { content.must_respond_to :remove_password }
         | 
| 25 | 
            -
                  it { content.must_respond_to :rotate }
         | 
| 26 | 
            -
                  it { content.must_respond_to :stamp }
         | 
| 27 | 
            -
                  it { content.must_respond_to :subset_fonts }
         | 
| 28 | 
            -
                end
         | 
| 29 | 
            -
              end
         | 
| 30 | 
            -
            end
         | 
| @@ -1,16 +0,0 @@ | |
| 1 | 
            -
            require 'test_helper'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            describe DragonflyPdf::Processors::Append do
         | 
| 4 | 
            -
              let(:app) { test_app.configure_with(:pdf) }
         | 
| 5 | 
            -
              let(:processor) { DragonflyPdf::Processors::Append.new }
         | 
| 6 | 
            -
              let(:content_1) { Dragonfly::Content.new(app, SAMPLES_DIR.join('sample_pages.pdf')) }
         | 
| 7 | 
            -
              let(:content_2) { Dragonfly::Content.new(app, SAMPLES_DIR.join('sample_pages_with_bleed.pdf')) }
         | 
| 8 | 
            -
             | 
| 9 | 
            -
              before { processor.call(content_1, [content_2]) }
         | 
| 10 | 
            -
             | 
| 11 | 
            -
              it { content_1.analyse(:page_count).must_equal 11 }
         | 
| 12 | 
            -
             | 
| 13 | 
            -
              describe 'tempfile has extension' do
         | 
| 14 | 
            -
                it { content_1.tempfile.path.must_match /\.pdf\z/ }
         | 
| 15 | 
            -
              end
         | 
| 16 | 
            -
            end
         | 
| @@ -1,25 +0,0 @@ | |
| 1 | 
            -
            require 'test_helper'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            describe DragonflyPdf::Processors::Convert do
         | 
| 4 | 
            -
              let(:app) { test_app.configure_with(:pdf) }
         | 
| 5 | 
            -
              let(:processor) { DragonflyPdf::Processors::Convert.new }
         | 
| 6 | 
            -
              let(:content) { app.fetch_file SAMPLES_DIR.join('sample_pages.pdf') }
         | 
| 7 | 
            -
             | 
| 8 | 
            -
              describe 'SUPPORTED_OUTPUT_FORMATS' do
         | 
| 9 | 
            -
                DragonflyPdf::SUPPORTED_OUTPUT_FORMATS.each do |format|
         | 
| 10 | 
            -
                  it(format) do
         | 
| 11 | 
            -
                    result = content.convert(1, '600x', format: format)
         | 
| 12 | 
            -
                    result.ext.must_equal format
         | 
| 13 | 
            -
                    result.mime_type.must_equal Rack::Mime.mime_type(".#{format}")
         | 
| 14 | 
            -
                    result.size.must_be :>, 0
         | 
| 15 | 
            -
                    result.tempfile.path.must_match /\.#{format}\z/
         | 
| 16 | 
            -
                  end
         | 
| 17 | 
            -
                end
         | 
| 18 | 
            -
              end
         | 
| 19 | 
            -
             | 
| 20 | 
            -
              describe 'url' do
         | 
| 21 | 
            -
                let (:url_attributes) { OpenStruct.new }
         | 
| 22 | 
            -
                before { processor.update_url(url_attributes, 1) }
         | 
| 23 | 
            -
                it { url_attributes.ext.must_equal 'png' }
         | 
| 24 | 
            -
              end
         | 
| 25 | 
            -
            end
         | 
| @@ -1,19 +0,0 @@ | |
| 1 | 
            -
            require 'test_helper'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            describe DragonflyPdf::Processors::Page do
         | 
| 4 | 
            -
              let(:app) { test_app.configure_with(:pdf) }
         | 
| 5 | 
            -
              let(:content) { Dragonfly::Content.new(app, SAMPLES_DIR.join('sample_pages.pdf')) }
         | 
| 6 | 
            -
              let(:processor) { DragonflyPdf::Processors::Page.new }
         | 
| 7 | 
            -
             | 
| 8 | 
            -
              it { proc { processor.call(content, 0) }.must_raise DragonflyPdf::PageNotFound }
         | 
| 9 | 
            -
              it { proc { processor.call(content, 11) }.must_raise DragonflyPdf::PageNotFound }
         | 
| 10 | 
            -
             | 
| 11 | 
            -
              describe 'single pages' do
         | 
| 12 | 
            -
                before { processor.call(content, 1) }
         | 
| 13 | 
            -
                it { content.analyse(:page_count).must_equal 1 }
         | 
| 14 | 
            -
              end
         | 
| 15 | 
            -
             | 
| 16 | 
            -
              describe 'tempfile has extension' do
         | 
| 17 | 
            -
                it { processor.call(content, 1).tempfile.path.must_match /\.pdf\z/ }
         | 
| 18 | 
            -
              end
         | 
| 19 | 
            -
            end
         | 
| @@ -1,27 +0,0 @@ | |
| 1 | 
            -
            require 'test_helper'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            describe DragonflyPdf::Processors::PageThumb do
         | 
| 4 | 
            -
              let(:app) { test_app.configure_with(:pdf) }
         | 
| 5 | 
            -
              let(:content) { Dragonfly::Content.new(app, SAMPLES_DIR.join('sample_pages.pdf')) }
         | 
| 6 | 
            -
              let(:processor) { DragonflyPdf::Processors::PageThumb.new }
         | 
| 7 | 
            -
             | 
| 8 | 
            -
              describe 'formats' do
         | 
| 9 | 
            -
                let (:url_attributes) { OpenStruct.new }
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                describe 'default' do
         | 
| 12 | 
            -
                  before do
         | 
| 13 | 
            -
                    processor.call(content, 1, '600x')
         | 
| 14 | 
            -
                    processor.update_url(url_attributes, 1)
         | 
| 15 | 
            -
                  end
         | 
| 16 | 
            -
             | 
| 17 | 
            -
                  it { content.ext.must_equal 'jpg' }
         | 
| 18 | 
            -
                  it { content.meta['format'].must_equal 'jpg' }
         | 
| 19 | 
            -
                  it { url_attributes.ext.must_equal 'jpg' }
         | 
| 20 | 
            -
                end
         | 
| 21 | 
            -
              end
         | 
| 22 | 
            -
             | 
| 23 | 
            -
              describe 'tempfile has extension' do
         | 
| 24 | 
            -
                before { processor.call(content, 1, '600x') }
         | 
| 25 | 
            -
                it { content.tempfile.path.must_match /\.jpg\z/ }
         | 
| 26 | 
            -
              end
         | 
| 27 | 
            -
            end
         | 
| @@ -1,15 +0,0 @@ | |
| 1 | 
            -
            require 'test_helper'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            describe DragonflyPdf::Processors::RemovePassword do
         | 
| 4 | 
            -
              let(:app) { test_app.configure_with(:pdf) }
         | 
| 5 | 
            -
              let(:content) { Dragonfly::Content.new(app, SAMPLES_DIR.join('sample_pages_with_password.pdf')) }
         | 
| 6 | 
            -
              let(:processor) { DragonflyPdf::Processors::RemovePassword.new }
         | 
| 7 | 
            -
             | 
| 8 | 
            -
              before { processor.call(content, 1) }
         | 
| 9 | 
            -
             | 
| 10 | 
            -
              it { `pdftk #{content.path} dump_data`.wont_include 'OWNER PASSWORD REQUIRED' }
         | 
| 11 | 
            -
             | 
| 12 | 
            -
              describe 'tempfile has extension' do
         | 
| 13 | 
            -
                it { content.tempfile.path.must_match /\.pdf\z/ }
         | 
| 14 | 
            -
              end
         | 
| 15 | 
            -
            end
         | 
| @@ -1,22 +0,0 @@ | |
| 1 | 
            -
            require 'test_helper'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            describe DragonflyPdf::Processors::Rotate do
         | 
| 4 | 
            -
              let(:app) { test_app.configure_with(:pdf) }
         | 
| 5 | 
            -
              let(:content) { Dragonfly::Content.new(app, SAMPLES_DIR.join('sample_pages.pdf')) }
         | 
| 6 | 
            -
              let(:processor) { DragonflyPdf::Processors::Rotate.new }
         | 
| 7 | 
            -
             | 
| 8 | 
            -
              describe 'String|Symbol' do
         | 
| 9 | 
            -
                before { processor.call(content, :left) }
         | 
| 10 | 
            -
                it { content.analyse(:page_rotations).must_equal [270, 270, 270, 270, 270, 270, 270, 270, 270, 270] }
         | 
| 11 | 
            -
              end
         | 
| 12 | 
            -
             | 
| 13 | 
            -
              describe 'arg is Hash' do
         | 
| 14 | 
            -
                before { processor.call(content, 1 => :left, 3 => :right) }
         | 
| 15 | 
            -
                it { content.analyse(:page_rotations).must_equal [270, 0.0, 90, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] }
         | 
| 16 | 
            -
              end
         | 
| 17 | 
            -
             | 
| 18 | 
            -
              describe 'tempfile has extension' do
         | 
| 19 | 
            -
                before { processor.call(content, :left) }
         | 
| 20 | 
            -
                it { content.tempfile.path.must_match /\.pdf\z/ }
         | 
| 21 | 
            -
              end
         | 
| 22 | 
            -
            end
         | 
| @@ -1,18 +0,0 @@ | |
| 1 | 
            -
            require 'pdf-reader'
         | 
| 2 | 
            -
            require 'test_helper'
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            describe DragonflyPdf::Processors::Stamp do
         | 
| 5 | 
            -
              let(:app) { test_app.configure_with(:pdf) }
         | 
| 6 | 
            -
              let(:content) { Dragonfly::Content.new(app, SAMPLES_DIR.join('sample_pages.pdf')) }
         | 
| 7 | 
            -
              let(:content_stamp) { Dragonfly::Content.new(app, SAMPLES_DIR.join('sample_stamp.pdf')) }
         | 
| 8 | 
            -
              let(:processor) { DragonflyPdf::Processors::Stamp.new }
         | 
| 9 | 
            -
             | 
| 10 | 
            -
              before { processor.call(content, content_stamp) }
         | 
| 11 | 
            -
             | 
| 12 | 
            -
              it { content.analyse(:page_count).must_equal 10 }
         | 
| 13 | 
            -
              it { PDF::Reader.new(content.path).pages.map(&:text).must_equal %w(STAMP).cycle(10).to_a }
         | 
| 14 | 
            -
             | 
| 15 | 
            -
              describe 'tempfile has extension' do
         | 
| 16 | 
            -
                it { content.tempfile.path.must_match /\.pdf\z/ }
         | 
| 17 | 
            -
              end
         | 
| 18 | 
            -
            end
         | 
| @@ -1,17 +0,0 @@ | |
| 1 | 
            -
            require 'test_helper'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            describe DragonflyPdf::Processors::SubsetFonts do
         | 
| 4 | 
            -
              let(:app) { test_app.configure_with(:pdf) }
         | 
| 5 | 
            -
              let(:content) { Dragonfly::Content.new(app, SAMPLES_DIR.join('sample_pages.pdf')) }
         | 
| 6 | 
            -
              let(:processor) { DragonflyPdf::Processors::SubsetFonts.new }
         | 
| 7 | 
            -
             | 
| 8 | 
            -
              it 'returns PDF by default' do
         | 
| 9 | 
            -
                skip 'not sure how to test this'
         | 
| 10 | 
            -
                processor.call(content, 1)
         | 
| 11 | 
            -
              end
         | 
| 12 | 
            -
             | 
| 13 | 
            -
              describe 'tempfile has extension' do
         | 
| 14 | 
            -
                before { processor.call(content, 1) }
         | 
| 15 | 
            -
                it { content.tempfile.path.must_match /\.pdf\z/ }
         | 
| 16 | 
            -
              end
         | 
| 17 | 
            -
            end
         | 
    
        data/test/test_helper.rb
    DELETED
    
    | @@ -1,20 +0,0 @@ | |
| 1 | 
            -
            require 'bundler/setup'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            require 'minitest'
         | 
| 4 | 
            -
            require 'minitest/autorun'
         | 
| 5 | 
            -
            require 'minitest/reporters'
         | 
| 6 | 
            -
            require 'minitest/spec'
         | 
| 7 | 
            -
             | 
| 8 | 
            -
            require 'dragonfly'
         | 
| 9 | 
            -
            require 'dragonfly_pdf'
         | 
| 10 | 
            -
             | 
| 11 | 
            -
            SAMPLES_DIR = Pathname.new(File.expand_path('../../samples', __FILE__))
         | 
| 12 | 
            -
             | 
| 13 | 
            -
            Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new
         | 
| 14 | 
            -
             | 
| 15 | 
            -
            def test_app(name = nil)
         | 
| 16 | 
            -
              app = Dragonfly::App.instance(name).tap do |app|
         | 
| 17 | 
            -
                app.datastore = Dragonfly::MemoryDataStore.new
         | 
| 18 | 
            -
                app.secret = 'test secret'
         | 
| 19 | 
            -
              end
         | 
| 20 | 
            -
            end
         |