poppler 2.2.4-x64-mingw32

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 (185) hide show
  1. checksums.yaml +7 -0
  2. data/README +35 -0
  3. data/Rakefile +75 -0
  4. data/ext/poppler/depend +6 -0
  5. data/ext/poppler/extconf.rb +70 -0
  6. data/ext/poppler/poppler.def +2 -0
  7. data/ext/poppler/rbpoppler-action.c +372 -0
  8. data/ext/poppler/rbpoppler-annotation-callout-line.c +127 -0
  9. data/ext/poppler/rbpoppler-annotation-free-text.c +46 -0
  10. data/ext/poppler/rbpoppler-annotation-mapping.c +72 -0
  11. data/ext/poppler/rbpoppler-annotation-markup.c +98 -0
  12. data/ext/poppler/rbpoppler-annotation-text.c +53 -0
  13. data/ext/poppler/rbpoppler-annotation.c +74 -0
  14. data/ext/poppler/rbpoppler-attachment.c +124 -0
  15. data/ext/poppler/rbpoppler-button-field.c +56 -0
  16. data/ext/poppler/rbpoppler-choice-field.c +131 -0
  17. data/ext/poppler/rbpoppler-color.c +107 -0
  18. data/ext/poppler/rbpoppler-document.c +224 -0
  19. data/ext/poppler/rbpoppler-font-info.c +59 -0
  20. data/ext/poppler/rbpoppler-fonts-iter.c +127 -0
  21. data/ext/poppler/rbpoppler-form-field-mapping.c +44 -0
  22. data/ext/poppler/rbpoppler-form-field.c +98 -0
  23. data/ext/poppler/rbpoppler-image-mapping.c +48 -0
  24. data/ext/poppler/rbpoppler-index-iter.c +128 -0
  25. data/ext/poppler/rbpoppler-link-mapping.c +47 -0
  26. data/ext/poppler/rbpoppler-page-transition.c +59 -0
  27. data/ext/poppler/rbpoppler-page.c +322 -0
  28. data/ext/poppler/rbpoppler-private.h +77 -0
  29. data/ext/poppler/rbpoppler-ps-file.c +66 -0
  30. data/ext/poppler/rbpoppler-rectangle.c +92 -0
  31. data/ext/poppler/rbpoppler-text-field.c +91 -0
  32. data/ext/poppler/rbpoppler.c +111 -0
  33. data/ext/poppler/rbpoppler.h +61 -0
  34. data/ext/poppler/rbpopplerconversions.h +105 -0
  35. data/extconf.rb +49 -0
  36. data/lib/2.0/poppler.so +0 -0
  37. data/lib/2.1/poppler.so +0 -0
  38. data/lib/2.2/poppler.so +0 -0
  39. data/lib/poppler.rb +105 -0
  40. data/sample/number-pdf.rb +32 -0
  41. data/sample/pdf2.rb +132 -0
  42. data/sample/pdf2svg.rb +26 -0
  43. data/sample/pdf2text.rb +16 -0
  44. data/sample/pdfcrop.rb +32 -0
  45. data/sample/pdfdiv.rb +36 -0
  46. data/test/fixtures/image.pdf +0 -0
  47. data/test/fixtures/image.png +0 -0
  48. data/test/poppler-test-utils.rb +58 -0
  49. data/test/run-test.rb +32 -0
  50. data/test/test_annotation.rb +86 -0
  51. data/test/test_color.rb +26 -0
  52. data/test/test_constants.rb +30 -0
  53. data/test/test_document.rb +41 -0
  54. data/test/test_page.rb +42 -0
  55. data/vendor/local/bin/cjpeg.exe +0 -0
  56. data/vendor/local/bin/djpeg.exe +0 -0
  57. data/vendor/local/bin/jpegtran.exe +0 -0
  58. data/vendor/local/bin/libjpeg-9.dll +0 -0
  59. data/vendor/local/bin/libpoppler-48.dll +0 -0
  60. data/vendor/local/bin/libpoppler-cpp-0.dll +0 -0
  61. data/vendor/local/bin/libpoppler-glib-8.dll +0 -0
  62. data/vendor/local/bin/libsqlite3-0.dll +0 -0
  63. data/vendor/local/bin/pdfdetach.exe +0 -0
  64. data/vendor/local/bin/pdffonts.exe +0 -0
  65. data/vendor/local/bin/pdfimages.exe +0 -0
  66. data/vendor/local/bin/pdfinfo.exe +0 -0
  67. data/vendor/local/bin/pdfseparate.exe +0 -0
  68. data/vendor/local/bin/pdftocairo.exe +0 -0
  69. data/vendor/local/bin/pdftohtml.exe +0 -0
  70. data/vendor/local/bin/pdftoppm.exe +0 -0
  71. data/vendor/local/bin/pdftops.exe +0 -0
  72. data/vendor/local/bin/pdftotext.exe +0 -0
  73. data/vendor/local/bin/pdfunite.exe +0 -0
  74. data/vendor/local/bin/rdjpgcom.exe +0 -0
  75. data/vendor/local/bin/sqlite3.exe +0 -0
  76. data/vendor/local/bin/wrjpgcom.exe +0 -0
  77. data/vendor/local/include/jconfig.h +60 -0
  78. data/vendor/local/include/jerror.h +304 -0
  79. data/vendor/local/include/jmorecfg.h +446 -0
  80. data/vendor/local/include/jpeglib.h +1180 -0
  81. data/vendor/local/include/poppler/cpp/poppler-document.h +104 -0
  82. data/vendor/local/include/poppler/cpp/poppler-embedded-file.h +55 -0
  83. data/vendor/local/include/poppler/cpp/poppler-font.h +91 -0
  84. data/vendor/local/include/poppler/cpp/poppler-global.h +111 -0
  85. data/vendor/local/include/poppler/cpp/poppler-image.h +71 -0
  86. data/vendor/local/include/poppler/cpp/poppler-page-renderer.h +66 -0
  87. data/vendor/local/include/poppler/cpp/poppler-page-transition.h +82 -0
  88. data/vendor/local/include/poppler/cpp/poppler-page.h +76 -0
  89. data/vendor/local/include/poppler/cpp/poppler-rectangle.h +84 -0
  90. data/vendor/local/include/poppler/cpp/poppler-toc.h +74 -0
  91. data/vendor/local/include/poppler/cpp/poppler-version.h +39 -0
  92. data/vendor/local/include/poppler/glib/poppler-action.h +316 -0
  93. data/vendor/local/include/poppler/glib/poppler-annot.h +296 -0
  94. data/vendor/local/include/poppler/glib/poppler-attachment.h +87 -0
  95. data/vendor/local/include/poppler/glib/poppler-date.h +30 -0
  96. data/vendor/local/include/poppler/glib/poppler-document.h +299 -0
  97. data/vendor/local/include/poppler/glib/poppler-enums.h +116 -0
  98. data/vendor/local/include/poppler/glib/poppler-features.h +88 -0
  99. data/vendor/local/include/poppler/glib/poppler-form-field.h +111 -0
  100. data/vendor/local/include/poppler/glib/poppler-layer.h +43 -0
  101. data/vendor/local/include/poppler/glib/poppler-media.h +73 -0
  102. data/vendor/local/include/poppler/glib/poppler-movie.h +42 -0
  103. data/vendor/local/include/poppler/glib/poppler-page.h +377 -0
  104. data/vendor/local/include/poppler/glib/poppler-structure-element.h +357 -0
  105. data/vendor/local/include/poppler/glib/poppler.h +250 -0
  106. data/vendor/local/include/sqlite3.h +7494 -0
  107. data/vendor/local/include/sqlite3ext.h +487 -0
  108. data/vendor/local/lib/girepository-1.0/Poppler-0.18.typelib +0 -0
  109. data/vendor/local/lib/libjpeg.a +0 -0
  110. data/vendor/local/lib/libjpeg.dll.a +0 -0
  111. data/vendor/local/lib/libjpeg.la +41 -0
  112. data/vendor/local/lib/libpoppler-cpp.a +0 -0
  113. data/vendor/local/lib/libpoppler-cpp.dll.a +0 -0
  114. data/vendor/local/lib/libpoppler-cpp.la +41 -0
  115. data/vendor/local/lib/libpoppler-glib.a +0 -0
  116. data/vendor/local/lib/libpoppler-glib.dll.a +0 -0
  117. data/vendor/local/lib/libpoppler-glib.la +41 -0
  118. data/vendor/local/lib/libpoppler.a +0 -0
  119. data/vendor/local/lib/libpoppler.dll.a +0 -0
  120. data/vendor/local/lib/libpoppler.la +41 -0
  121. data/vendor/local/lib/libsqlite3.a +0 -0
  122. data/vendor/local/lib/libsqlite3.dll.a +0 -0
  123. data/vendor/local/lib/libsqlite3.la +41 -0
  124. data/vendor/local/lib/pkgconfig/poppler-cairo.pc +9 -0
  125. data/vendor/local/lib/pkgconfig/poppler-cpp.pc +13 -0
  126. data/vendor/local/lib/pkgconfig/poppler-glib.pc +13 -0
  127. data/vendor/local/lib/pkgconfig/poppler-splash.pc +9 -0
  128. data/vendor/local/lib/pkgconfig/poppler.pc +11 -0
  129. data/vendor/local/lib/pkgconfig/sqlite3.pc +13 -0
  130. data/vendor/local/share/gir-1.0/Poppler-0.18.gir +8281 -0
  131. data/vendor/local/share/gtk-doc/html/poppler/PopplerAnnot.html +3221 -0
  132. data/vendor/local/share/gtk-doc/html/poppler/PopplerAttachment.html +267 -0
  133. data/vendor/local/share/gtk-doc/html/poppler/PopplerDocument.html +3328 -0
  134. data/vendor/local/share/gtk-doc/html/poppler/PopplerFormField.html +1403 -0
  135. data/vendor/local/share/gtk-doc/html/poppler/PopplerLayer.html +307 -0
  136. data/vendor/local/share/gtk-doc/html/poppler/PopplerMedia.html +381 -0
  137. data/vendor/local/share/gtk-doc/html/poppler/PopplerMovie.html +197 -0
  138. data/vendor/local/share/gtk-doc/html/poppler/PopplerPage.html +3002 -0
  139. data/vendor/local/share/gtk-doc/html/poppler/PopplerStructureElement.html +3781 -0
  140. data/vendor/local/share/gtk-doc/html/poppler/annotation-glossary.html +63 -0
  141. data/vendor/local/share/gtk-doc/html/poppler/api-index-0-12.html +123 -0
  142. data/vendor/local/share/gtk-doc/html/poppler/api-index-0-14.html +102 -0
  143. data/vendor/local/share/gtk-doc/html/poppler/api-index-0-16.html +180 -0
  144. data/vendor/local/share/gtk-doc/html/poppler/api-index-0-18.html +72 -0
  145. data/vendor/local/share/gtk-doc/html/poppler/api-index-0-20.html +39 -0
  146. data/vendor/local/share/gtk-doc/html/poppler/api-index-0-22.html +64 -0
  147. data/vendor/local/share/gtk-doc/html/poppler/api-index-deprecated.html +39 -0
  148. data/vendor/local/share/gtk-doc/html/poppler/api-index-full.html +1830 -0
  149. data/vendor/local/share/gtk-doc/html/poppler/ch01.html +74 -0
  150. data/vendor/local/share/gtk-doc/html/poppler/home.png +0 -0
  151. data/vendor/local/share/gtk-doc/html/poppler/index.html +85 -0
  152. data/vendor/local/share/gtk-doc/html/poppler/index.sgml +557 -0
  153. data/vendor/local/share/gtk-doc/html/poppler/left-insensitive.png +0 -0
  154. data/vendor/local/share/gtk-doc/html/poppler/left.png +0 -0
  155. data/vendor/local/share/gtk-doc/html/poppler/poppler-PDF-Utility-functions.html +107 -0
  156. data/vendor/local/share/gtk-doc/html/poppler/poppler-PopplerAction.html +796 -0
  157. data/vendor/local/share/gtk-doc/html/poppler/poppler-PopplerColor.html +201 -0
  158. data/vendor/local/share/gtk-doc/html/poppler/poppler-Version-and-Features-Information.html +254 -0
  159. data/vendor/local/share/gtk-doc/html/poppler/poppler-poppler.html +169 -0
  160. data/vendor/local/share/gtk-doc/html/poppler/poppler.devhelp2 +470 -0
  161. data/vendor/local/share/gtk-doc/html/poppler/right-insensitive.png +0 -0
  162. data/vendor/local/share/gtk-doc/html/poppler/right.png +0 -0
  163. data/vendor/local/share/gtk-doc/html/poppler/style.css +476 -0
  164. data/vendor/local/share/gtk-doc/html/poppler/up-insensitive.png +0 -0
  165. data/vendor/local/share/gtk-doc/html/poppler/up.png +0 -0
  166. data/vendor/local/share/license/poppler/AUTHORS +5 -0
  167. data/vendor/local/share/license/poppler/COPYING +339 -0
  168. data/vendor/local/share/man/man1/cjpeg.1 +387 -0
  169. data/vendor/local/share/man/man1/djpeg.1 +252 -0
  170. data/vendor/local/share/man/man1/jpegtran.1 +293 -0
  171. data/vendor/local/share/man/man1/pdfdetach.1 +86 -0
  172. data/vendor/local/share/man/man1/pdffonts.1 +119 -0
  173. data/vendor/local/share/man/man1/pdfimages.1 +260 -0
  174. data/vendor/local/share/man/man1/pdfinfo.1 +152 -0
  175. data/vendor/local/share/man/man1/pdfseparate.1 +49 -0
  176. data/vendor/local/share/man/man1/pdftocairo.1 +295 -0
  177. data/vendor/local/share/man/man1/pdftohtml.1 +107 -0
  178. data/vendor/local/share/man/man1/pdftoppm.1 +170 -0
  179. data/vendor/local/share/man/man1/pdftops.1 +217 -0
  180. data/vendor/local/share/man/man1/pdftotext.1 +137 -0
  181. data/vendor/local/share/man/man1/pdfunite.1 +33 -0
  182. data/vendor/local/share/man/man1/rdjpgcom.1 +63 -0
  183. data/vendor/local/share/man/man1/sqlite3.1 +279 -0
  184. data/vendor/local/share/man/man1/wrjpgcom.1 +103 -0
  185. metadata +254 -0
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'pathname'
4
+ require 'mkmf'
5
+ require 'rbconfig'
6
+ require 'fileutils'
7
+
8
+ package = "poppler"
9
+
10
+ base_dir = Pathname(__FILE__).dirname.expand_path
11
+ ext_dir = base_dir + "ext" + package
12
+ mkmf_gnome2_dir = base_dir + 'lib'
13
+
14
+ ruby = File.join(RbConfig::CONFIG['bindir'],
15
+ RbConfig::CONFIG['ruby_install_name'] +
16
+ RbConfig::CONFIG["EXEEXT"])
17
+
18
+ build_dir = Pathname("ext") + package
19
+ FileUtils.mkdir_p(build_dir.to_s) unless build_dir.exist?
20
+ extconf_rb_path = ext_dir + "extconf.rb"
21
+ system(ruby, "-C", build_dir.to_s, extconf_rb_path.to_s, *ARGV) || exit(false)
22
+
23
+ create_makefile(package)
24
+ FileUtils.mv("Makefile", "Makefile.lib")
25
+
26
+ File.open("Makefile", "w") do |makefile|
27
+ makefile.puts(<<-EOM)
28
+ all:
29
+ (cd ext/#{package} && $(MAKE))
30
+ $(MAKE) -f Makefile.lib
31
+
32
+ install:
33
+ (cd ext/#{package} && $(MAKE) install)
34
+ $(MAKE) -f Makefile.lib install
35
+
36
+ site-install:
37
+ (cd ext/#{package} && $(MAKE) site-install)
38
+ $(MAKE) -f Makefile.lib site-install
39
+
40
+ clean:
41
+ (cd ext/#{package} && $(MAKE) clean)
42
+ $(MAKE) -f Makefile.lib clean
43
+
44
+ distclean:
45
+ (cd ext/#{package} && $(MAKE) distclean)
46
+ $(MAKE) -f Makefile.lib distclean
47
+ @rm -f Makefile.lib
48
+ EOM
49
+ end
Binary file
Binary file
Binary file
@@ -0,0 +1,105 @@
1
+ # Copyright(C) 2006-2009 Ruby-GNOME2 Project.
2
+ #
3
+ # This library is free software: you can redistribute it and/or modify
4
+ # it under the terms of the GNU Lesser General Public License as published by
5
+ # the Free Software Foundation, either version 2.1 of the License.
6
+ #
7
+ # Foobar is distributed in the hope that it will be useful,
8
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
9
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10
+ # GNU Lesser General Public License for more details.
11
+ #
12
+ # You should have received a copy of the GNU Lesser General Public License
13
+ # along with Foobar. If not, see <http://www.gnu.org/licenses/>.
14
+
15
+ require "tempfile"
16
+ require "date"
17
+ require "glib2"
18
+ require "gdk_pixbuf2"
19
+ require "cairo"
20
+
21
+ base_dir = Pathname.new(__FILE__).dirname.dirname.expand_path
22
+ vendor_dir = base_dir + "vendor" + "local"
23
+ vendor_bin_dir = vendor_dir + "bin"
24
+ GLib.prepend_dll_path(vendor_bin_dir)
25
+ begin
26
+ major, minor, = RUBY_VERSION.split(/\./)
27
+ require "#{major}.#{minor}/poppler.so"
28
+ rescue LoadError
29
+ require "poppler.so"
30
+ end
31
+
32
+ module Poppler
33
+ LOG_DOMAIN = "Poppler"
34
+
35
+ VERSION = version.split(".").collect {|x| x.to_i}
36
+
37
+ class Document
38
+ private
39
+ def pdf_data?(data)
40
+ /\A%PDF-1\.\d/ =~ data
41
+ end
42
+
43
+ def ensure_uri(uri)
44
+ if pdf_data?(uri)
45
+ @pdf = Tempfile.new("ruby-poppler-pdf")
46
+ @pdf.binmode
47
+ @pdf.print(uri)
48
+ @pdf.close
49
+ uri = @pdf.path
50
+ end
51
+
52
+ if GLib.path_is_absolute?(uri)
53
+ GLib.filename_to_uri(uri)
54
+ elsif /\A[a-zA-Z][a-zA-Z\d\-+.]*:/.match(uri)
55
+ uri
56
+ else
57
+ GLib.filename_to_uri(File.expand_path(uri))
58
+ end
59
+ end
60
+ end
61
+
62
+ if defined?(TextField)
63
+ class TextField
64
+ def multiline?
65
+ type == FormTextType::MULTILINE
66
+ end
67
+
68
+ def file_select?
69
+ type == FormTextType::FILE_SELECT
70
+ end
71
+
72
+ def normal?
73
+ type == FormTextType::NORMAL
74
+ end
75
+ end
76
+ end
77
+
78
+ if defined?(ChoiceField)
79
+ class ChoiceField
80
+ def combo?
81
+ type == FormChioceType::COMBO
82
+ end
83
+
84
+ def list?
85
+ type == FormChoiceType::LIST
86
+ end
87
+ end
88
+ end
89
+ end
90
+
91
+ if Poppler.cairo_available?
92
+ module Cairo
93
+ class Context
94
+ def render_poppler_page(page, *args, &block)
95
+ page.render(self, *args, &block)
96
+ end
97
+
98
+ def render_poppler_page_selection(page, *args, &block)
99
+ page.render_selection(self, *args, &block)
100
+ end
101
+ end
102
+ end
103
+ end
104
+
105
+ GLib::Log.set_log_domain(Poppler::LOG_DOMAIN)
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'poppler'
4
+
5
+ input = ARGV.first
6
+ output = input.sub(/\.pdf$/, "-numbered.pdf")
7
+
8
+ doc = Poppler::Document.new(input)
9
+ first_page = doc[0]
10
+
11
+ Cairo::PDFSurface.new(output, *first_page.size) do |surface|
12
+ context = Cairo::Context.new(surface)
13
+
14
+ doc.each_with_index do |page, i|
15
+ width, height = page.size
16
+ surface.set_size(width, height)
17
+ context.save do
18
+ context.render_poppler_page(page)
19
+ end
20
+ context.save do
21
+ layout = context.create_pango_layout
22
+ layout.text = i.to_s
23
+ layout.width = width * Pango::SCALE
24
+ layout.alignment = Pango::Layout::ALIGN_CENTER
25
+ layout.font_description = Pango::FontDescription.new("Sans 288")
26
+ context.move_to(0, (height - layout.pixel_size[1]) / 2.0)
27
+ context.set_source_rgba(0.1, 0.1, 0.1, 0.5)
28
+ context.show_pango_layout(layout)
29
+ end
30
+ context.show_page
31
+ end
32
+ end
@@ -0,0 +1,132 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "tempfile"
4
+ require "optparse"
5
+ require "poppler"
6
+ require "gdk_pixbuf2"
7
+
8
+ page = 0
9
+ scale = 1.0
10
+ rotate = 0
11
+
12
+ parser = OptionParser.new
13
+ parser.banner = <<-BANNER
14
+ Usage: #{parser.program_name} INPUT.PDF OUTPUT [options]
15
+
16
+ #{parser.program_name} coverts the target page in INPUT.PDF to an image file.
17
+ Many popular image formats such as PNG and JPEG are supported.
18
+ You can specify output image format by OUTPUT file extension.
19
+ For example, the following comand generates PNG file:
20
+
21
+ % #{$0} INPUT.PDF OUTPUT.png
22
+
23
+ BANNER
24
+
25
+ parser.on("--page=PAGE", Integer,
26
+ "Use PAGE as the target page",
27
+ "(0-origin)",
28
+ "[#{page}]") do |value|
29
+ page = value.to_i
30
+ end
31
+
32
+ parser.on("--scale=RATIO", Float,
33
+ "Scale the target page in INPUT.PDF RATIO times larger in OUTPUT",
34
+ "[#{scale}]") do |value|
35
+ scale = value.to_f
36
+ end
37
+
38
+ parser.on("--rotate=DEGREE", Integer,
39
+ "Rotate the target page in INPUT.PDF DEGREE degrees clockwise in OUTPUT",
40
+ "(available values: 0...360)",
41
+ "[#{rotate}]") do |value|
42
+ rotate = value.to_i % 360
43
+ end
44
+
45
+ rest_args = parser.parse!
46
+ if rest_args.size != 2
47
+ puts(parser.help)
48
+ exit(false)
49
+ end
50
+ input, output = rest_args
51
+
52
+ ext_name = File.extname(output)[1..-1]
53
+ if ext_name
54
+ output_type = ext_name.downcase
55
+ output_type = "jpeg" if /jpg/ =~ output_type
56
+ else
57
+ output_type = "png"
58
+ end
59
+
60
+ def compute_size(width, height, rotate)
61
+ width = width.to_f
62
+ height = height.to_f
63
+ radius = 0
64
+ unless rotate.zero?
65
+ radius = rotate / 180.0 * Math::PI
66
+ if (90 < rotate and rotate < 180) or
67
+ (270 < rotate and rotate < 360)
68
+ radius -= Math::PI / 2
69
+ end
70
+ end
71
+ inner_angle1 = Math.atan(width / height)
72
+ inner_angle2 = Math.atan(height / width)
73
+ diagonal = Math.sqrt(width ** 2 + height ** 2)
74
+
75
+ angle1 = radius + inner_angle1
76
+ angle2 = radius + inner_angle2
77
+
78
+ bottom1 = diagonal * Math.cos(angle1)
79
+ length1 = (bottom1 * Math.tan(angle1)).abs.to_i
80
+ bottom2 = diagonal * Math.cos(angle2)
81
+ length2 = (bottom2 * Math.tan(angle2)).abs.to_i
82
+
83
+ if (0 <= rotate and rotate <= 90) or
84
+ (180 <= rotate and rotate <= 270)
85
+ [length1, length2]
86
+ else
87
+ [length2, length1]
88
+ end
89
+ end
90
+
91
+ def to_pixbuf_with_cairo(input, page_number, scale, rotate)
92
+ doc = Poppler::Document.new(input)
93
+ page = doc[page_number]
94
+ width, height = page.size.collect {|x| x * scale}
95
+ surface_width, surface_height = compute_size(width, height, rotate)
96
+
97
+ surface = Cairo::ImageSurface.new(Cairo::FORMAT_ARGB32,
98
+ surface_width, surface_height)
99
+ cr = Cairo::Context.new(surface)
100
+
101
+ half_width = surface_width / 2.0
102
+ half_height = surface_height / 2.0
103
+ cr.translate(half_width, half_height)
104
+ cr.rotate(rotate / 180.0 * Math::PI)
105
+ cr.translate(-half_width, -half_height)
106
+
107
+ cr.translate((surface_width - width) / 2.0,
108
+ (surface_height - height) / 2.0)
109
+ cr.set_source_rgb(1, 1, 1)
110
+ cr.rectangle(0, 0, width, height)
111
+ cr.fill
112
+
113
+ cr.scale(scale, scale)
114
+ cr.render_poppler_page(page)
115
+ temp = Tempfile.new("pdf2")
116
+ cr.target.write_to_png(temp.path)
117
+ cr.target.finish
118
+ Gdk::Pixbuf.new(temp.path)
119
+ end
120
+
121
+ unless Poppler.cairo_available?
122
+ puts "cairo isn't available."
123
+ exit(false)
124
+ end
125
+ pixbuf = to_pixbuf_with_cairo(input, page, scale, rotate)
126
+
127
+ if pixbuf.nil?
128
+ puts "Is it a PDF file?: #{input}"
129
+ exit(-1)
130
+ end
131
+ puts "saving to #{output}(#{pixbuf.width}x#{pixbuf.height})..."
132
+ pixbuf.save(output, output_type)
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "poppler"
4
+
5
+ if ARGV.size < 1
6
+ puts "usage: #{$0} input.pdf"
7
+ exit(-1)
8
+ end
9
+
10
+ input, = ARGV
11
+
12
+ output = input.sub(/\..+$/, ".svg")
13
+ output = "#{output}.svg" if input == output
14
+
15
+ doc = Poppler::Document.new(input)
16
+
17
+ width, height = doc.pages[0].size
18
+ Cairo::SVGSurface.new(output, width, height) do |surface|
19
+ surface.restrict_to_version("1_2")
20
+
21
+ context = Cairo::Context.new(surface)
22
+ doc.each do |page|
23
+ page.render(context)
24
+ context.show_page
25
+ end
26
+ end
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "poppler"
4
+
5
+ if ARGV.size < 1
6
+ puts "usage: #{$0} input.pdf"
7
+ exit(-1)
8
+ end
9
+
10
+ input = ARGV.shift
11
+ input_uri = "file://#{File.expand_path(input)}"
12
+
13
+ doc = Poppler::Document.new(input_uri)
14
+ doc.each do |page|
15
+ puts page.get_text
16
+ end
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "poppler"
4
+
5
+ if ARGV.size != 2
6
+ puts "usage: #{$0} input.pdf output.pdf"
7
+ exit(-1)
8
+ end
9
+
10
+ input, output = ARGV
11
+
12
+ doc = Poppler::Document.new(input)
13
+
14
+ width, height = doc.pages[0].size
15
+ x_margin = width * 0.1
16
+ y_margin = height * 0.1
17
+ croped_width = width - (2 * x_margin)
18
+ croped_height = height - (2 * y_margin)
19
+ Cairo::PDFSurface.new(output, croped_width, croped_height) do |surface|
20
+ context = Cairo::Context.new(surface)
21
+
22
+ doc.each do |page|
23
+ width, height = page.size
24
+ context.save do
25
+ context.translate(-x_margin, -y_margin)
26
+ context.rectangle(x_margin, y_margin, croped_width, croped_height)
27
+ context.clip
28
+ page.render(context)
29
+ context.show_page
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "poppler"
4
+
5
+ if ARGV.size != 2
6
+ puts "usage: #{$0} input.pdf output.pdf"
7
+ exit(-1)
8
+ end
9
+
10
+ input, output = ARGV
11
+
12
+ doc = Poppler::Document.new(input)
13
+
14
+ width, height = doc.pages[0].size
15
+ Cairo::PDFSurface.new(output, width / 2, height) do |surface|
16
+ context = Cairo::Context.new(surface)
17
+
18
+ doc.each do |page|
19
+ width, height = page.size
20
+ half_width = width / 2
21
+ context.save do
22
+ context.rectangle(0, 0, half_width, height)
23
+ context.clip
24
+ page.render(context)
25
+ context.show_page
26
+ end
27
+
28
+ context.save do
29
+ context.translate(-half_width, 0)
30
+ context.rectangle(half_width, 0, half_width, height)
31
+ context.clip
32
+ page.render(context)
33
+ context.show_page
34
+ end
35
+ end
36
+ end
Binary file
Binary file