pdf2json 0.1.0

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 (473) hide show
  1. data/README.markdown +9 -0
  2. data/bin/.gitkeep +0 -0
  3. data/ext/extconf.rb +30 -0
  4. data/lib/pdf2json.rb +8 -0
  5. data/pdf2json-0.52-source/AUTHORS +24 -0
  6. data/pdf2json-0.52-source/CHANGES +11 -0
  7. data/pdf2json-0.52-source/Makefile +84 -0
  8. data/pdf2json-0.52-source/Makefile.in +84 -0
  9. data/pdf2json-0.52-source/aclocal.m4 +274 -0
  10. data/pdf2json-0.52-source/aconf-win32.h +86 -0
  11. data/pdf2json-0.52-source/aconf.h +42 -0
  12. data/pdf2json-0.52-source/aconf.h.in +41 -0
  13. data/pdf2json-0.52-source/autom4te.cache/output.0 +6908 -0
  14. data/pdf2json-0.52-source/autom4te.cache/requests +76 -0
  15. data/pdf2json-0.52-source/autom4te.cache/traces.0 +466 -0
  16. data/pdf2json-0.52-source/config.log +1259 -0
  17. data/pdf2json-0.52-source/config.status +1050 -0
  18. data/pdf2json-0.52-source/configure +6908 -0
  19. data/pdf2json-0.52-source/configure.ac +93 -0
  20. data/pdf2json-0.52-source/doc/pdffonts.1 +130 -0
  21. data/pdf2json-0.52-source/doc/pdffonts.cat +107 -0
  22. data/pdf2json-0.52-source/doc/pdffonts.hlp +117 -0
  23. data/pdf2json-0.52-source/doc/pdfimages.1 +102 -0
  24. data/pdf2json-0.52-source/doc/pdfimages.cat +92 -0
  25. data/pdf2json-0.52-source/doc/pdfimages.hlp +101 -0
  26. data/pdf2json-0.52-source/doc/pdfinfo.1 +158 -0
  27. data/pdf2json-0.52-source/doc/pdfinfo.cat +119 -0
  28. data/pdf2json-0.52-source/doc/pdfinfo.hlp +129 -0
  29. data/pdf2json-0.52-source/doc/pdftoppm.1 +115 -0
  30. data/pdf2json-0.52-source/doc/pdftoppm.cat +105 -0
  31. data/pdf2json-0.52-source/doc/pdftoppm.hlp +114 -0
  32. data/pdf2json-0.52-source/doc/pdftops.1 +229 -0
  33. data/pdf2json-0.52-source/doc/pdftops.cat +221 -0
  34. data/pdf2json-0.52-source/doc/pdftops.hlp +231 -0
  35. data/pdf2json-0.52-source/doc/pdftotext.1 +137 -0
  36. data/pdf2json-0.52-source/doc/pdftotext.cat +120 -0
  37. data/pdf2json-0.52-source/doc/pdftotext.hlp +133 -0
  38. data/pdf2json-0.52-source/doc/sample-xpdfrc +91 -0
  39. data/pdf2json-0.52-source/doc/xpdf.1 +513 -0
  40. data/pdf2json-0.52-source/doc/xpdf.cat +476 -0
  41. data/pdf2json-0.52-source/doc/xpdf.hlp +489 -0
  42. data/pdf2json-0.52-source/doc/xpdfrc.5 +480 -0
  43. data/pdf2json-0.52-source/doc/xpdfrc.cat +474 -0
  44. data/pdf2json-0.52-source/doc/xpdfrc.hlp +479 -0
  45. data/pdf2json-0.52-source/fofi/.DS_Store +0 -0
  46. data/pdf2json-0.52-source/fofi/FoFiBase.cc +156 -0
  47. data/pdf2json-0.52-source/fofi/FoFiBase.h +57 -0
  48. data/pdf2json-0.52-source/fofi/FoFiBase.o +0 -0
  49. data/pdf2json-0.52-source/fofi/FoFiEncodings.cc +994 -0
  50. data/pdf2json-0.52-source/fofi/FoFiEncodings.h +36 -0
  51. data/pdf2json-0.52-source/fofi/FoFiEncodings.o +0 -0
  52. data/pdf2json-0.52-source/fofi/FoFiTrueType.cc +2027 -0
  53. data/pdf2json-0.52-source/fofi/FoFiTrueType.h +174 -0
  54. data/pdf2json-0.52-source/fofi/FoFiTrueType.o +0 -0
  55. data/pdf2json-0.52-source/fofi/FoFiType1.cc +252 -0
  56. data/pdf2json-0.52-source/fofi/FoFiType1.h +59 -0
  57. data/pdf2json-0.52-source/fofi/FoFiType1.o +0 -0
  58. data/pdf2json-0.52-source/fofi/FoFiType1C.cc +2603 -0
  59. data/pdf2json-0.52-source/fofi/FoFiType1C.h +233 -0
  60. data/pdf2json-0.52-source/fofi/FoFiType1C.o +0 -0
  61. data/pdf2json-0.52-source/fofi/Makefile +70 -0
  62. data/pdf2json-0.52-source/fofi/Makefile.dep +0 -0
  63. data/pdf2json-0.52-source/fofi/Makefile.in +70 -0
  64. data/pdf2json-0.52-source/fofi/libfofi.a +0 -0
  65. data/pdf2json-0.52-source/fofi/vms_make.com +0 -0
  66. data/pdf2json-0.52-source/freetype.win32/.DS_Store +0 -0
  67. data/pdf2json-0.52-source/freetype.win32/include/.DS_Store +0 -0
  68. data/pdf2json-0.52-source/freetype.win32/include/freetype/config/ftconfig.h +528 -0
  69. data/pdf2json-0.52-source/freetype.win32/include/freetype/config/ftheader.h +780 -0
  70. data/pdf2json-0.52-source/freetype.win32/include/freetype/config/ftmodule.h +32 -0
  71. data/pdf2json-0.52-source/freetype.win32/include/freetype/config/ftoption.h +733 -0
  72. data/pdf2json-0.52-source/freetype.win32/include/freetype/config/ftstdlib.h +173 -0
  73. data/pdf2json-0.52-source/freetype.win32/include/freetype/freetype.h +3919 -0
  74. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftadvanc.h +179 -0
  75. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftbbox.h +94 -0
  76. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftbdf.h +209 -0
  77. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftbitmap.h +227 -0
  78. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftcache.h +1128 -0
  79. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftchapters.h +103 -0
  80. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftcid.h +166 -0
  81. data/pdf2json-0.52-source/freetype.win32/include/freetype/fterrdef.h +244 -0
  82. data/pdf2json-0.52-source/freetype.win32/include/freetype/fterrors.h +206 -0
  83. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftgasp.h +120 -0
  84. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftglyph.h +613 -0
  85. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftgxval.h +358 -0
  86. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftgzip.h +102 -0
  87. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftimage.h +1313 -0
  88. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftincrem.h +353 -0
  89. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftlcdfil.h +213 -0
  90. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftlist.h +277 -0
  91. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftlzw.h +99 -0
  92. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftmac.h +274 -0
  93. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftmm.h +378 -0
  94. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftmodapi.h +483 -0
  95. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftmoderr.h +155 -0
  96. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftotval.h +203 -0
  97. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftoutln.h +537 -0
  98. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftpfr.h +172 -0
  99. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftrender.h +230 -0
  100. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftsizes.h +159 -0
  101. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftsnames.h +200 -0
  102. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftstroke.h +716 -0
  103. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftsynth.h +80 -0
  104. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftsystem.h +347 -0
  105. data/pdf2json-0.52-source/freetype.win32/include/freetype/fttrigon.h +350 -0
  106. data/pdf2json-0.52-source/freetype.win32/include/freetype/fttypes.h +588 -0
  107. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftwinfnt.h +274 -0
  108. data/pdf2json-0.52-source/freetype.win32/include/freetype/ftxf86.h +83 -0
  109. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/autohint.h +231 -0
  110. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftcalc.h +179 -0
  111. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftdebug.h +250 -0
  112. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftdriver.h +422 -0
  113. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftgloadr.h +168 -0
  114. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftmemory.h +380 -0
  115. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftobjs.h +1428 -0
  116. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftpic.h +67 -0
  117. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftrfork.h +196 -0
  118. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftserv.h +620 -0
  119. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftstream.h +539 -0
  120. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/fttrace.h +139 -0
  121. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/ftvalid.h +150 -0
  122. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/internal.h +51 -0
  123. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/pcftypes.h +56 -0
  124. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/psaux.h +873 -0
  125. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/pshints.h +712 -0
  126. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svbdf.h +77 -0
  127. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svcid.h +83 -0
  128. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svgldict.h +82 -0
  129. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svgxval.h +72 -0
  130. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svkern.h +51 -0
  131. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svmm.h +104 -0
  132. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svotval.h +55 -0
  133. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svpfr.h +66 -0
  134. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svpostnm.h +79 -0
  135. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svpscmap.h +164 -0
  136. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svpsinfo.h +92 -0
  137. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svsfnt.h +102 -0
  138. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svttcmap.h +106 -0
  139. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svtteng.h +53 -0
  140. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svttglyf.h +67 -0
  141. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svwinfnt.h +50 -0
  142. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/services/svxf86nm.h +55 -0
  143. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/sfnt.h +897 -0
  144. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/t1types.h +270 -0
  145. data/pdf2json-0.52-source/freetype.win32/include/freetype/internal/tttypes.h +1543 -0
  146. data/pdf2json-0.52-source/freetype.win32/include/freetype/t1tables.h +504 -0
  147. data/pdf2json-0.52-source/freetype.win32/include/freetype/ttnameid.h +1247 -0
  148. data/pdf2json-0.52-source/freetype.win32/include/freetype/tttables.h +759 -0
  149. data/pdf2json-0.52-source/freetype.win32/include/freetype/tttags.h +107 -0
  150. data/pdf2json-0.52-source/freetype.win32/include/freetype/ttunpat.h +59 -0
  151. data/pdf2json-0.52-source/freetype.win32/include/ft2build.h +39 -0
  152. data/pdf2json-0.52-source/freetype.win32/lib/freetype_a.lib +0 -0
  153. data/pdf2json-0.52-source/goo/.DS_Store +0 -0
  154. data/pdf2json-0.52-source/goo/FixedPoint.cc +118 -0
  155. data/pdf2json-0.52-source/goo/FixedPoint.h +155 -0
  156. data/pdf2json-0.52-source/goo/FixedPoint.o +0 -0
  157. data/pdf2json-0.52-source/goo/GHash.cc +380 -0
  158. data/pdf2json-0.52-source/goo/GHash.h +78 -0
  159. data/pdf2json-0.52-source/goo/GHash.o +0 -0
  160. data/pdf2json-0.52-source/goo/GList.cc +97 -0
  161. data/pdf2json-0.52-source/goo/GList.h +96 -0
  162. data/pdf2json-0.52-source/goo/GList.o +0 -0
  163. data/pdf2json-0.52-source/goo/GMutex.h +49 -0
  164. data/pdf2json-0.52-source/goo/GString.cc +724 -0
  165. data/pdf2json-0.52-source/goo/GString.cc.fixed +718 -0
  166. data/pdf2json-0.52-source/goo/GString.h +136 -0
  167. data/pdf2json-0.52-source/goo/GString.o +0 -0
  168. data/pdf2json-0.52-source/goo/ImgWriter.o +0 -0
  169. data/pdf2json-0.52-source/goo/JpegWriter.o +0 -0
  170. data/pdf2json-0.52-source/goo/Makefile +72 -0
  171. data/pdf2json-0.52-source/goo/Makefile.dep +0 -0
  172. data/pdf2json-0.52-source/goo/Makefile.in +72 -0
  173. data/pdf2json-0.52-source/goo/PNGWriter.o +0 -0
  174. data/pdf2json-0.52-source/goo/gfile.cc +731 -0
  175. data/pdf2json-0.52-source/goo/gfile.h +138 -0
  176. data/pdf2json-0.52-source/goo/gfile.o +0 -0
  177. data/pdf2json-0.52-source/goo/gmem.cc +264 -0
  178. data/pdf2json-0.52-source/goo/gmem.h +79 -0
  179. data/pdf2json-0.52-source/goo/gmem.o +0 -0
  180. data/pdf2json-0.52-source/goo/gmempp.cc +32 -0
  181. data/pdf2json-0.52-source/goo/gmempp.o +0 -0
  182. data/pdf2json-0.52-source/goo/gtypes.h +29 -0
  183. data/pdf2json-0.52-source/goo/libGoo.a +0 -0
  184. data/pdf2json-0.52-source/goo/parseargs.c +190 -0
  185. data/pdf2json-0.52-source/goo/parseargs.h +71 -0
  186. data/pdf2json-0.52-source/goo/parseargs.o +0 -0
  187. data/pdf2json-0.52-source/goo/vms_directory.c +214 -0
  188. data/pdf2json-0.52-source/goo/vms_dirent.h +67 -0
  189. data/pdf2json-0.52-source/goo/vms_make.com +82 -0
  190. data/pdf2json-0.52-source/goo/vms_sys_dirent.h +54 -0
  191. data/pdf2json-0.52-source/goo/vms_unix_time.h +102 -0
  192. data/pdf2json-0.52-source/goo/vms_unix_times.c +42 -0
  193. data/pdf2json-0.52-source/goo/vms_unlink.c +22 -0
  194. data/pdf2json-0.52-source/ms_make.bat +199 -0
  195. data/pdf2json-0.52-source/splash/.DS_Store +0 -0
  196. data/pdf2json-0.52-source/splash/Makefile +103 -0
  197. data/pdf2json-0.52-source/splash/Makefile.dep +0 -0
  198. data/pdf2json-0.52-source/splash/Makefile.in +103 -0
  199. data/pdf2json-0.52-source/splash/Splash.cc +3310 -0
  200. data/pdf2json-0.52-source/splash/Splash.h +293 -0
  201. data/pdf2json-0.52-source/splash/Splash.o +0 -0
  202. data/pdf2json-0.52-source/splash/SplashBitmap.cc +188 -0
  203. data/pdf2json-0.52-source/splash/SplashBitmap.h +64 -0
  204. data/pdf2json-0.52-source/splash/SplashBitmap.o +0 -0
  205. data/pdf2json-0.52-source/splash/SplashClip.cc +382 -0
  206. data/pdf2json-0.52-source/splash/SplashClip.h +107 -0
  207. data/pdf2json-0.52-source/splash/SplashClip.o +0 -0
  208. data/pdf2json-0.52-source/splash/SplashErrorCodes.h +32 -0
  209. data/pdf2json-0.52-source/splash/SplashFTFont.cc +357 -0
  210. data/pdf2json-0.52-source/splash/SplashFTFont.h +58 -0
  211. data/pdf2json-0.52-source/splash/SplashFTFont.o +0 -0
  212. data/pdf2json-0.52-source/splash/SplashFTFontEngine.cc +179 -0
  213. data/pdf2json-0.52-source/splash/SplashFTFontEngine.h +65 -0
  214. data/pdf2json-0.52-source/splash/SplashFTFontEngine.o +0 -0
  215. data/pdf2json-0.52-source/splash/SplashFTFontFile.cc +114 -0
  216. data/pdf2json-0.52-source/splash/SplashFTFontFile.h +73 -0
  217. data/pdf2json-0.52-source/splash/SplashFTFontFile.o +0 -0
  218. data/pdf2json-0.52-source/splash/SplashFont.cc +176 -0
  219. data/pdf2json-0.52-source/splash/SplashFont.h +104 -0
  220. data/pdf2json-0.52-source/splash/SplashFont.o +0 -0
  221. data/pdf2json-0.52-source/splash/SplashFontEngine.cc +317 -0
  222. data/pdf2json-0.52-source/splash/SplashFontEngine.h +91 -0
  223. data/pdf2json-0.52-source/splash/SplashFontEngine.o +0 -0
  224. data/pdf2json-0.52-source/splash/SplashFontFile.cc +55 -0
  225. data/pdf2json-0.52-source/splash/SplashFontFile.h +60 -0
  226. data/pdf2json-0.52-source/splash/SplashFontFile.o +0 -0
  227. data/pdf2json-0.52-source/splash/SplashFontFileID.cc +23 -0
  228. data/pdf2json-0.52-source/splash/SplashFontFileID.h +30 -0
  229. data/pdf2json-0.52-source/splash/SplashFontFileID.o +0 -0
  230. data/pdf2json-0.52-source/splash/SplashGlyphBitmap.h +26 -0
  231. data/pdf2json-0.52-source/splash/SplashMath.h +89 -0
  232. data/pdf2json-0.52-source/splash/SplashPath.cc +184 -0
  233. data/pdf2json-0.52-source/splash/SplashPath.h +121 -0
  234. data/pdf2json-0.52-source/splash/SplashPath.o +0 -0
  235. data/pdf2json-0.52-source/splash/SplashPattern.cc +40 -0
  236. data/pdf2json-0.52-source/splash/SplashPattern.h +65 -0
  237. data/pdf2json-0.52-source/splash/SplashPattern.o +0 -0
  238. data/pdf2json-0.52-source/splash/SplashScreen.cc +383 -0
  239. data/pdf2json-0.52-source/splash/SplashScreen.h +56 -0
  240. data/pdf2json-0.52-source/splash/SplashScreen.o +0 -0
  241. data/pdf2json-0.52-source/splash/SplashState.cc +165 -0
  242. data/pdf2json-0.52-source/splash/SplashState.h +103 -0
  243. data/pdf2json-0.52-source/splash/SplashState.o +0 -0
  244. data/pdf2json-0.52-source/splash/SplashT1Font.cc +287 -0
  245. data/pdf2json-0.52-source/splash/SplashT1Font.h +57 -0
  246. data/pdf2json-0.52-source/splash/SplashT1Font.o +0 -0
  247. data/pdf2json-0.52-source/splash/SplashT1FontEngine.cc +124 -0
  248. data/pdf2json-0.52-source/splash/SplashT1FontEngine.h +53 -0
  249. data/pdf2json-0.52-source/splash/SplashT1FontEngine.o +0 -0
  250. data/pdf2json-0.52-source/splash/SplashT1FontFile.cc +97 -0
  251. data/pdf2json-0.52-source/splash/SplashT1FontFile.h +58 -0
  252. data/pdf2json-0.52-source/splash/SplashT1FontFile.o +0 -0
  253. data/pdf2json-0.52-source/splash/SplashTypes.h +132 -0
  254. data/pdf2json-0.52-source/splash/SplashXPath.cc +438 -0
  255. data/pdf2json-0.52-source/splash/SplashXPath.h +100 -0
  256. data/pdf2json-0.52-source/splash/SplashXPath.o +0 -0
  257. data/pdf2json-0.52-source/splash/SplashXPathScanner.cc +428 -0
  258. data/pdf2json-0.52-source/splash/SplashXPathScanner.h +87 -0
  259. data/pdf2json-0.52-source/splash/SplashXPathScanner.o +0 -0
  260. data/pdf2json-0.52-source/splash/libsplash.a +0 -0
  261. data/pdf2json-0.52-source/splash/vms_make.com +0 -0
  262. data/pdf2json-0.52-source/src/.DS_Store +0 -0
  263. data/pdf2json-0.52-source/src/GVector.h +101 -0
  264. data/pdf2json-0.52-source/src/ImgOutputDev.cc +1243 -0
  265. data/pdf2json-0.52-source/src/ImgOutputDev.h +307 -0
  266. data/pdf2json-0.52-source/src/ImgOutputDev.o +0 -0
  267. data/pdf2json-0.52-source/src/Makefile +68 -0
  268. data/pdf2json-0.52-source/src/Makefile.in +68 -0
  269. data/pdf2json-0.52-source/src/XmlFonts.cc +367 -0
  270. data/pdf2json-0.52-source/src/XmlFonts.h +91 -0
  271. data/pdf2json-0.52-source/src/XmlFonts.o +0 -0
  272. data/pdf2json-0.52-source/src/XmlLinks.cc +101 -0
  273. data/pdf2json-0.52-source/src/XmlLinks.h +54 -0
  274. data/pdf2json-0.52-source/src/XmlLinks.o +0 -0
  275. data/pdf2json-0.52-source/src/pdf2json +0 -0
  276. data/pdf2json-0.52-source/src/pdf2json.cc +343 -0
  277. data/pdf2json-0.52-source/src/pdf2json.o +0 -0
  278. data/pdf2json-0.52-source/src/pdf2xml.dtd +22 -0
  279. data/pdf2json-0.52-source/src/pdf2xmljson.dtd +9 -0
  280. data/pdf2json-0.52-source/xpdf/.DS_Store +0 -0
  281. data/pdf2json-0.52-source/xpdf/Annot.cc +1556 -0
  282. data/pdf2json-0.52-source/xpdf/Annot.h +142 -0
  283. data/pdf2json-0.52-source/xpdf/Annot.o +0 -0
  284. data/pdf2json-0.52-source/xpdf/Array.cc +73 -0
  285. data/pdf2json-0.52-source/xpdf/Array.h +58 -0
  286. data/pdf2json-0.52-source/xpdf/Array.o +0 -0
  287. data/pdf2json-0.52-source/xpdf/BuiltinFont.cc +65 -0
  288. data/pdf2json-0.52-source/xpdf/BuiltinFont.h +57 -0
  289. data/pdf2json-0.52-source/xpdf/BuiltinFont.o +0 -0
  290. data/pdf2json-0.52-source/xpdf/BuiltinFontTables.cc +4284 -0
  291. data/pdf2json-0.52-source/xpdf/BuiltinFontTables.h +23 -0
  292. data/pdf2json-0.52-source/xpdf/BuiltinFontTables.o +0 -0
  293. data/pdf2json-0.52-source/xpdf/CMap.cc +408 -0
  294. data/pdf2json-0.52-source/xpdf/CMap.h +102 -0
  295. data/pdf2json-0.52-source/xpdf/CMap.o +0 -0
  296. data/pdf2json-0.52-source/xpdf/Catalog.cc +374 -0
  297. data/pdf2json-0.52-source/xpdf/Catalog.h +97 -0
  298. data/pdf2json-0.52-source/xpdf/Catalog.o +0 -0
  299. data/pdf2json-0.52-source/xpdf/CharCodeToUnicode.cc +540 -0
  300. data/pdf2json-0.52-source/xpdf/CharCodeToUnicode.h +117 -0
  301. data/pdf2json-0.52-source/xpdf/CharCodeToUnicode.o +0 -0
  302. data/pdf2json-0.52-source/xpdf/CharTypes.h +24 -0
  303. data/pdf2json-0.52-source/xpdf/CompactFontTables.h +464 -0
  304. data/pdf2json-0.52-source/xpdf/CoreOutputDev.cc +61 -0
  305. data/pdf2json-0.52-source/xpdf/CoreOutputDev.h +61 -0
  306. data/pdf2json-0.52-source/xpdf/Decrypt.cc +776 -0
  307. data/pdf2json-0.52-source/xpdf/Decrypt.h +95 -0
  308. data/pdf2json-0.52-source/xpdf/Decrypt.o +0 -0
  309. data/pdf2json-0.52-source/xpdf/Dict.cc +95 -0
  310. data/pdf2json-0.52-source/xpdf/Dict.h +77 -0
  311. data/pdf2json-0.52-source/xpdf/Dict.o +0 -0
  312. data/pdf2json-0.52-source/xpdf/Error.cc +38 -0
  313. data/pdf2json-0.52-source/xpdf/Error.h +23 -0
  314. data/pdf2json-0.52-source/xpdf/Error.o +0 -0
  315. data/pdf2json-0.52-source/xpdf/ErrorCodes.h +36 -0
  316. data/pdf2json-0.52-source/xpdf/FontEncodingTables.cc +1824 -0
  317. data/pdf2json-0.52-source/xpdf/FontEncodingTables.h +20 -0
  318. data/pdf2json-0.52-source/xpdf/FontEncodingTables.o +0 -0
  319. data/pdf2json-0.52-source/xpdf/Function.cc +1573 -0
  320. data/pdf2json-0.52-source/xpdf/Function.h +229 -0
  321. data/pdf2json-0.52-source/xpdf/Function.o +0 -0
  322. data/pdf2json-0.52-source/xpdf/Gfx.cc +4187 -0
  323. data/pdf2json-0.52-source/xpdf/Gfx.h +312 -0
  324. data/pdf2json-0.52-source/xpdf/Gfx.o +0 -0
  325. data/pdf2json-0.52-source/xpdf/GfxFont.cc +1568 -0
  326. data/pdf2json-0.52-source/xpdf/GfxFont.h +320 -0
  327. data/pdf2json-0.52-source/xpdf/GfxFont.o +0 -0
  328. data/pdf2json-0.52-source/xpdf/GfxState.cc +4137 -0
  329. data/pdf2json-0.52-source/xpdf/GfxState.h +1244 -0
  330. data/pdf2json-0.52-source/xpdf/GfxState.o +0 -0
  331. data/pdf2json-0.52-source/xpdf/GlobalParams.cc +2924 -0
  332. data/pdf2json-0.52-source/xpdf/GlobalParams.cc.old +2908 -0
  333. data/pdf2json-0.52-source/xpdf/GlobalParams.h +466 -0
  334. data/pdf2json-0.52-source/xpdf/GlobalParams.h.old +463 -0
  335. data/pdf2json-0.52-source/xpdf/GlobalParams.o +0 -0
  336. data/pdf2json-0.52-source/xpdf/ImageOutputDev.cc +195 -0
  337. data/pdf2json-0.52-source/xpdf/ImageOutputDev.h +76 -0
  338. data/pdf2json-0.52-source/xpdf/ImageOutputDev.o +0 -0
  339. data/pdf2json-0.52-source/xpdf/JArithmeticDecoder.cc +322 -0
  340. data/pdf2json-0.52-source/xpdf/JArithmeticDecoder.h +109 -0
  341. data/pdf2json-0.52-source/xpdf/JArithmeticDecoder.o +0 -0
  342. data/pdf2json-0.52-source/xpdf/JBIG2Stream.cc +3413 -0
  343. data/pdf2json-0.52-source/xpdf/JBIG2Stream.h +145 -0
  344. data/pdf2json-0.52-source/xpdf/JBIG2Stream.o +0 -0
  345. data/pdf2json-0.52-source/xpdf/JPXStream.cc +3144 -0
  346. data/pdf2json-0.52-source/xpdf/JPXStream.h +351 -0
  347. data/pdf2json-0.52-source/xpdf/JPXStream.o +0 -0
  348. data/pdf2json-0.52-source/xpdf/Lexer.cc +485 -0
  349. data/pdf2json-0.52-source/xpdf/Lexer.h +80 -0
  350. data/pdf2json-0.52-source/xpdf/Lexer.o +0 -0
  351. data/pdf2json-0.52-source/xpdf/Link.cc +806 -0
  352. data/pdf2json-0.52-source/xpdf/Link.cc.old +784 -0
  353. data/pdf2json-0.52-source/xpdf/Link.h +415 -0
  354. data/pdf2json-0.52-source/xpdf/Link.h.old +369 -0
  355. data/pdf2json-0.52-source/xpdf/Link.o +0 -0
  356. data/pdf2json-0.52-source/xpdf/Makefile +232 -0
  357. data/pdf2json-0.52-source/xpdf/Makefile.dep +0 -0
  358. data/pdf2json-0.52-source/xpdf/Makefile.in +232 -0
  359. data/pdf2json-0.52-source/xpdf/NameToCharCode.cc +116 -0
  360. data/pdf2json-0.52-source/xpdf/NameToCharCode.h +42 -0
  361. data/pdf2json-0.52-source/xpdf/NameToCharCode.o +0 -0
  362. data/pdf2json-0.52-source/xpdf/NameToUnicodeTable.h +1097 -0
  363. data/pdf2json-0.52-source/xpdf/Object.cc +231 -0
  364. data/pdf2json-0.52-source/xpdf/Object.h +303 -0
  365. data/pdf2json-0.52-source/xpdf/Object.o +0 -0
  366. data/pdf2json-0.52-source/xpdf/Outline.cc +151 -0
  367. data/pdf2json-0.52-source/xpdf/Outline.h +76 -0
  368. data/pdf2json-0.52-source/xpdf/Outline.o +0 -0
  369. data/pdf2json-0.52-source/xpdf/OutputDev.cc +131 -0
  370. data/pdf2json-0.52-source/xpdf/OutputDev.h +253 -0
  371. data/pdf2json-0.52-source/xpdf/OutputDev.o +0 -0
  372. data/pdf2json-0.52-source/xpdf/PDFCore.cc +2044 -0
  373. data/pdf2json-0.52-source/xpdf/PDFCore.h +321 -0
  374. data/pdf2json-0.52-source/xpdf/PDFDoc.cc +404 -0
  375. data/pdf2json-0.52-source/xpdf/PDFDoc.h +183 -0
  376. data/pdf2json-0.52-source/xpdf/PDFDoc.o +0 -0
  377. data/pdf2json-0.52-source/xpdf/PDFDocEncoding.cc +44 -0
  378. data/pdf2json-0.52-source/xpdf/PDFDocEncoding.h +16 -0
  379. data/pdf2json-0.52-source/xpdf/PDFDocEncoding.o +0 -0
  380. data/pdf2json-0.52-source/xpdf/PSOutputDev.cc +6224 -0
  381. data/pdf2json-0.52-source/xpdf/PSOutputDev.h +395 -0
  382. data/pdf2json-0.52-source/xpdf/PSOutputDev.o +0 -0
  383. data/pdf2json-0.52-source/xpdf/PSTokenizer.cc +135 -0
  384. data/pdf2json-0.52-source/xpdf/PSTokenizer.h +41 -0
  385. data/pdf2json-0.52-source/xpdf/PSTokenizer.o +0 -0
  386. data/pdf2json-0.52-source/xpdf/Page.cc +454 -0
  387. data/pdf2json-0.52-source/xpdf/Page.h +187 -0
  388. data/pdf2json-0.52-source/xpdf/Page.o +0 -0
  389. data/pdf2json-0.52-source/xpdf/Parser.cc +227 -0
  390. data/pdf2json-0.52-source/xpdf/Parser.h +59 -0
  391. data/pdf2json-0.52-source/xpdf/Parser.o +0 -0
  392. data/pdf2json-0.52-source/xpdf/PreScanOutputDev.cc +257 -0
  393. data/pdf2json-0.52-source/xpdf/PreScanOutputDev.h +130 -0
  394. data/pdf2json-0.52-source/xpdf/PreScanOutputDev.o +0 -0
  395. data/pdf2json-0.52-source/xpdf/SecurityHandler.cc +390 -0
  396. data/pdf2json-0.52-source/xpdf/SecurityHandler.h +160 -0
  397. data/pdf2json-0.52-source/xpdf/SecurityHandler.o +0 -0
  398. data/pdf2json-0.52-source/xpdf/SplashOutputDev.cc +2845 -0
  399. data/pdf2json-0.52-source/xpdf/SplashOutputDev.h +247 -0
  400. data/pdf2json-0.52-source/xpdf/SplashOutputDev.o +0 -0
  401. data/pdf2json-0.52-source/xpdf/Stream-CCITT.h +459 -0
  402. data/pdf2json-0.52-source/xpdf/Stream.cc +4627 -0
  403. data/pdf2json-0.52-source/xpdf/Stream.h +858 -0
  404. data/pdf2json-0.52-source/xpdf/Stream.o +0 -0
  405. data/pdf2json-0.52-source/xpdf/TextOutputDev.cc +4090 -0
  406. data/pdf2json-0.52-source/xpdf/TextOutputDev.h +661 -0
  407. data/pdf2json-0.52-source/xpdf/TextOutputDev.o +0 -0
  408. data/pdf2json-0.52-source/xpdf/UTF8.h +56 -0
  409. data/pdf2json-0.52-source/xpdf/UnicodeMap.cc +302 -0
  410. data/pdf2json-0.52-source/xpdf/UnicodeMap.cc.old +293 -0
  411. data/pdf2json-0.52-source/xpdf/UnicodeMap.h +135 -0
  412. data/pdf2json-0.52-source/xpdf/UnicodeMap.h.old +123 -0
  413. data/pdf2json-0.52-source/xpdf/UnicodeMap.o +0 -0
  414. data/pdf2json-0.52-source/xpdf/UnicodeMapTables.h +361 -0
  415. data/pdf2json-0.52-source/xpdf/UnicodeTypeTable.cc +949 -0
  416. data/pdf2json-0.52-source/xpdf/UnicodeTypeTable.h +20 -0
  417. data/pdf2json-0.52-source/xpdf/UnicodeTypeTable.o +0 -0
  418. data/pdf2json-0.52-source/xpdf/XPDFApp.cc +447 -0
  419. data/pdf2json-0.52-source/xpdf/XPDFApp.h +114 -0
  420. data/pdf2json-0.52-source/xpdf/XPDFCore.cc +1655 -0
  421. data/pdf2json-0.52-source/xpdf/XPDFCore.h +251 -0
  422. data/pdf2json-0.52-source/xpdf/XPDFTree.cc +931 -0
  423. data/pdf2json-0.52-source/xpdf/XPDFTree.h +45 -0
  424. data/pdf2json-0.52-source/xpdf/XPDFTreeP.h +87 -0
  425. data/pdf2json-0.52-source/xpdf/XPDFViewer.cc +3488 -0
  426. data/pdf2json-0.52-source/xpdf/XPDFViewer.h +352 -0
  427. data/pdf2json-0.52-source/xpdf/XRef.cc +896 -0
  428. data/pdf2json-0.52-source/xpdf/XRef.h +133 -0
  429. data/pdf2json-0.52-source/xpdf/XRef.o +0 -0
  430. data/pdf2json-0.52-source/xpdf/XpdfPluginAPI.cc +262 -0
  431. data/pdf2json-0.52-source/xpdf/XpdfPluginAPI.h +341 -0
  432. data/pdf2json-0.52-source/xpdf/XpdfPluginAPI.o +0 -0
  433. data/pdf2json-0.52-source/xpdf/about-text.h +48 -0
  434. data/pdf2json-0.52-source/xpdf/about.xbm +6 -0
  435. data/pdf2json-0.52-source/xpdf/backArrow.xbm +6 -0
  436. data/pdf2json-0.52-source/xpdf/backArrowDis.xbm +6 -0
  437. data/pdf2json-0.52-source/xpdf/config.h +112 -0
  438. data/pdf2json-0.52-source/xpdf/dblLeftArrow.xbm +6 -0
  439. data/pdf2json-0.52-source/xpdf/dblLeftArrowDis.xbm +6 -0
  440. data/pdf2json-0.52-source/xpdf/dblRightArrow.xbm +6 -0
  441. data/pdf2json-0.52-source/xpdf/dblRightArrowDis.xbm +6 -0
  442. data/pdf2json-0.52-source/xpdf/find.xbm +6 -0
  443. data/pdf2json-0.52-source/xpdf/findDis.xbm +6 -0
  444. data/pdf2json-0.52-source/xpdf/forwardArrow.xbm +6 -0
  445. data/pdf2json-0.52-source/xpdf/forwardArrowDis.xbm +6 -0
  446. data/pdf2json-0.52-source/xpdf/leftArrow.xbm +5 -0
  447. data/pdf2json-0.52-source/xpdf/leftArrowDis.xbm +5 -0
  448. data/pdf2json-0.52-source/xpdf/libXpdf.a +0 -0
  449. data/pdf2json-0.52-source/xpdf/pdffonts +0 -0
  450. data/pdf2json-0.52-source/xpdf/pdffonts.cc +298 -0
  451. data/pdf2json-0.52-source/xpdf/pdffonts.o +0 -0
  452. data/pdf2json-0.52-source/xpdf/pdfimages +0 -0
  453. data/pdf2json-0.52-source/xpdf/pdfimages.cc +155 -0
  454. data/pdf2json-0.52-source/xpdf/pdfimages.o +0 -0
  455. data/pdf2json-0.52-source/xpdf/pdfinfo +0 -0
  456. data/pdf2json-0.52-source/xpdf/pdfinfo.cc +387 -0
  457. data/pdf2json-0.52-source/xpdf/pdfinfo.o +0 -0
  458. data/pdf2json-0.52-source/xpdf/pdftoppm.cc +203 -0
  459. data/pdf2json-0.52-source/xpdf/pdftops +0 -0
  460. data/pdf2json-0.52-source/xpdf/pdftops.cc +344 -0
  461. data/pdf2json-0.52-source/xpdf/pdftops.o +0 -0
  462. data/pdf2json-0.52-source/xpdf/pdftotext +0 -0
  463. data/pdf2json-0.52-source/xpdf/pdftotext.cc +333 -0
  464. data/pdf2json-0.52-source/xpdf/pdftotext.o +0 -0
  465. data/pdf2json-0.52-source/xpdf/print.xbm +6 -0
  466. data/pdf2json-0.52-source/xpdf/printDis.xbm +6 -0
  467. data/pdf2json-0.52-source/xpdf/rightArrow.xbm +5 -0
  468. data/pdf2json-0.52-source/xpdf/rightArrowDis.xbm +5 -0
  469. data/pdf2json-0.52-source/xpdf/vms_make.com +129 -0
  470. data/pdf2json-0.52-source/xpdf/xpdf.cc +344 -0
  471. data/pdf2json-0.52-source/xpdf/xpdfIcon.xpm +62 -0
  472. data/pdf2json.gemspec +29 -0
  473. metadata +518 -0
@@ -0,0 +1,858 @@
1
+ //========================================================================
2
+ //
3
+ // Stream.h
4
+ //
5
+ // Copyright 1996-2003 Glyph & Cog, LLC
6
+ //
7
+ //========================================================================
8
+
9
+ #ifndef STREAM_H
10
+ #define STREAM_H
11
+
12
+ #include <aconf.h>
13
+
14
+ #ifdef USE_GCC_PRAGMAS
15
+ #pragma interface
16
+ #endif
17
+
18
+ #include <stdio.h>
19
+ #include "gtypes.h"
20
+ #include "Object.h"
21
+
22
+ class BaseStream;
23
+
24
+ //------------------------------------------------------------------------
25
+
26
+ enum StreamKind {
27
+ strFile,
28
+ strASCIIHex,
29
+ strASCII85,
30
+ strLZW,
31
+ strRunLength,
32
+ strCCITTFax,
33
+ strDCT,
34
+ strFlate,
35
+ strJBIG2,
36
+ strJPX,
37
+ strWeird // internal-use stream types
38
+ };
39
+
40
+ enum StreamColorSpaceMode {
41
+ streamCSNone,
42
+ streamCSDeviceGray,
43
+ streamCSDeviceRGB,
44
+ streamCSDeviceCMYK
45
+ };
46
+
47
+ //------------------------------------------------------------------------
48
+
49
+ // This is in Stream.h instead of Decrypt.h to avoid really annoying
50
+ // include file dependency loops.
51
+ enum CryptAlgorithm {
52
+ cryptRC4,
53
+ cryptAES
54
+ };
55
+
56
+ //------------------------------------------------------------------------
57
+ // Stream (base class)
58
+ //------------------------------------------------------------------------
59
+
60
+ class Stream {
61
+ public:
62
+
63
+ // Constructor.
64
+ Stream();
65
+
66
+ // Destructor.
67
+ virtual ~Stream();
68
+
69
+ // Reference counting.
70
+ int incRef() { return ++ref; }
71
+ int decRef() { return --ref; }
72
+
73
+ // Get kind of stream.
74
+ virtual StreamKind getKind() = 0;
75
+
76
+ // Reset stream to beginning.
77
+ virtual void reset() = 0;
78
+
79
+ // Close down the stream.
80
+ virtual void close();
81
+
82
+ // Get next char from stream.
83
+ virtual int getChar() = 0;
84
+
85
+ // Peek at next char in stream.
86
+ virtual int lookChar() = 0;
87
+
88
+ // Get next char from stream without using the predictor.
89
+ // This is only used by StreamPredictor.
90
+ virtual int getRawChar();
91
+
92
+ // Get next line from stream.
93
+ virtual char *getLine(char *buf, int size);
94
+
95
+ // Get current position in file.
96
+ virtual int getPos() = 0;
97
+
98
+ // Go to a position in the stream. If <dir> is negative, the
99
+ // position is from the end of the file; otherwise the position is
100
+ // from the start of the file.
101
+ virtual void setPos(Guint pos, int dir = 0) = 0;
102
+
103
+ // Get PostScript command for the filter(s).
104
+ virtual GString *getPSFilter(int psLevel, char *indent);
105
+
106
+ // Does this stream type potentially contain non-printable chars?
107
+ virtual GBool isBinary(GBool last = gTrue) = 0;
108
+
109
+ // Get the BaseStream of this stream.
110
+ virtual BaseStream *getBaseStream() = 0;
111
+
112
+ // Get the stream after the last decoder (this may be a BaseStream
113
+ // or a DecryptStream).
114
+ virtual Stream *getUndecodedStream() = 0;
115
+
116
+ // Get the dictionary associated with this stream.
117
+ virtual Dict *getDict() = 0;
118
+
119
+ // Is this an encoding filter?
120
+ virtual GBool isEncoder() { return gFalse; }
121
+
122
+ // Get image parameters which are defined by the stream contents.
123
+ virtual void getImageParams(int *bitsPerComponent,
124
+ StreamColorSpaceMode *csMode) {}
125
+
126
+ // Return the next stream in the "stack".
127
+ virtual Stream *getNextStream() { return NULL; }
128
+
129
+ // Add filters to this stream according to the parameters in <dict>.
130
+ // Returns the new stream.
131
+ Stream *addFilters(Object *dict);
132
+
133
+ private:
134
+
135
+ Stream *makeFilter(char *name, Stream *str, Object *params);
136
+
137
+ int ref; // reference count
138
+ };
139
+
140
+ //------------------------------------------------------------------------
141
+ // BaseStream
142
+ //
143
+ // This is the base class for all streams that read directly from a file.
144
+ //------------------------------------------------------------------------
145
+
146
+ class BaseStream: public Stream {
147
+ public:
148
+
149
+ BaseStream(Object *dictA);
150
+ virtual ~BaseStream();
151
+ virtual Stream *makeSubStream(Guint start, GBool limited,
152
+ Guint length, Object *dict) = 0;
153
+ virtual void setPos(Guint pos, int dir = 0) = 0;
154
+ virtual GBool isBinary(GBool last = gTrue) { return last; }
155
+ virtual BaseStream *getBaseStream() { return this; }
156
+ virtual Stream *getUndecodedStream() { return this; }
157
+ virtual Dict *getDict() { return dict.getDict(); }
158
+ virtual GString *getFileName() { return NULL; }
159
+
160
+ // Get/set position of first byte of stream within the file.
161
+ virtual Guint getStart() = 0;
162
+ virtual void moveStart(int delta) = 0;
163
+
164
+ private:
165
+
166
+ Object dict;
167
+ };
168
+
169
+ //------------------------------------------------------------------------
170
+ // FilterStream
171
+ //
172
+ // This is the base class for all streams that filter another stream.
173
+ //------------------------------------------------------------------------
174
+
175
+ class FilterStream: public Stream {
176
+ public:
177
+
178
+ FilterStream(Stream *strA);
179
+ virtual ~FilterStream();
180
+ virtual void close();
181
+ virtual int getPos() { return str->getPos(); }
182
+ virtual void setPos(Guint pos, int dir = 0);
183
+ virtual BaseStream *getBaseStream() { return str->getBaseStream(); }
184
+ virtual Stream *getUndecodedStream() { return str->getUndecodedStream(); }
185
+ virtual Dict *getDict() { return str->getDict(); }
186
+ virtual Stream *getNextStream() { return str; }
187
+
188
+ protected:
189
+
190
+ Stream *str;
191
+ };
192
+
193
+ //------------------------------------------------------------------------
194
+ // ImageStream
195
+ //------------------------------------------------------------------------
196
+
197
+ class ImageStream {
198
+ public:
199
+
200
+ // Create an image stream object for an image with the specified
201
+ // parameters. Note that these are the actual image parameters,
202
+ // which may be different from the predictor parameters.
203
+ ImageStream(Stream *strA, int widthA, int nCompsA, int nBitsA);
204
+
205
+ ~ImageStream();
206
+
207
+ // Reset the stream.
208
+ void reset();
209
+
210
+ // Gets the next pixel from the stream. <pix> should be able to hold
211
+ // at least nComps elements. Returns false at end of file.
212
+ GBool getPixel(Guchar *pix);
213
+
214
+ // Returns a pointer to the next line of pixels. Returns NULL at
215
+ // end of file.
216
+ Guchar *getLine();
217
+
218
+ // Skip an entire line from the image.
219
+ void skipLine();
220
+
221
+ private:
222
+
223
+ Stream *str; // base stream
224
+ int width; // pixels per line
225
+ int nComps; // components per pixel
226
+ int nBits; // bits per component
227
+ int nVals; // components per line
228
+ Guchar *imgLine; // line buffer
229
+ int imgIdx; // current index in imgLine
230
+ };
231
+
232
+ //------------------------------------------------------------------------
233
+ // StreamPredictor
234
+ //------------------------------------------------------------------------
235
+
236
+ class StreamPredictor {
237
+ public:
238
+
239
+ // Create a predictor object. Note that the parameters are for the
240
+ // predictor, and may not match the actual image parameters.
241
+ StreamPredictor(Stream *strA, int predictorA,
242
+ int widthA, int nCompsA, int nBitsA);
243
+
244
+ ~StreamPredictor();
245
+
246
+ GBool isOk() { return ok; }
247
+
248
+ int lookChar();
249
+ int getChar();
250
+
251
+ private:
252
+
253
+ GBool getNextLine();
254
+
255
+ Stream *str; // base stream
256
+ int predictor; // predictor
257
+ int width; // pixels per line
258
+ int nComps; // components per pixel
259
+ int nBits; // bits per component
260
+ int nVals; // components per line
261
+ int pixBytes; // bytes per pixel
262
+ int rowBytes; // bytes per line
263
+ Guchar *predLine; // line buffer
264
+ int predIdx; // current index in predLine
265
+ GBool ok;
266
+ };
267
+
268
+ //------------------------------------------------------------------------
269
+ // FileStream
270
+ //------------------------------------------------------------------------
271
+
272
+ #define fileStreamBufSize 256
273
+
274
+ class FileStream: public BaseStream {
275
+ public:
276
+
277
+ FileStream(FILE *fA, Guint startA, GBool limitedA,
278
+ Guint lengthA, Object *dictA);
279
+ virtual ~FileStream();
280
+ virtual Stream *makeSubStream(Guint startA, GBool limitedA,
281
+ Guint lengthA, Object *dictA);
282
+ virtual StreamKind getKind() { return strFile; }
283
+ virtual void reset();
284
+ virtual void close();
285
+ virtual int getChar()
286
+ { return (bufPtr >= bufEnd && !fillBuf()) ? EOF : (*bufPtr++ & 0xff); }
287
+ virtual int lookChar()
288
+ { return (bufPtr >= bufEnd && !fillBuf()) ? EOF : (*bufPtr & 0xff); }
289
+ virtual int getPos() { return bufPos + (bufPtr - buf); }
290
+ virtual void setPos(Guint pos, int dir = 0);
291
+ virtual Guint getStart() { return start; }
292
+ virtual void moveStart(int delta);
293
+
294
+ private:
295
+
296
+ GBool fillBuf();
297
+
298
+ FILE *f;
299
+ Guint start;
300
+ GBool limited;
301
+ Guint length;
302
+ char buf[fileStreamBufSize];
303
+ char *bufPtr;
304
+ char *bufEnd;
305
+ Guint bufPos;
306
+ int savePos;
307
+ GBool saved;
308
+ };
309
+
310
+ //------------------------------------------------------------------------
311
+ // MemStream
312
+ //------------------------------------------------------------------------
313
+
314
+ class MemStream: public BaseStream {
315
+ public:
316
+
317
+ MemStream(char *bufA, Guint startA, Guint lengthA, Object *dictA);
318
+ virtual ~MemStream();
319
+ virtual Stream *makeSubStream(Guint start, GBool limited,
320
+ Guint lengthA, Object *dictA);
321
+ virtual StreamKind getKind() { return strWeird; }
322
+ virtual void reset();
323
+ virtual void close();
324
+ virtual int getChar()
325
+ { return (bufPtr < bufEnd) ? (*bufPtr++ & 0xff) : EOF; }
326
+ virtual int lookChar()
327
+ { return (bufPtr < bufEnd) ? (*bufPtr & 0xff) : EOF; }
328
+ virtual int getPos() { return (int)(bufPtr - buf); }
329
+ virtual void setPos(Guint pos, int dir = 0);
330
+ virtual Guint getStart() { return start; }
331
+ virtual void moveStart(int delta);
332
+
333
+ private:
334
+
335
+ char *buf;
336
+ Guint start;
337
+ Guint length;
338
+ char *bufEnd;
339
+ char *bufPtr;
340
+ GBool needFree;
341
+ };
342
+
343
+ //------------------------------------------------------------------------
344
+ // EmbedStream
345
+ //
346
+ // This is a special stream type used for embedded streams (inline
347
+ // images). It reads directly from the base stream -- after the
348
+ // EmbedStream is deleted, reads from the base stream will proceed where
349
+ // the BaseStream left off. Note that this is very different behavior
350
+ // that creating a new FileStream (using makeSubStream).
351
+ //------------------------------------------------------------------------
352
+
353
+ class EmbedStream: public BaseStream {
354
+ public:
355
+
356
+ EmbedStream(Stream *strA, Object *dictA, GBool limitedA, Guint lengthA);
357
+ virtual ~EmbedStream();
358
+ virtual Stream *makeSubStream(Guint start, GBool limitedA,
359
+ Guint lengthA, Object *dictA);
360
+ virtual StreamKind getKind() { return str->getKind(); }
361
+ virtual void reset() {}
362
+ virtual int getChar();
363
+ virtual int lookChar();
364
+ virtual int getPos() { return str->getPos(); }
365
+ virtual void setPos(Guint pos, int dir = 0);
366
+ virtual Guint getStart();
367
+ virtual void moveStart(int delta);
368
+
369
+ private:
370
+
371
+ Stream *str;
372
+ GBool limited;
373
+ Guint length;
374
+ };
375
+
376
+ //------------------------------------------------------------------------
377
+ // ASCIIHexStream
378
+ //------------------------------------------------------------------------
379
+
380
+ class ASCIIHexStream: public FilterStream {
381
+ public:
382
+
383
+ ASCIIHexStream(Stream *strA);
384
+ virtual ~ASCIIHexStream();
385
+ virtual StreamKind getKind() { return strASCIIHex; }
386
+ virtual void reset();
387
+ virtual int getChar()
388
+ { int c = lookChar(); buf = EOF; return c; }
389
+ virtual int lookChar();
390
+ virtual GString *getPSFilter(int psLevel, char *indent);
391
+ virtual GBool isBinary(GBool last = gTrue);
392
+
393
+ private:
394
+
395
+ int buf;
396
+ GBool eof;
397
+ };
398
+
399
+ //------------------------------------------------------------------------
400
+ // ASCII85Stream
401
+ //------------------------------------------------------------------------
402
+
403
+ class ASCII85Stream: public FilterStream {
404
+ public:
405
+
406
+ ASCII85Stream(Stream *strA);
407
+ virtual ~ASCII85Stream();
408
+ virtual StreamKind getKind() { return strASCII85; }
409
+ virtual void reset();
410
+ virtual int getChar()
411
+ { int ch = lookChar(); ++index; return ch; }
412
+ virtual int lookChar();
413
+ virtual GString *getPSFilter(int psLevel, char *indent);
414
+ virtual GBool isBinary(GBool last = gTrue);
415
+
416
+ private:
417
+
418
+ int c[5];
419
+ int b[4];
420
+ int index, n;
421
+ GBool eof;
422
+ };
423
+
424
+ //------------------------------------------------------------------------
425
+ // LZWStream
426
+ //------------------------------------------------------------------------
427
+
428
+ class LZWStream: public FilterStream {
429
+ public:
430
+
431
+ LZWStream(Stream *strA, int predictor, int columns, int colors,
432
+ int bits, int earlyA);
433
+ virtual ~LZWStream();
434
+ virtual StreamKind getKind() { return strLZW; }
435
+ virtual void reset();
436
+ virtual int getChar();
437
+ virtual int lookChar();
438
+ virtual int getRawChar();
439
+ virtual GString *getPSFilter(int psLevel, char *indent);
440
+ virtual GBool isBinary(GBool last = gTrue);
441
+
442
+ private:
443
+
444
+ StreamPredictor *pred; // predictor
445
+ int early; // early parameter
446
+ GBool eof; // true if at eof
447
+ int inputBuf; // input buffer
448
+ int inputBits; // number of bits in input buffer
449
+ struct { // decoding table
450
+ int length;
451
+ int head;
452
+ Guchar tail;
453
+ } table[4097];
454
+ int nextCode; // next code to be used
455
+ int nextBits; // number of bits in next code word
456
+ int prevCode; // previous code used in stream
457
+ int newChar; // next char to be added to table
458
+ Guchar seqBuf[4097]; // buffer for current sequence
459
+ int seqLength; // length of current sequence
460
+ int seqIndex; // index into current sequence
461
+ GBool first; // first code after a table clear
462
+
463
+ GBool processNextCode();
464
+ void clearTable();
465
+ int getCode();
466
+ };
467
+
468
+ //------------------------------------------------------------------------
469
+ // RunLengthStream
470
+ //------------------------------------------------------------------------
471
+
472
+ class RunLengthStream: public FilterStream {
473
+ public:
474
+
475
+ RunLengthStream(Stream *strA);
476
+ virtual ~RunLengthStream();
477
+ virtual StreamKind getKind() { return strRunLength; }
478
+ virtual void reset();
479
+ virtual int getChar()
480
+ { return (bufPtr >= bufEnd && !fillBuf()) ? EOF : (*bufPtr++ & 0xff); }
481
+ virtual int lookChar()
482
+ { return (bufPtr >= bufEnd && !fillBuf()) ? EOF : (*bufPtr & 0xff); }
483
+ virtual GString *getPSFilter(int psLevel, char *indent);
484
+ virtual GBool isBinary(GBool last = gTrue);
485
+
486
+ private:
487
+
488
+ char buf[128]; // buffer
489
+ char *bufPtr; // next char to read
490
+ char *bufEnd; // end of buffer
491
+ GBool eof;
492
+
493
+ GBool fillBuf();
494
+ };
495
+
496
+ //------------------------------------------------------------------------
497
+ // CCITTFaxStream
498
+ //------------------------------------------------------------------------
499
+
500
+ struct CCITTCodeTable;
501
+
502
+ class CCITTFaxStream: public FilterStream {
503
+ public:
504
+
505
+ CCITTFaxStream(Stream *strA, int encodingA, GBool endOfLineA,
506
+ GBool byteAlignA, int columnsA, int rowsA,
507
+ GBool endOfBlockA, GBool blackA);
508
+ virtual ~CCITTFaxStream();
509
+ virtual StreamKind getKind() { return strCCITTFax; }
510
+ virtual void reset();
511
+ virtual int getChar()
512
+ { int c = lookChar(); buf = EOF; return c; }
513
+ virtual int lookChar();
514
+ virtual GString *getPSFilter(int psLevel, char *indent);
515
+ virtual GBool isBinary(GBool last = gTrue);
516
+
517
+ private:
518
+
519
+ int encoding; // 'K' parameter
520
+ GBool endOfLine; // 'EndOfLine' parameter
521
+ GBool byteAlign; // 'EncodedByteAlign' parameter
522
+ int columns; // 'Columns' parameter
523
+ int rows; // 'Rows' parameter
524
+ GBool endOfBlock; // 'EndOfBlock' parameter
525
+ GBool black; // 'BlackIs1' parameter
526
+ GBool eof; // true if at eof
527
+ GBool nextLine2D; // true if next line uses 2D encoding
528
+ int row; // current row
529
+ int inputBuf; // input buffer
530
+ int inputBits; // number of bits in input buffer
531
+ short *refLine; // reference line changing elements
532
+ int b1; // index into refLine
533
+ short *codingLine; // coding line changing elements
534
+ int a0; // index into codingLine
535
+ int outputBits; // remaining ouput bits
536
+ int buf; // character buffer
537
+
538
+ short getTwoDimCode();
539
+ short getWhiteCode();
540
+ short getBlackCode();
541
+ short lookBits(int n);
542
+ void eatBits(int n) { if ((inputBits -= n) < 0) inputBits = 0; }
543
+ };
544
+
545
+ //------------------------------------------------------------------------
546
+ // DCTStream
547
+ //------------------------------------------------------------------------
548
+
549
+ // DCT component info
550
+ struct DCTCompInfo {
551
+ int id; // component ID
552
+ int hSample, vSample; // horiz/vert sampling resolutions
553
+ int quantTable; // quantization table number
554
+ int prevDC; // DC coefficient accumulator
555
+ };
556
+
557
+ struct DCTScanInfo {
558
+ GBool comp[4]; // comp[i] is set if component i is
559
+ // included in this scan
560
+ int numComps; // number of components in the scan
561
+ int dcHuffTable[4]; // DC Huffman table numbers
562
+ int acHuffTable[4]; // AC Huffman table numbers
563
+ int firstCoeff, lastCoeff; // first and last DCT coefficient
564
+ int ah, al; // successive approximation parameters
565
+ };
566
+
567
+ // DCT Huffman decoding table
568
+ struct DCTHuffTable {
569
+ Guchar firstSym[17]; // first symbol for this bit length
570
+ Gushort firstCode[17]; // first code for this bit length
571
+ Gushort numCodes[17]; // number of codes of this bit length
572
+ Guchar sym[256]; // symbols
573
+ };
574
+
575
+ class DCTStream: public FilterStream {
576
+ public:
577
+
578
+ DCTStream(Stream *strA, int colorXformA);
579
+ virtual ~DCTStream();
580
+ virtual StreamKind getKind() { return strDCT; }
581
+ virtual void reset();
582
+ virtual void close();
583
+ virtual int getChar();
584
+ virtual int lookChar();
585
+ virtual GString *getPSFilter(int psLevel, char *indent);
586
+ virtual GBool isBinary(GBool last = gTrue);
587
+ Stream *getRawStream() { return str; }
588
+
589
+ private:
590
+
591
+ GBool progressive; // set if in progressive mode
592
+ GBool interleaved; // set if in interleaved mode
593
+ int width, height; // image size
594
+ int mcuWidth, mcuHeight; // size of min coding unit, in data units
595
+ int bufWidth, bufHeight; // frameBuf size
596
+ DCTCompInfo compInfo[4]; // info for each component
597
+ DCTScanInfo scanInfo; // info for the current scan
598
+ int numComps; // number of components in image
599
+ int colorXform; // color transform: -1 = unspecified
600
+ // 0 = none
601
+ // 1 = YUV/YUVK -> RGB/CMYK
602
+ GBool gotJFIFMarker; // set if APP0 JFIF marker was present
603
+ GBool gotAdobeMarker; // set if APP14 Adobe marker was present
604
+ int restartInterval; // restart interval, in MCUs
605
+ Gushort quantTables[4][64]; // quantization tables
606
+ int numQuantTables; // number of quantization tables
607
+ DCTHuffTable dcHuffTables[4]; // DC Huffman tables
608
+ DCTHuffTable acHuffTables[4]; // AC Huffman tables
609
+ int numDCHuffTables; // number of DC Huffman tables
610
+ int numACHuffTables; // number of AC Huffman tables
611
+ Guchar *rowBuf[4][32]; // buffer for one MCU (non-progressive mode)
612
+ int *frameBuf[4]; // buffer for frame (progressive mode)
613
+ int comp, x, y, dy; // current position within image/MCU
614
+ int restartCtr; // MCUs left until restart
615
+ int restartMarker; // next restart marker
616
+ int eobRun; // number of EOBs left in the current run
617
+ int inputBuf; // input buffer for variable length codes
618
+ int inputBits; // number of valid bits in input buffer
619
+
620
+ void restart();
621
+ GBool readMCURow();
622
+ void readScan();
623
+ GBool readDataUnit(DCTHuffTable *dcHuffTable,
624
+ DCTHuffTable *acHuffTable,
625
+ int *prevDC, int data[64]);
626
+ GBool readProgressiveDataUnit(DCTHuffTable *dcHuffTable,
627
+ DCTHuffTable *acHuffTable,
628
+ int *prevDC, int data[64]);
629
+ void decodeImage();
630
+ void transformDataUnit(Gushort *quantTable,
631
+ int dataIn[64], Guchar dataOut[64]);
632
+ int readHuffSym(DCTHuffTable *table);
633
+ int readAmp(int size);
634
+ int readBit();
635
+ GBool readHeader();
636
+ GBool readBaselineSOF();
637
+ GBool readProgressiveSOF();
638
+ GBool readScanInfo();
639
+ GBool readQuantTables();
640
+ GBool readHuffmanTables();
641
+ GBool readRestartInterval();
642
+ GBool readJFIFMarker();
643
+ GBool readAdobeMarker();
644
+ GBool readTrailer();
645
+ int readMarker();
646
+ int read16();
647
+ };
648
+
649
+ //------------------------------------------------------------------------
650
+ // FlateStream
651
+ //------------------------------------------------------------------------
652
+
653
+ #define flateWindow 32768 // buffer size
654
+ #define flateMask (flateWindow-1)
655
+ #define flateMaxHuffman 15 // max Huffman code length
656
+ #define flateMaxCodeLenCodes 19 // max # code length codes
657
+ #define flateMaxLitCodes 288 // max # literal codes
658
+ #define flateMaxDistCodes 30 // max # distance codes
659
+
660
+ // Huffman code table entry
661
+ struct FlateCode {
662
+ Gushort len; // code length, in bits
663
+ Gushort val; // value represented by this code
664
+ };
665
+
666
+ struct FlateHuffmanTab {
667
+ FlateCode *codes;
668
+ int maxLen;
669
+ };
670
+
671
+ // Decoding info for length and distance code words
672
+ struct FlateDecode {
673
+ int bits; // # extra bits
674
+ int first; // first length/distance
675
+ };
676
+
677
+ class FlateStream: public FilterStream {
678
+ public:
679
+
680
+ FlateStream(Stream *strA, int predictor, int columns,
681
+ int colors, int bits);
682
+ virtual ~FlateStream();
683
+ virtual StreamKind getKind() { return strFlate; }
684
+ virtual void reset();
685
+ virtual int getChar();
686
+ virtual int lookChar();
687
+ virtual int getRawChar();
688
+ virtual GString *getPSFilter(int psLevel, char *indent);
689
+ virtual GBool isBinary(GBool last = gTrue);
690
+
691
+ private:
692
+
693
+ StreamPredictor *pred; // predictor
694
+ Guchar buf[flateWindow]; // output data buffer
695
+ int index; // current index into output buffer
696
+ int remain; // number valid bytes in output buffer
697
+ int codeBuf; // input buffer
698
+ int codeSize; // number of bits in input buffer
699
+ int // literal and distance code lengths
700
+ codeLengths[flateMaxLitCodes + flateMaxDistCodes];
701
+ FlateHuffmanTab litCodeTab; // literal code table
702
+ FlateHuffmanTab distCodeTab; // distance code table
703
+ GBool compressedBlock; // set if reading a compressed block
704
+ int blockLen; // remaining length of uncompressed block
705
+ GBool endOfBlock; // set when end of block is reached
706
+ GBool eof; // set when end of stream is reached
707
+
708
+ static int // code length code reordering
709
+ codeLenCodeMap[flateMaxCodeLenCodes];
710
+ static FlateDecode // length decoding info
711
+ lengthDecode[flateMaxLitCodes-257];
712
+ static FlateDecode // distance decoding info
713
+ distDecode[flateMaxDistCodes];
714
+ static FlateHuffmanTab // fixed literal code table
715
+ fixedLitCodeTab;
716
+ static FlateHuffmanTab // fixed distance code table
717
+ fixedDistCodeTab;
718
+
719
+ void readSome();
720
+ GBool startBlock();
721
+ void loadFixedCodes();
722
+ GBool readDynamicCodes();
723
+ void compHuffmanCodes(int *lengths, int n, FlateHuffmanTab *tab);
724
+ int getHuffmanCodeWord(FlateHuffmanTab *tab);
725
+ int getCodeWord(int bits);
726
+ };
727
+
728
+ //------------------------------------------------------------------------
729
+ // EOFStream
730
+ //------------------------------------------------------------------------
731
+
732
+ class EOFStream: public FilterStream {
733
+ public:
734
+
735
+ EOFStream(Stream *strA);
736
+ virtual ~EOFStream();
737
+ virtual StreamKind getKind() { return strWeird; }
738
+ virtual void reset() {}
739
+ virtual int getChar() { return EOF; }
740
+ virtual int lookChar() { return EOF; }
741
+ virtual GString *getPSFilter(int psLevel, char *indent) { return NULL; }
742
+ virtual GBool isBinary(GBool last = gTrue) { return gFalse; }
743
+ };
744
+
745
+ //------------------------------------------------------------------------
746
+ // FixedLengthEncoder
747
+ //------------------------------------------------------------------------
748
+
749
+ class FixedLengthEncoder: public FilterStream {
750
+ public:
751
+
752
+ FixedLengthEncoder(Stream *strA, int lengthA);
753
+ ~FixedLengthEncoder();
754
+ virtual StreamKind getKind() { return strWeird; }
755
+ virtual void reset();
756
+ virtual int getChar();
757
+ virtual int lookChar();
758
+ virtual GString *getPSFilter(int psLevel, char *indent) { return NULL; }
759
+ virtual GBool isBinary(GBool last = gTrue);
760
+ virtual GBool isEncoder() { return gTrue; }
761
+
762
+ private:
763
+
764
+ int length;
765
+ int count;
766
+ };
767
+
768
+ //------------------------------------------------------------------------
769
+ // ASCIIHexEncoder
770
+ //------------------------------------------------------------------------
771
+
772
+ class ASCIIHexEncoder: public FilterStream {
773
+ public:
774
+
775
+ ASCIIHexEncoder(Stream *strA);
776
+ virtual ~ASCIIHexEncoder();
777
+ virtual StreamKind getKind() { return strWeird; }
778
+ virtual void reset();
779
+ virtual int getChar()
780
+ { return (bufPtr >= bufEnd && !fillBuf()) ? EOF : (*bufPtr++ & 0xff); }
781
+ virtual int lookChar()
782
+ { return (bufPtr >= bufEnd && !fillBuf()) ? EOF : (*bufPtr & 0xff); }
783
+ virtual GString *getPSFilter(int psLevel, char *indent) { return NULL; }
784
+ virtual GBool isBinary(GBool last = gTrue) { return gFalse; }
785
+ virtual GBool isEncoder() { return gTrue; }
786
+
787
+ private:
788
+
789
+ char buf[4];
790
+ char *bufPtr;
791
+ char *bufEnd;
792
+ int lineLen;
793
+ GBool eof;
794
+
795
+ GBool fillBuf();
796
+ };
797
+
798
+ //------------------------------------------------------------------------
799
+ // ASCII85Encoder
800
+ //------------------------------------------------------------------------
801
+
802
+ class ASCII85Encoder: public FilterStream {
803
+ public:
804
+
805
+ ASCII85Encoder(Stream *strA);
806
+ virtual ~ASCII85Encoder();
807
+ virtual StreamKind getKind() { return strWeird; }
808
+ virtual void reset();
809
+ virtual int getChar()
810
+ { return (bufPtr >= bufEnd && !fillBuf()) ? EOF : (*bufPtr++ & 0xff); }
811
+ virtual int lookChar()
812
+ { return (bufPtr >= bufEnd && !fillBuf()) ? EOF : (*bufPtr & 0xff); }
813
+ virtual GString *getPSFilter(int psLevel, char *indent) { return NULL; }
814
+ virtual GBool isBinary(GBool last = gTrue) { return gFalse; }
815
+ virtual GBool isEncoder() { return gTrue; }
816
+
817
+ private:
818
+
819
+ char buf[8];
820
+ char *bufPtr;
821
+ char *bufEnd;
822
+ int lineLen;
823
+ GBool eof;
824
+
825
+ GBool fillBuf();
826
+ };
827
+
828
+ //------------------------------------------------------------------------
829
+ // RunLengthEncoder
830
+ //------------------------------------------------------------------------
831
+
832
+ class RunLengthEncoder: public FilterStream {
833
+ public:
834
+
835
+ RunLengthEncoder(Stream *strA);
836
+ virtual ~RunLengthEncoder();
837
+ virtual StreamKind getKind() { return strWeird; }
838
+ virtual void reset();
839
+ virtual int getChar()
840
+ { return (bufPtr >= bufEnd && !fillBuf()) ? EOF : (*bufPtr++ & 0xff); }
841
+ virtual int lookChar()
842
+ { return (bufPtr >= bufEnd && !fillBuf()) ? EOF : (*bufPtr & 0xff); }
843
+ virtual GString *getPSFilter(int psLevel, char *indent) { return NULL; }
844
+ virtual GBool isBinary(GBool last = gTrue) { return gTrue; }
845
+ virtual GBool isEncoder() { return gTrue; }
846
+
847
+ private:
848
+
849
+ char buf[131];
850
+ char *bufPtr;
851
+ char *bufEnd;
852
+ char *nextEnd;
853
+ GBool eof;
854
+
855
+ GBool fillBuf();
856
+ };
857
+
858
+ #endif