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.
- checksums.yaml +7 -0
- data/README.md +933 -0
- data/bin/automatic_pdf_title +7 -0
- data/bin/burst_this_pdf_file +7 -0
- data/bin/combine_these_pdf_pages +7 -0
- data/bin/compress_via_hexapdf +7 -0
- data/bin/convert_markdown_to_pdf +7 -0
- data/bin/convert_pdf_to_text +7 -0
- data/bin/delete_first_page_of_this_pdf_file +7 -0
- data/bin/djvu_to_pdf +7 -0
- data/bin/merge_then_open +7 -0
- data/bin/n_pages +10 -0
- data/bin/open_main_pdf +7 -0
- data/bin/pdf_paradise +9 -0
- data/bin/rotate_pdf +7 -0
- data/bin/set_main_book +7 -0
- data/bin/set_title_of_this_pdf_file +15 -0
- data/doc/README.gen +871 -0
- data/doc/todo/todo.md +13 -0
- data/images/Logo_for_the_pdf_paradise_project.avif +0 -0
- data/lib/pdf_paradise/base/base.rb +344 -0
- data/lib/pdf_paradise/base/colours.rb +67 -0
- data/lib/pdf_paradise/colours/colours.rb +27 -0
- data/lib/pdf_paradise/commandline/commandline.rb +109 -0
- data/lib/pdf_paradise/commandline/help.rb +77 -0
- data/lib/pdf_paradise/commandline/menu.rb +173 -0
- data/lib/pdf_paradise/compress/compress_this_pdf_file.rb +108 -0
- data/lib/pdf_paradise/compress/compress_via_hexapdf.rb +27 -0
- data/lib/pdf_paradise/compress/compress_via_qpdf.rb +32 -0
- data/lib/pdf_paradise/constants/constants.rb +76 -0
- data/lib/pdf_paradise/convert_text_to_pdf.rb +94 -0
- data/lib/pdf_paradise/css/project.css +17 -0
- data/lib/pdf_paradise/fpdf/README.md +2 -0
- data/lib/pdf_paradise/fpdf/bookmark.rb +129 -0
- data/lib/pdf_paradise/fpdf/chinese.rb +454 -0
- data/lib/pdf_paradise/fpdf/fpdf.rb +1902 -0
- data/lib/pdf_paradise/fpdf/fpdf_eps.rb +138 -0
- data/lib/pdf_paradise/fpdf/makefont.rb +1794 -0
- data/lib/pdf_paradise/gui/README.md +6 -0
- data/lib/pdf_paradise/gui/fox/split_pdf_file.rb +77 -0
- data/lib/pdf_paradise/gui/gtk2/pdf_viewer/pdf_viewer.rb +34 -0
- data/lib/pdf_paradise/gui/gtk2/split_pdf_file/split_pdf_file.rb +34 -0
- data/lib/pdf_paradise/gui/gtk2/statistics_widget/statistics_widget.rb +34 -0
- data/lib/pdf_paradise/gui/gtk3/controller/controller.rb +214 -0
- data/lib/pdf_paradise/gui/gtk3/pdf_viewer/pdf_viewer.rb +34 -0
- data/lib/pdf_paradise/gui/gtk3/split_pdf_file/split_pdf_file.rb +34 -0
- 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
- 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
- data/lib/pdf_paradise/gui/libui/extract_all_images_from_this_pdf_file/extract_all_images_from_this_pdf_file.rb +223 -0
- 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
- data/lib/pdf_paradise/gui/libui/rotate_pdf_file/rotate_pdf_file.rb +219 -0
- data/lib/pdf_paradise/gui/libui/statistics_widget/statistics_widget.rb +233 -0
- data/lib/pdf_paradise/gui/shared_code/pdf_viewer/pdf_viewer.css +5 -0
- data/lib/pdf_paradise/gui/shared_code/pdf_viewer/pdf_viewer_module.rb +287 -0
- 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
- data/lib/pdf_paradise/gui/shared_code/split_pdf_file/split_pdf_file_module.rb +295 -0
- data/lib/pdf_paradise/gui/universal_widgets/convert_pdf_to_text/convert_pdf_to_text.rb +366 -0
- 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
- data/lib/pdf_paradise/gui/universal_widgets/statistics_widget/statistics_widget.rb +407 -0
- data/lib/pdf_paradise/gui/universal_widgets/to_pdf/to_pdf.rb +351 -0
- data/lib/pdf_paradise/hexapdf/001_rainbow_pattern_example.rb +0 -0
- data/lib/pdf_paradise/hexapdf/hexapdf.rb +123 -0
- data/lib/pdf_paradise/images/PDF_PARADISE_LOGO.png +0 -0
- data/lib/pdf_paradise/main_pdf/main_pdf.rb +474 -0
- data/lib/pdf_paradise/merge_pdf/menu.rb +63 -0
- data/lib/pdf_paradise/merge_pdf/merge_pdf.rb +307 -0
- data/lib/pdf_paradise/merge_pdf_namespace.rb +9 -0
- data/lib/pdf_paradise/merge_then_open/merge_then_open.rb +105 -0
- data/lib/pdf_paradise/prawn_addons/README.md +2 -0
- data/lib/pdf_paradise/prawn_addons/prawn_addons.rb +17 -0
- data/lib/pdf_paradise/project/project.rb +22 -0
- data/lib/pdf_paradise/remove_pdf_password.rb +391 -0
- data/lib/pdf_paradise/requires/batch_require_toplevel_files.rb +22 -0
- data/lib/pdf_paradise/requires/colours.rb +11 -0
- data/lib/pdf_paradise/requires/colours_and_esystem_and_save_file_and_fileutils_and_opn.rb +13 -0
- data/lib/pdf_paradise/requires/esystem_and_colours.rb +11 -0
- data/lib/pdf_paradise/requires/esystem_and_opn_and_colours.rb +10 -0
- data/lib/pdf_paradise/requires/require_the_whole_project.rb +30 -0
- data/lib/pdf_paradise/requires/require_utility_scripts.rb +9 -0
- data/lib/pdf_paradise/set_main_book.rb +156 -0
- data/lib/pdf_paradise/set_pdf_title.rb +220 -0
- data/lib/pdf_paradise/sinatra/embeddable_interface.rb +389 -0
- data/lib/pdf_paradise/toplevel_methods/convert_epub_to_pdf.rb +27 -0
- data/lib/pdf_paradise/toplevel_methods/convert_markdown_to_pdf.rb +45 -0
- data/lib/pdf_paradise/toplevel_methods/convert_ppt_to_pdf.rb +35 -0
- data/lib/pdf_paradise/toplevel_methods/e.rb +16 -0
- data/lib/pdf_paradise/toplevel_methods/esystem.rb +20 -0
- data/lib/pdf_paradise/toplevel_methods/misc.rb +228 -0
- data/lib/pdf_paradise/toplevel_methods/number_pages.rb +38 -0
- data/lib/pdf_paradise/toplevel_methods/opened_pdf_files.rb +221 -0
- data/lib/pdf_paradise/toplevel_methods/query_pdf_title.rb +201 -0
- data/lib/pdf_paradise/toplevel_methods/reduce_size_of_this_pdf_file.rb +46 -0
- data/lib/pdf_paradise/toplevel_methods/roebe.rb +17 -0
- data/lib/pdf_paradise/toplevel_methods/to_pdf.rb +12 -0
- data/lib/pdf_paradise/utility_scripts/README.md +3 -0
- data/lib/pdf_paradise/utility_scripts/automatic_pdf_title.rb +104 -0
- data/lib/pdf_paradise/utility_scripts/check_syntax_of_pdf_files.rb +106 -0
- data/lib/pdf_paradise/utility_scripts/combine_these_pdf_pages.rb +118 -0
- data/lib/pdf_paradise/utility_scripts/convert_pdf_to_text.rb +179 -0
- data/lib/pdf_paradise/utility_scripts/delete_last_page_of_this_pdf_file.rb +180 -0
- 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
- data/lib/pdf_paradise/utility_scripts/delete_this_page_of_this_pdf_file.rb +356 -0
- data/lib/pdf_paradise/utility_scripts/djvu_to_pdf.rb +87 -0
- data/lib/pdf_paradise/utility_scripts/extract_all_images_from_this_pdf_file.rb +129 -0
- data/lib/pdf_paradise/utility_scripts/extract_pdf_page.rb +283 -0
- data/lib/pdf_paradise/utility_scripts/pdf_file_n_total_pages.rb +348 -0
- data/lib/pdf_paradise/utility_scripts/pdf_optimizer.rb +111 -0
- data/lib/pdf_paradise/utility_scripts/pdf_statistics.rb +148 -0
- data/lib/pdf_paradise/utility_scripts/pdf_to_html.rb +75 -0
- data/lib/pdf_paradise/utility_scripts/remove_images.rb +110 -0
- data/lib/pdf_paradise/utility_scripts/rotate_pdf_file.rb +303 -0
- data/lib/pdf_paradise/utility_scripts/split_pdf.rb +364 -0
- data/lib/pdf_paradise/utility_scripts/to_pdf.rb +130 -0
- data/lib/pdf_paradise/utility_scripts/to_qdf.rb +66 -0
- data/lib/pdf_paradise/version/version.rb +19 -0
- data/lib/pdf_paradise/www/README.md +2 -0
- data/lib/pdf_paradise/www/sinatra/app.rb +304 -0
- data/lib/pdf_paradise/yaml/working_on_these_pdf_files.yml +4 -0
- data/lib/pdf_paradise.rb +5 -0
- data/pdf_paradise.gemspec +61 -0
- data/test/fpdf/001_minimal_example.rb +12 -0
- data/test/fpdf/002.pdf +0 -0
- data/test/fpdf/002_header_and_footer_example.rb +64 -0
- data/test/fpdf/003.pdf +98 -0
- data/test/fpdf/003_justified_paragraphs.rb +96 -0
- data/test/fpdf/file1.md +3 -0
- data/test/fpdf/file2.md +3 -0
- data/test/fpdf/test.pdf +0 -0
- data/test/testing_pdf_paradise.rb +12 -0
- metadata +239 -0
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# Information
|
|
2
|
+
#
|
|
3
|
+
# PDF_EPS class from Valentin Schmidt ported to ruby by Thiago Jackiw (tjackiw@gmail.com)
|
|
4
|
+
# working for Mingle LLC (www.mingle.com)
|
|
5
|
+
# Release Date: July 13th, 2006
|
|
6
|
+
#
|
|
7
|
+
# Description
|
|
8
|
+
#
|
|
9
|
+
# This script allows to embed vector-based Adobe Illustrator (AI) or AI-compatible EPS files.
|
|
10
|
+
# Only vector drawing is supported, not text or bitmap. Although the script was successfully
|
|
11
|
+
# tested with various AI format versions, best results are probably achieved with files that
|
|
12
|
+
# were exported in the AI3 format (tested with Illustrator CS2, Freehand MX and Photoshop CS2).
|
|
13
|
+
#
|
|
14
|
+
# ImageEps(string file, float x, float y [, float w [, float h [, string link [, boolean useBoundingBox]]]])
|
|
15
|
+
#
|
|
16
|
+
# Same parameters as for regular FPDF::Image() method, with an additional one:
|
|
17
|
+
#
|
|
18
|
+
# useBoundingBox: specifies whether to position the bounding box (true) or the complete canvas (false)
|
|
19
|
+
# at location (x,y). Default value is true.
|
|
20
|
+
#
|
|
21
|
+
# First added to the Ruby FPDF distribution in 1.53c
|
|
22
|
+
#
|
|
23
|
+
# Usage is as follows:
|
|
24
|
+
#
|
|
25
|
+
# require 'fpdf'
|
|
26
|
+
# require 'fpdf_eps'
|
|
27
|
+
# pdf = FPDF.new
|
|
28
|
+
# pdf.extend(PDF_EPS)
|
|
29
|
+
# pdf.ImageEps(...)
|
|
30
|
+
#
|
|
31
|
+
# This allows it to be combined with other extensions, such as the bookmark
|
|
32
|
+
# module.
|
|
33
|
+
|
|
34
|
+
module PDF_EPS
|
|
35
|
+
|
|
36
|
+
# === ImageEps
|
|
37
|
+
def ImageEps(file, x, y, w=0, h=0, link='', use_bounding_box=true)
|
|
38
|
+
data = nil
|
|
39
|
+
if File.exists?(file)
|
|
40
|
+
File.open(file, 'rb') do |f|
|
|
41
|
+
data = f.read()
|
|
42
|
+
end
|
|
43
|
+
else
|
|
44
|
+
Error('EPS file not found: '+file)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Find BoundingBox param
|
|
48
|
+
regs = data.scan(/%%BoundingBox: [^\r\n]*/m)
|
|
49
|
+
regs << regs[0].gsub(/%%BoundingBox: /, '')
|
|
50
|
+
if regs.size > 1
|
|
51
|
+
tmp = regs[1].to_s.split(' ')
|
|
52
|
+
@x1 = tmp[0].to_i
|
|
53
|
+
@y1 = tmp[1].to_i
|
|
54
|
+
@x2 = tmp[2].to_i
|
|
55
|
+
@y2 = tmp[3].to_i
|
|
56
|
+
else
|
|
57
|
+
Error('No BoundingBox found in EPS file: '+file)
|
|
58
|
+
end
|
|
59
|
+
f_start = data.index('%%EndSetup')
|
|
60
|
+
f_start = data.index('%%EndProlog') if f_start === false
|
|
61
|
+
f_start = data.index('%%BoundingBox') if f_start === false
|
|
62
|
+
|
|
63
|
+
data = data.slice(f_start, data.length)
|
|
64
|
+
|
|
65
|
+
f_end = data.index('%%PageTrailer')
|
|
66
|
+
f_end = data.index('showpage') if f_end === false
|
|
67
|
+
data = data.slice(0, f_end) if f_end
|
|
68
|
+
|
|
69
|
+
# save the current graphic state
|
|
70
|
+
out('q')
|
|
71
|
+
|
|
72
|
+
k = @k
|
|
73
|
+
|
|
74
|
+
# Translate
|
|
75
|
+
if use_bounding_box
|
|
76
|
+
dx = x*k-@x1
|
|
77
|
+
dy = @hPt-@y2-y*k
|
|
78
|
+
else
|
|
79
|
+
dx = x*k
|
|
80
|
+
dy = -y*k
|
|
81
|
+
end
|
|
82
|
+
tm = [1,0,0,1,dx,dy]
|
|
83
|
+
out(sprintf('%.3f %.3f %.3f %.3f %.3f %.3f cm',
|
|
84
|
+
tm[0], tm[1], tm[2], tm[3], tm[4], tm[5]))
|
|
85
|
+
|
|
86
|
+
if w > 0
|
|
87
|
+
scale_x = w/((@x2-@x1)/k)
|
|
88
|
+
if h > 0
|
|
89
|
+
scale_y = h/((@y2-@y1)/k)
|
|
90
|
+
else
|
|
91
|
+
scale_y = scale_x
|
|
92
|
+
h = (@y2-@y1)/k * scale_y
|
|
93
|
+
end
|
|
94
|
+
else
|
|
95
|
+
if h > 0
|
|
96
|
+
scale_y = $h/((@y2-@y1)/$k)
|
|
97
|
+
scale_x = scale_y
|
|
98
|
+
w = (@x2-@x1)/k * scale_x
|
|
99
|
+
else
|
|
100
|
+
w = (@x2-@x1)/k
|
|
101
|
+
h = (@y2-@y1)/k
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
if !scale_x.nil?
|
|
106
|
+
# Scale
|
|
107
|
+
tm = [scale_x,0,0,scale_y,0,@hPt*(1-scale_y)]
|
|
108
|
+
out(sprintf('%.3f %.3f %.3f %.3f %.3f %.3f cm',
|
|
109
|
+
tm[0], tm[1], tm[2], tm[3], tm[4], tm[5]))
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
data.split(/\r\n|[\r\n]/).each do |line|
|
|
113
|
+
next if line == '' || line[0,1] == '%'
|
|
114
|
+
len = line.length
|
|
115
|
+
# next if (len > 2 && line[len-2,len] != ' ')
|
|
116
|
+
cmd = line[len-2,len].strip
|
|
117
|
+
case cmd
|
|
118
|
+
when 'm', 'l', 'v', 'y', 'c', 'k', 'K', 'g', 'G', 's', 'S', 'J', 'j', 'w', 'M', 'd':
|
|
119
|
+
out(line)
|
|
120
|
+
when 'L':
|
|
121
|
+
line[len-1,len]='l'
|
|
122
|
+
out(line)
|
|
123
|
+
when 'C':
|
|
124
|
+
line[len-1,len]='c'
|
|
125
|
+
out(line)
|
|
126
|
+
when 'f', 'F':
|
|
127
|
+
out('f*')
|
|
128
|
+
|
|
129
|
+
when 'b', 'B':
|
|
130
|
+
out(cmd + '*')
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
# restore previous graphic state
|
|
135
|
+
out('Q')
|
|
136
|
+
Link(x,y,w,h,link) if link
|
|
137
|
+
end
|
|
138
|
+
end
|