pdf_paradise 0.3.20
Sign up to get free protection for your applications and to get access to all the features.
- 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
|