@@ -27,18 +27,21 @@ def convert(pdf, size, format, previous=nil)
2727 tempdir = Dir . mktmpdir
2828 basename = File . basename ( pdf , File . extname ( pdf ) )
2929 directory = directory_for ( size )
30+ pages = @pages || '1-' + Docsplit . extract_length ( pdf ) . to_s
3031 FileUtils . mkdir_p ( directory ) unless File . exists? ( directory )
31- out_file = File . join ( directory , "#{ basename } _%05d.#{ format } " )
3232 common = "#{ MEMORY_ARGS } #{ DENSITY_ARG } #{ resize_arg ( size ) } #{ quality_arg ( format ) } "
3333 if previous
3434 FileUtils . cp ( Dir [ directory_for ( previous ) + '/*' ] , directory )
35- cmd = "MAGICK_TMPDIR=#{ tempdir } OMP_NUM_THREADS=2 gm mogrify #{ common } -unsharp 0x0.5+0.75 \" #{ directory } /*.#{ format } \" 2>&1"
35+ result = `MAGICK_TMPDIR=#{ tempdir } OMP_NUM_THREADS=2 gm mogrify #{ common } -unsharp 0x0.5+0.75 \" #{ directory } /*.#{ format } \" 2>&1` . chomp
36+ raise ExtractionFailed , result if $? != 0
3637 else
37- cmd = "MAGICK_TMPDIR=#{ tempdir } OMP_NUM_THREADS=2 gm convert +adjoin #{ common } \" #{ pdf } #{ pages_arg } \" \" #{ out_file } \" 2>&1"
38+ page_list ( pages ) . each do |page |
39+ out_file = File . join ( directory , "#{ basename } _#{ page } .#{ format } " )
40+ cmd = "MAGICK_TMPDIR=#{ tempdir } OMP_NUM_THREADS=2 gm convert +adjoin #{ common } \" #{ pdf } [#{ page - 1 } ]\" \" #{ out_file } \" 2>&1" . chomp
41+ result = `#{ cmd } ` . chomp
42+ raise ExtractionFailed , result if $? != 0
43+ end
3844 end
39- result = `#{ cmd } ` . chomp
40- raise ExtractionFailed , result if $? != 0
41- renumber_images ( out_file , format )
4245 FileUtils . remove_entry_secure tempdir if File . exists? ( tempdir )
4346 end
4447
@@ -76,16 +79,9 @@ def quality_arg(format)
7679 end
7780 end
7881
79- # Generate the requested page index into the document.
80- def pages_arg
81- return '' if @pages . nil?
82- pages = @pages . gsub ( /\d +/ ) { |digits | ( digits . to_i - 1 ) . to_s }
83- "[#{ pages } ]"
84- end
85-
8682 # Generate the expanded list of requested page numbers.
87- def page_list
88- @ pages. split ( ',' ) . map { |range |
83+ def page_list ( pages )
84+ pages . split ( ',' ) . map { |range |
8985 if range . include? ( '-' )
9086 range = range . split ( '-' )
9187 Range . new ( range . first . to_i , range . last . to_i ) . to_a . map { |n | n . to_i }
@@ -95,22 +91,6 @@ def page_list
9591 } . flatten . sort
9692 end
9793
98- # When GraphicsMagick is through, it will have generated a number of
99- # incrementing page images, starting at 0. Renumber them with their correct
100- # page numbers.
101- def renumber_images ( template , format )
102- suffixer = /_0+(\d +)\. #{ format } \Z /
103- images = Dir [ template . sub ( '%05d' , '0*' ) ] . map do |path |
104- index = path [ suffixer , 1 ] . to_i
105- { :path => path , :index => index , :page_number => index + 1 }
106- end
107- numbers = @pages ? page_list . reverse : nil
108- images . sort_by { |i | -i [ :page_number ] } . each_with_index do |image , i |
109- number = numbers ? numbers [ i ] : image [ :page_number ]
110- FileUtils . mv ( image [ :path ] , image [ :path ] . sub ( suffixer , "_#{ number } .#{ format } " ) )
111- end
112- end
113-
11494 end
11595
11696end
0 commit comments