pdf_paradise 0.3.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +933 -0
  3. data/bin/automatic_pdf_title +7 -0
  4. data/bin/burst_this_pdf_file +7 -0
  5. data/bin/combine_these_pdf_pages +7 -0
  6. data/bin/compress_via_hexapdf +7 -0
  7. data/bin/convert_markdown_to_pdf +7 -0
  8. data/bin/convert_pdf_to_text +7 -0
  9. data/bin/delete_first_page_of_this_pdf_file +7 -0
  10. data/bin/djvu_to_pdf +7 -0
  11. data/bin/merge_then_open +7 -0
  12. data/bin/n_pages +10 -0
  13. data/bin/open_main_pdf +7 -0
  14. data/bin/pdf_paradise +9 -0
  15. data/bin/rotate_pdf +7 -0
  16. data/bin/set_main_book +7 -0
  17. data/bin/set_title_of_this_pdf_file +15 -0
  18. data/doc/README.gen +871 -0
  19. data/doc/todo/todo.md +13 -0
  20. data/images/Logo_for_the_pdf_paradise_project.avif +0 -0
  21. data/lib/pdf_paradise/base/base.rb +344 -0
  22. data/lib/pdf_paradise/base/colours.rb +67 -0
  23. data/lib/pdf_paradise/colours/colours.rb +27 -0
  24. data/lib/pdf_paradise/commandline/commandline.rb +109 -0
  25. data/lib/pdf_paradise/commandline/help.rb +77 -0
  26. data/lib/pdf_paradise/commandline/menu.rb +173 -0
  27. data/lib/pdf_paradise/compress/compress_this_pdf_file.rb +108 -0
  28. data/lib/pdf_paradise/compress/compress_via_hexapdf.rb +27 -0
  29. data/lib/pdf_paradise/compress/compress_via_qpdf.rb +32 -0
  30. data/lib/pdf_paradise/constants/constants.rb +76 -0
  31. data/lib/pdf_paradise/convert_text_to_pdf.rb +94 -0
  32. data/lib/pdf_paradise/css/project.css +17 -0
  33. data/lib/pdf_paradise/fpdf/README.md +2 -0
  34. data/lib/pdf_paradise/fpdf/bookmark.rb +129 -0
  35. data/lib/pdf_paradise/fpdf/chinese.rb +454 -0
  36. data/lib/pdf_paradise/fpdf/fpdf.rb +1902 -0
  37. data/lib/pdf_paradise/fpdf/fpdf_eps.rb +138 -0
  38. data/lib/pdf_paradise/fpdf/makefont.rb +1794 -0
  39. data/lib/pdf_paradise/gui/README.md +6 -0
  40. data/lib/pdf_paradise/gui/fox/split_pdf_file.rb +77 -0
  41. data/lib/pdf_paradise/gui/gtk2/pdf_viewer/pdf_viewer.rb +34 -0
  42. data/lib/pdf_paradise/gui/gtk2/split_pdf_file/split_pdf_file.rb +34 -0
  43. data/lib/pdf_paradise/gui/gtk2/statistics_widget/statistics_widget.rb +34 -0
  44. data/lib/pdf_paradise/gui/gtk3/controller/controller.rb +214 -0
  45. data/lib/pdf_paradise/gui/gtk3/pdf_viewer/pdf_viewer.rb +34 -0
  46. data/lib/pdf_paradise/gui/gtk3/split_pdf_file/split_pdf_file.rb +34 -0
  47. data/lib/pdf_paradise/gui/jruby/delete_the_first_or_the_last_page_of_this_pdf_file/delete_the_first_or_the_last_page_of_this_pdf_file.rb +167 -0
  48. data/lib/pdf_paradise/gui/jruby/remove_the_first_page_of_this_pdf_file/remove_the_first_page_of_this_pdf_file.rb +103 -0
  49. data/lib/pdf_paradise/gui/libui/extract_all_images_from_this_pdf_file/extract_all_images_from_this_pdf_file.rb +223 -0
  50. data/lib/pdf_paradise/gui/libui/remove_the_first_page_of_this_pdf_file/remove_the_first_page_of_this_pdf_file.rb +267 -0
  51. data/lib/pdf_paradise/gui/libui/rotate_pdf_file/rotate_pdf_file.rb +219 -0
  52. data/lib/pdf_paradise/gui/libui/statistics_widget/statistics_widget.rb +233 -0
  53. data/lib/pdf_paradise/gui/shared_code/pdf_viewer/pdf_viewer.css +5 -0
  54. data/lib/pdf_paradise/gui/shared_code/pdf_viewer/pdf_viewer_module.rb +287 -0
  55. data/lib/pdf_paradise/gui/shared_code/remove_the_first_page_of_this_pdf_file_module/remove_the_first_page_of_this_pdf_file_module.rb +31 -0
  56. data/lib/pdf_paradise/gui/shared_code/split_pdf_file/split_pdf_file_module.rb +295 -0
  57. data/lib/pdf_paradise/gui/universal_widgets/convert_pdf_to_text/convert_pdf_to_text.rb +366 -0
  58. data/lib/pdf_paradise/gui/universal_widgets/delete_the_first_or_the_last_page_of_this_pdf_file/delete_the_first_or_the_last_page_of_this_pdf_file.rb +776 -0
  59. data/lib/pdf_paradise/gui/universal_widgets/statistics_widget/statistics_widget.rb +407 -0
  60. data/lib/pdf_paradise/gui/universal_widgets/to_pdf/to_pdf.rb +351 -0
  61. data/lib/pdf_paradise/hexapdf/001_rainbow_pattern_example.rb +0 -0
  62. data/lib/pdf_paradise/hexapdf/hexapdf.rb +123 -0
  63. data/lib/pdf_paradise/images/PDF_PARADISE_LOGO.png +0 -0
  64. data/lib/pdf_paradise/main_pdf/main_pdf.rb +474 -0
  65. data/lib/pdf_paradise/merge_pdf/menu.rb +63 -0
  66. data/lib/pdf_paradise/merge_pdf/merge_pdf.rb +307 -0
  67. data/lib/pdf_paradise/merge_pdf_namespace.rb +9 -0
  68. data/lib/pdf_paradise/merge_then_open/merge_then_open.rb +105 -0
  69. data/lib/pdf_paradise/prawn_addons/README.md +2 -0
  70. data/lib/pdf_paradise/prawn_addons/prawn_addons.rb +17 -0
  71. data/lib/pdf_paradise/project/project.rb +22 -0
  72. data/lib/pdf_paradise/remove_pdf_password.rb +391 -0
  73. data/lib/pdf_paradise/requires/batch_require_toplevel_files.rb +22 -0
  74. data/lib/pdf_paradise/requires/colours.rb +11 -0
  75. data/lib/pdf_paradise/requires/colours_and_esystem_and_save_file_and_fileutils_and_opn.rb +13 -0
  76. data/lib/pdf_paradise/requires/esystem_and_colours.rb +11 -0
  77. data/lib/pdf_paradise/requires/esystem_and_opn_and_colours.rb +10 -0
  78. data/lib/pdf_paradise/requires/require_the_whole_project.rb +30 -0
  79. data/lib/pdf_paradise/requires/require_utility_scripts.rb +9 -0
  80. data/lib/pdf_paradise/set_main_book.rb +156 -0
  81. data/lib/pdf_paradise/set_pdf_title.rb +220 -0
  82. data/lib/pdf_paradise/sinatra/embeddable_interface.rb +389 -0
  83. data/lib/pdf_paradise/toplevel_methods/convert_epub_to_pdf.rb +27 -0
  84. data/lib/pdf_paradise/toplevel_methods/convert_markdown_to_pdf.rb +45 -0
  85. data/lib/pdf_paradise/toplevel_methods/convert_ppt_to_pdf.rb +35 -0
  86. data/lib/pdf_paradise/toplevel_methods/e.rb +16 -0
  87. data/lib/pdf_paradise/toplevel_methods/esystem.rb +20 -0
  88. data/lib/pdf_paradise/toplevel_methods/misc.rb +228 -0
  89. data/lib/pdf_paradise/toplevel_methods/number_pages.rb +38 -0
  90. data/lib/pdf_paradise/toplevel_methods/opened_pdf_files.rb +221 -0
  91. data/lib/pdf_paradise/toplevel_methods/query_pdf_title.rb +201 -0
  92. data/lib/pdf_paradise/toplevel_methods/reduce_size_of_this_pdf_file.rb +46 -0
  93. data/lib/pdf_paradise/toplevel_methods/roebe.rb +17 -0
  94. data/lib/pdf_paradise/toplevel_methods/to_pdf.rb +12 -0
  95. data/lib/pdf_paradise/utility_scripts/README.md +3 -0
  96. data/lib/pdf_paradise/utility_scripts/automatic_pdf_title.rb +104 -0
  97. data/lib/pdf_paradise/utility_scripts/check_syntax_of_pdf_files.rb +106 -0
  98. data/lib/pdf_paradise/utility_scripts/combine_these_pdf_pages.rb +118 -0
  99. data/lib/pdf_paradise/utility_scripts/convert_pdf_to_text.rb +179 -0
  100. data/lib/pdf_paradise/utility_scripts/delete_last_page_of_this_pdf_file.rb +180 -0
  101. data/lib/pdf_paradise/utility_scripts/delete_the_first_page_of_this_pdf_file/delete_the_first_page_of_this_pdf_file.rb +429 -0
  102. data/lib/pdf_paradise/utility_scripts/delete_this_page_of_this_pdf_file.rb +356 -0
  103. data/lib/pdf_paradise/utility_scripts/djvu_to_pdf.rb +87 -0
  104. data/lib/pdf_paradise/utility_scripts/extract_all_images_from_this_pdf_file.rb +129 -0
  105. data/lib/pdf_paradise/utility_scripts/extract_pdf_page.rb +283 -0
  106. data/lib/pdf_paradise/utility_scripts/pdf_file_n_total_pages.rb +348 -0
  107. data/lib/pdf_paradise/utility_scripts/pdf_optimizer.rb +111 -0
  108. data/lib/pdf_paradise/utility_scripts/pdf_statistics.rb +148 -0
  109. data/lib/pdf_paradise/utility_scripts/pdf_to_html.rb +75 -0
  110. data/lib/pdf_paradise/utility_scripts/remove_images.rb +110 -0
  111. data/lib/pdf_paradise/utility_scripts/rotate_pdf_file.rb +303 -0
  112. data/lib/pdf_paradise/utility_scripts/split_pdf.rb +364 -0
  113. data/lib/pdf_paradise/utility_scripts/to_pdf.rb +130 -0
  114. data/lib/pdf_paradise/utility_scripts/to_qdf.rb +66 -0
  115. data/lib/pdf_paradise/version/version.rb +19 -0
  116. data/lib/pdf_paradise/www/README.md +2 -0
  117. data/lib/pdf_paradise/www/sinatra/app.rb +304 -0
  118. data/lib/pdf_paradise/yaml/working_on_these_pdf_files.yml +4 -0
  119. data/lib/pdf_paradise.rb +5 -0
  120. data/pdf_paradise.gemspec +61 -0
  121. data/test/fpdf/001_minimal_example.rb +12 -0
  122. data/test/fpdf/002.pdf +0 -0
  123. data/test/fpdf/002_header_and_footer_example.rb +64 -0
  124. data/test/fpdf/003.pdf +98 -0
  125. data/test/fpdf/003_justified_paragraphs.rb +96 -0
  126. data/test/fpdf/file1.md +3 -0
  127. data/test/fpdf/file2.md +3 -0
  128. data/test/fpdf/test.pdf +0 -0
  129. data/test/testing_pdf_paradise.rb +12 -0
  130. metadata +239 -0
@@ -0,0 +1,307 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # === PdfParadise::MergePdf
6
+ #
7
+ # This class will merge together some .pdf files.
8
+ #
9
+ # Usage example:
10
+ #
11
+ # PdfParadise::MergePdf.new(ARGV)
12
+ #
13
+ # =========================================================================== #
14
+ # require 'pdf_paradise/merge_pdf/merge_pdf.rb'
15
+ # =========================================================================== #
16
+ require 'pdf_paradise/base/base.rb'
17
+
18
+ module PdfParadise
19
+
20
+ class MergePdf < Base # === PdfParadise::MergePdf
21
+
22
+ require 'pdf_paradise/merge_pdf/menu.rb'
23
+
24
+ # ========================================================================= #
25
+ # === THIS_FILE_HERE
26
+ # ========================================================================= #
27
+ THIS_FILE_HERE =
28
+ '/home/x/programming/ruby/src/pdf_paradise/lib/pdf_paradise/merge_pdf/merge_pdf.rb'
29
+
30
+ # ========================================================================= #
31
+ # === STORE_WHERE_WE_MERGED_FILES
32
+ # ========================================================================= #
33
+ STORE_WHERE_WE_MERGED_FILES =
34
+ '/home/Temp/merged_these_pdf_files.md'
35
+
36
+ # ========================================================================= #
37
+ # === initialize
38
+ # ========================================================================= #
39
+ def initialize(
40
+ i = nil,
41
+ run_already = true
42
+ )
43
+ reset
44
+ set_commandline_arguments(
45
+ return_hyphen_arguments(i)
46
+ )
47
+ case i
48
+ # ======================================================================= #
49
+ # === :dont_run_yet
50
+ # ======================================================================= #
51
+ when :dont_run_yet
52
+ run_already = false
53
+ else
54
+ set_array_pdf_files(i)
55
+ end
56
+ run if run_already
57
+ end
58
+
59
+ # ========================================================================= #
60
+ # === reset (reset tag)
61
+ # ========================================================================= #
62
+ def reset
63
+ infer_the_namespace
64
+ # ======================================================================= #
65
+ # === @array_pdf_files
66
+ # ======================================================================= #
67
+ @array_pdf_files = []
68
+ # ======================================================================= #
69
+ # === @use_this_program_for_merging_the_pdf_files
70
+ #
71
+ # Currently we can either use :ghostscript (gs) or :hexapdf. The
72
+ # latter is a pure ruby-gem.
73
+ # ======================================================================= #
74
+ @use_this_program_for_merging_the_pdf_files = :hexapdf # :ghostscript
75
+ set_output_filename
76
+ end
77
+
78
+ # ========================================================================= #
79
+ # === show_help (help tag)
80
+ # ========================================================================= #
81
+ def show_help
82
+ e
83
+ e 'To remove the merged files, do this:'
84
+ e
85
+ e ' mergepdf --remove'
86
+ e
87
+ e 'To use hexapdf:'
88
+ e
89
+ e ' mergepdf --use-hexapdf'
90
+ e
91
+ e 'To use ghostscript:'
92
+ e
93
+ e ' mergepdf --use-ghostscript'
94
+ e
95
+ end
96
+
97
+ # ========================================================================= #
98
+ # === remove_merged_files (remove tag)
99
+ # ========================================================================= #
100
+ def remove_merged_files
101
+ _ = where_are_the_merged_files?
102
+ opnn; e 'We will now remove the merged files, by reading '\
103
+ 'in from `'+sfile(_)+'`.'
104
+ # ======================================================================= #
105
+ # Read in that save-file next. As of Feb 2015, the format is
106
+ # one-file-per-line. We also get rid of '"' characters.
107
+ # ======================================================================= #
108
+ _ = File.readlines(_).map {|entry|
109
+ entry.chomp.delete('"')
110
+ } # .split(' ')
111
+ _.each {|file| delete(file) }
112
+ end
113
+
114
+ # ========================================================================= #
115
+ # === open_this_file_here
116
+ # ========================================================================= #
117
+ def open_this_file_here
118
+ _ = 'bluefish '+THIS_FILE_HERE
119
+ esystem _
120
+ end
121
+
122
+ # ========================================================================= #
123
+ # === do_conversion
124
+ #
125
+ # This method will do the actual conversion.
126
+ # ========================================================================= #
127
+ def do_conversion
128
+ these_files = @array_pdf_files.join(N)
129
+ # ======================================================================= #
130
+ # Next, we store this in the save-file.
131
+ # ======================================================================= #
132
+ write_what_into(these_files, where_are_the_merged_files?)
133
+ case @use_this_program_for_merging_the_pdf_files
134
+ # ======================================================================= #
135
+ # === :hexapdf
136
+ # ======================================================================= #
137
+ when :hexapdf
138
+ _ = 'hexapdf merge --force '.dup
139
+ _ << these_files.tr(N,' ')
140
+ _ << " #{@output_filename}"
141
+ # ======================================================================= #
142
+ # === :ghostscript
143
+ #
144
+ # To use this via the commandline, try:
145
+ #
146
+ # mergepdf one.pdf two.pdf --use-ghostscript
147
+ #
148
+ # ======================================================================= #
149
+ when :ghostscript,
150
+ :default
151
+ _ = 'gs -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE="'+
152
+ @output_filename+
153
+ '" -dBATCH '
154
+ _ << these_files.tr(N,' ')
155
+ end
156
+ e
157
+ cliner
158
+ e "#{::Colours.rev}We will run this command next for "\
159
+ "#{@array_pdf_files.size.to_s} .pdf files:"
160
+ e
161
+ efancy " #{_}" # This is the command we will run.
162
+ e
163
+ system _
164
+ cliner
165
+ end
166
+
167
+ # ========================================================================= #
168
+ # === where_are_the_merged_files?
169
+ # ========================================================================= #
170
+ def where_are_the_merged_files?
171
+ STORE_WHERE_WE_MERGED_FILES
172
+ end
173
+
174
+ # ========================================================================= #
175
+ # === delete
176
+ # ========================================================================= #
177
+ def delete(i)
178
+ unless i == '/'
179
+ efancy(" - #{i}") # Add a slight padding to the output.
180
+ File.delete(i) if File.exist? i # Safeguard.
181
+ end
182
+ end
183
+
184
+ # ========================================================================= #
185
+ # === pad_this
186
+ # ========================================================================= #
187
+ def pad_this(i)
188
+ return '"'+i+'"'
189
+ end
190
+
191
+ # ========================================================================= #
192
+ # === set_array_pdf_files
193
+ # ========================================================================= #
194
+ def set_array_pdf_files(i = '')
195
+ if i and i.is_a?(String) and i.include?(' ')
196
+ # ===================================================================== #
197
+ # Do automatic splitting in this case.
198
+ # ===================================================================== #
199
+ i = i.split(' ')
200
+ end
201
+ i = [i].flatten.compact.reject {|entry| entry.start_with?('--') }
202
+ if i.is_a?(Array) and i.empty?
203
+ all_pdf_files = Dir['*.pdf']
204
+ # ===================================================================== #
205
+ # Try to use all .pdf files.
206
+ # ===================================================================== #
207
+ unless all_pdf_files.empty?
208
+ opnn; e 'No specific input was given, thus using all '+
209
+ sfancy(all_pdf_files.size.to_s)+' .pdf files '\
210
+ 'in this directory'
211
+ i = all_pdf_files
212
+ end
213
+ end
214
+ if i.is_a? Array # Keep only files that exist.
215
+ i.select! {|entry| File.exist? entry }
216
+ end
217
+ if i.is_a? Array
218
+ i.map! {|entry| pad_this(entry) }
219
+ end
220
+ if i.empty?
221
+ opnn; ewarn 'Unable to find any existing files '\
222
+ 'to match to, thus exiting now.'
223
+ exit
224
+ end
225
+ @array_pdf_files << i
226
+ @array_pdf_files = @array_pdf_files.flatten # Always keep it flattened.
227
+ end; alias << set_array_pdf_files # === <<
228
+
229
+ # ========================================================================= #
230
+ # === set_output_filename
231
+ #
232
+ # Store the filename of the pdf through this method, the name of
233
+ # the output file.
234
+ # ========================================================================= #
235
+ def set_output_filename(
236
+ i = 'Merged_PDF_Files.pdf'
237
+ )
238
+ if i.size > 40
239
+ opnn; ewarn 'The name for the new filename is larger than 255.'
240
+ opnn; ewarn 'We will thus truncate the name to the first 255 '\
241
+ 'characters instead.'
242
+ i = i[0, 41]
243
+ # ===================================================================== #
244
+ # Since as of Jun 2016, we will get rid of the last 4 characters
245
+ # and append '.pdf'
246
+ # ===================================================================== #
247
+ i[-4,4] = ''
248
+ i << '.pdf'
249
+ end
250
+ @output_filename = i
251
+ end; alias store_at set_output_filename # === store_at
252
+
253
+ # ========================================================================= #
254
+ # === opnn
255
+ # ========================================================================= #
256
+ def opnn
257
+ super(NAMESPACE)
258
+ end
259
+
260
+ # ========================================================================= #
261
+ # === feedback_where_it_is_stored
262
+ # ========================================================================= #
263
+ def feedback_where_it_is_stored
264
+ if File.exist? result?
265
+ opnn; e "The result is stored at `#{sfile(self.result)}`."
266
+ end
267
+ end; alias report feedback_where_it_is_stored # === report
268
+
269
+ # ========================================================================= #
270
+ # === output_filename
271
+ # ========================================================================= #
272
+ def output_filename
273
+ _ = @output_filename
274
+ _ = _.join(', ') if _.is_a? Array
275
+ return _
276
+ end; alias result output_filename # === result
277
+ alias result? output_filename # === result?
278
+ alias output_filename? output_filename # === output_filename?
279
+ alias output_file? output_filename # === output_file?
280
+ alias where_it_is_stored? output_filename # === where_it_is_stored?
281
+
282
+ # ========================================================================= #
283
+ # === build_new_output_name_based_on_input
284
+ # ========================================================================= #
285
+ def build_new_output_name_based_on_input
286
+ _ = @array_pdf_files.map {|entry|
287
+ File.basename(entry).gsub(File.extname(entry), '')
288
+ }
289
+ _ = _.join(' ').gsub(/ /,'_').gsub(/\"/,'')+'.pdf'
290
+ set_output_filename(_)
291
+ end
292
+
293
+ # ========================================================================= #
294
+ # === run (run tag)
295
+ # ========================================================================= #
296
+ def run
297
+ menu
298
+ build_new_output_name_based_on_input
299
+ do_conversion
300
+ end
301
+
302
+ end; end
303
+
304
+ if __FILE__ == $PROGRAM_NAME
305
+ _ = PdfParadise::MergePdf.new(ARGV)
306
+ _.feedback_where_it_is_stored # Call it manually.
307
+ end # merge_pdf
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'pdf_paradise/merge_pdf_namespace'
6
+ # =========================================================================== #
7
+ require 'pdf_paradise/requires/require_the_whole_project.rb'
8
+
9
+ MergePdf = PdfParadise::MergePdf # Now the MergePdf namespace is available in the toplevel.
@@ -0,0 +1,105 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # === PdfParadise::MergeThenOpen
6
+ #
7
+ # This will first merge different .pdf files, and then open the
8
+ # newly generated .pdf file.
9
+ #
10
+ # Usage example:
11
+ #
12
+ # PdfParadise::MergeThenOpen.new(ARGV)
13
+ #
14
+ # =========================================================================== #
15
+ # require 'pdf_paradise/merge_then_open/merge_then_open.rb'
16
+ # PdfParadise::MergeThenOpen.new(ARGV)
17
+ # =========================================================================== #
18
+ require 'pdf_paradise/merge_pdf/merge_pdf.rb'
19
+
20
+ module PdfParadise
21
+
22
+ class MergeThenOpen < Base # === PdfParadise::MergeThenOpen
23
+
24
+ # ========================================================================= #
25
+ # === NAMESPACE
26
+ # ========================================================================= #
27
+ NAMESPACE = inspect
28
+
29
+ # ========================================================================= #
30
+ # === initialize
31
+ # ========================================================================= #
32
+ def initialize(
33
+ commandline_arguments = nil,
34
+ run_already = true
35
+ )
36
+ reset
37
+ set_commandline_arguments(
38
+ commandline_arguments
39
+ )
40
+ run if run_already
41
+ end
42
+
43
+ # ========================================================================= #
44
+ # === reset (reset tag)
45
+ # ========================================================================= #
46
+ def reset
47
+ super()
48
+ end
49
+
50
+ # ========================================================================= #
51
+ # === opnn
52
+ # ========================================================================= #
53
+ def opnn(i = NAMESPACE)
54
+ super(i)
55
+ end
56
+
57
+ # ========================================================================= #
58
+ # === set_commandline_arguments
59
+ # ========================================================================= #
60
+ def set_commandline_arguments(i = '')
61
+ i = [i].flatten.compact
62
+ @commandline_arguments = i
63
+ end
64
+
65
+ # ========================================================================= #
66
+ # === commandline_arguments?
67
+ # ========================================================================= #
68
+ def commandline_arguments?
69
+ @commandline_arguments
70
+ end
71
+
72
+ # ========================================================================= #
73
+ # === run (run tag)
74
+ # ========================================================================= #
75
+ def run
76
+ merge_pdf = MergePdf.new(@commandline_arguments)
77
+ new_file = merge_pdf.output_file?
78
+ if File.exist? new_file
79
+ # ===================================================================== #
80
+ # We have to open this file next.
81
+ # ===================================================================== #
82
+ begin
83
+ require 'open'
84
+ if Object.const_defined? :Open
85
+ opnn; e "Opening #{sfile(new_file)} next."
86
+ Open.in_editor(new_file)
87
+ end
88
+ rescue LoadError; end
89
+ else
90
+ opnn; e "No file appears to exist at #{sfile(new_file)}."
91
+ end
92
+ end
93
+
94
+ # ========================================================================= #
95
+ # === PdfParadise::MergeThenOpen[]
96
+ # ========================================================================= #
97
+ def self.[](i = '')
98
+ new(i)
99
+ end
100
+
101
+ end; end
102
+
103
+ if __FILE__ == $PROGRAM_NAME
104
+ PdfParadise::MergeThenOpen.new(ARGV)
105
+ end # mergethenopen
@@ -0,0 +1,2 @@
1
+ This directory may contain some modifications to the prawn gem
2
+ and Prawn namespace.
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'pdf_paradise/prawn_addons/prawn_addons.rb'
6
+ # =========================================================================== #
7
+ if Object.const_defined? :Prawn
8
+
9
+ module Prawn
10
+
11
+ class Document
12
+
13
+ if respond_to? :start_new_page
14
+ alias add_page start_new_page
15
+ end
16
+
17
+ end; end; end
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/ruby -w
2
+ # Encoding: UTF-8
3
+ # frozen_string_literal: true
4
+ # =========================================================================== #
5
+ # require 'pdf_paradise/project/project.rb'
6
+ # =========================================================================== #
7
+ module PdfParadise
8
+
9
+ # ========================================================================= #
10
+ # === PdfParadise::PROJECT_BASE_DIRECTORY
11
+ # ========================================================================= #
12
+ PROJECT_BASE_DIRECTORY =
13
+ File.absolute_path("#{__dir__}/..")+'/'
14
+
15
+ # ========================================================================= #
16
+ # === PdfParadise.project_base_dir?
17
+ # ========================================================================= #
18
+ def self.project_base_dir?
19
+ PROJECT_BASE_DIRECTORY
20
+ end; self.instance_eval { alias project_base_directory? project_base_dir? } # === PdfParadise.project_base_directory?
21
+
22
+ end