pdfrb 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 (822) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +2 -0
  3. data/.rubocop.yml +22 -0
  4. data/.rubocop_todo.yml +819 -0
  5. data/.yardopts +4 -0
  6. data/CHANGELOG.md +226 -0
  7. data/CLAUDE.md +110 -0
  8. data/Gemfile +13 -0
  9. data/LICENSE +25 -0
  10. data/README.adoc +88 -0
  11. data/Rakefile +45 -0
  12. data/benchmarks/bench.rb +49 -0
  13. data/data/pdfrb/afm/Courier-Bold.afm +342 -0
  14. data/data/pdfrb/afm/Courier-BoldOblique.afm +342 -0
  15. data/data/pdfrb/afm/Courier-Oblique.afm +342 -0
  16. data/data/pdfrb/afm/Courier.afm +342 -0
  17. data/data/pdfrb/afm/Helvetica-Bold.afm +2827 -0
  18. data/data/pdfrb/afm/Helvetica-BoldOblique.afm +2827 -0
  19. data/data/pdfrb/afm/Helvetica-Oblique.afm +3051 -0
  20. data/data/pdfrb/afm/Helvetica.afm +3051 -0
  21. data/data/pdfrb/afm/Symbol.afm +213 -0
  22. data/data/pdfrb/afm/Times-Bold.afm +2588 -0
  23. data/data/pdfrb/afm/Times-BoldItalic.afm +2384 -0
  24. data/data/pdfrb/afm/Times-Italic.afm +2667 -0
  25. data/data/pdfrb/afm/Times-Roman.afm +2419 -0
  26. data/data/pdfrb/afm/ZapfDingbats.afm +225 -0
  27. data/data/pdfrb/arlington/latest/3DActivation.tsv +10 -0
  28. data/data/pdfrb/arlington/latest/3DAnimationStyle.tsv +5 -0
  29. data/data/pdfrb/arlington/latest/3DBackground.tsv +6 -0
  30. data/data/pdfrb/arlington/latest/3DCrossSection.tsv +11 -0
  31. data/data/pdfrb/arlington/latest/3DLightingScheme.tsv +3 -0
  32. data/data/pdfrb/arlington/latest/3DMeasure3DC.tsv +12 -0
  33. data/data/pdfrb/arlington/latest/3DMeasureAD3.tsv +21 -0
  34. data/data/pdfrb/arlington/latest/3DMeasureLD3.tsv +18 -0
  35. data/data/pdfrb/arlington/latest/3DMeasurePD3.tsv +19 -0
  36. data/data/pdfrb/arlington/latest/3DMeasureRD3.tsv +23 -0
  37. data/data/pdfrb/arlington/latest/3DNode.tsv +9 -0
  38. data/data/pdfrb/arlington/latest/3DReference.tsv +3 -0
  39. data/data/pdfrb/arlington/latest/3DRenderMode.tsv +7 -0
  40. data/data/pdfrb/arlington/latest/3DStream.tsv +16 -0
  41. data/data/pdfrb/arlington/latest/3DUnits.tsv +10 -0
  42. data/data/pdfrb/arlington/latest/3DView.tsv +17 -0
  43. data/data/pdfrb/arlington/latest/3DViewAddEntries.tsv +19 -0
  44. data/data/pdfrb/arlington/latest/AAPL_ST.tsv +7 -0
  45. data/data/pdfrb/arlington/latest/AFEmbeddedFileParameter.tsv +6 -0
  46. data/data/pdfrb/arlington/latest/AFEmbeddedFileStream.tsv +12 -0
  47. data/data/pdfrb/arlington/latest/AFFileSpecEF.tsv +3 -0
  48. data/data/pdfrb/arlington/latest/AFFileSpecification.tsv +17 -0
  49. data/data/pdfrb/arlington/latest/ActionECMAScript.tsv +5 -0
  50. data/data/pdfrb/arlington/latest/ActionGoTo.tsv +6 -0
  51. data/data/pdfrb/arlington/latest/ActionGoTo3DView.tsv +6 -0
  52. data/data/pdfrb/arlington/latest/ActionGoToDp.tsv +5 -0
  53. data/data/pdfrb/arlington/latest/ActionGoToE.tsv +8 -0
  54. data/data/pdfrb/arlington/latest/ActionGoToR.tsv +8 -0
  55. data/data/pdfrb/arlington/latest/ActionHide.tsv +6 -0
  56. data/data/pdfrb/arlington/latest/ActionImportData.tsv +5 -0
  57. data/data/pdfrb/arlington/latest/ActionLaunch.tsv +9 -0
  58. data/data/pdfrb/arlington/latest/ActionMovie.tsv +7 -0
  59. data/data/pdfrb/arlington/latest/ActionNOP.tsv +4 -0
  60. data/data/pdfrb/arlington/latest/ActionNamed.tsv +5 -0
  61. data/data/pdfrb/arlington/latest/ActionRendition.tsv +8 -0
  62. data/data/pdfrb/arlington/latest/ActionResetForm.tsv +6 -0
  63. data/data/pdfrb/arlington/latest/ActionRichMediaExecute.tsv +7 -0
  64. data/data/pdfrb/arlington/latest/ActionSetOCGState.tsv +6 -0
  65. data/data/pdfrb/arlington/latest/ActionSetState.tsv +6 -0
  66. data/data/pdfrb/arlington/latest/ActionSound.tsv +9 -0
  67. data/data/pdfrb/arlington/latest/ActionSubmitForm.tsv +8 -0
  68. data/data/pdfrb/arlington/latest/ActionThread.tsv +7 -0
  69. data/data/pdfrb/arlington/latest/ActionTransition.tsv +5 -0
  70. data/data/pdfrb/arlington/latest/ActionURI.tsv +6 -0
  71. data/data/pdfrb/arlington/latest/AddActionCatalog.tsv +6 -0
  72. data/data/pdfrb/arlington/latest/AddActionFormField.tsv +5 -0
  73. data/data/pdfrb/arlington/latest/AddActionPageObject.tsv +3 -0
  74. data/data/pdfrb/arlington/latest/AddActionScreenAnnotation.tsv +9 -0
  75. data/data/pdfrb/arlington/latest/AddActionWidgetAnnotation.tsv +11 -0
  76. data/data/pdfrb/arlington/latest/AlternateImage.tsv +4 -0
  77. data/data/pdfrb/arlington/latest/Annot3D.tsv +27 -0
  78. data/data/pdfrb/arlington/latest/AnnotCaret.tsv +31 -0
  79. data/data/pdfrb/arlington/latest/AnnotCircle.tsv +33 -0
  80. data/data/pdfrb/arlington/latest/AnnotFileAttachment.tsv +31 -0
  81. data/data/pdfrb/arlington/latest/AnnotFreeText.tsv +37 -0
  82. data/data/pdfrb/arlington/latest/AnnotHighlight.tsv +30 -0
  83. data/data/pdfrb/arlington/latest/AnnotInk.tsv +32 -0
  84. data/data/pdfrb/arlington/latest/AnnotLine.tsv +40 -0
  85. data/data/pdfrb/arlington/latest/AnnotLink.tsv +27 -0
  86. data/data/pdfrb/arlington/latest/AnnotMovie.tsv +23 -0
  87. data/data/pdfrb/arlington/latest/AnnotPolyLine.tsv +36 -0
  88. data/data/pdfrb/arlington/latest/AnnotPolygon.tsv +36 -0
  89. data/data/pdfrb/arlington/latest/AnnotPopup.tsv +22 -0
  90. data/data/pdfrb/arlington/latest/AnnotPrinterMark.tsv +21 -0
  91. data/data/pdfrb/arlington/latest/AnnotProjection.tsv +29 -0
  92. data/data/pdfrb/arlington/latest/AnnotRedact.tsv +36 -0
  93. data/data/pdfrb/arlington/latest/AnnotRichMedia.tsv +22 -0
  94. data/data/pdfrb/arlington/latest/AnnotScreen.tsv +24 -0
  95. data/data/pdfrb/arlington/latest/AnnotSound.tsv +31 -0
  96. data/data/pdfrb/arlington/latest/AnnotSquare.tsv +33 -0
  97. data/data/pdfrb/arlington/latest/AnnotSquiggly.tsv +30 -0
  98. data/data/pdfrb/arlington/latest/AnnotStamp.tsv +30 -0
  99. data/data/pdfrb/arlington/latest/AnnotStrikeOut.tsv +30 -0
  100. data/data/pdfrb/arlington/latest/AnnotText.tsv +33 -0
  101. data/data/pdfrb/arlington/latest/AnnotTrapNetwork.tsv +24 -0
  102. data/data/pdfrb/arlington/latest/AnnotUnderline.tsv +30 -0
  103. data/data/pdfrb/arlington/latest/AnnotWatermark.tsv +21 -0
  104. data/data/pdfrb/arlington/latest/AnnotWidget.tsv +32 -0
  105. data/data/pdfrb/arlington/latest/Appearance.tsv +4 -0
  106. data/data/pdfrb/arlington/latest/AppearanceCharacteristics.tsv +12 -0
  107. data/data/pdfrb/arlington/latest/AppearancePrinterMark.tsv +4 -0
  108. data/data/pdfrb/arlington/latest/AppearancePrinterMarkSubDict.tsv +2 -0
  109. data/data/pdfrb/arlington/latest/AppearanceSubDict.tsv +2 -0
  110. data/data/pdfrb/arlington/latest/AppearanceTrapNet.tsv +4 -0
  111. data/data/pdfrb/arlington/latest/AppearanceTrapNetSubDict.tsv +2 -0
  112. data/data/pdfrb/arlington/latest/ArrayOf3DCrossSection.tsv +2 -0
  113. data/data/pdfrb/arlington/latest/ArrayOf3DMeasure.tsv +2 -0
  114. data/data/pdfrb/arlington/latest/ArrayOf3DNode.tsv +2 -0
  115. data/data/pdfrb/arlington/latest/ArrayOf3DTransMatrix.tsv +13 -0
  116. data/data/pdfrb/arlington/latest/ArrayOf3DView.tsv +2 -0
  117. data/data/pdfrb/arlington/latest/ArrayOf3DViewAddEntries.tsv +2 -0
  118. data/data/pdfrb/arlington/latest/ArrayOf3PDUNames.tsv +4 -0
  119. data/data/pdfrb/arlington/latest/ArrayOf4Functions.tsv +5 -0
  120. data/data/pdfrb/arlington/latest/ArrayOfAFFileSpecifications.tsv +3 -0
  121. data/data/pdfrb/arlington/latest/ArrayOfActionHideAnnots.tsv +2 -0
  122. data/data/pdfrb/arlington/latest/ArrayOfActions.tsv +2 -0
  123. data/data/pdfrb/arlington/latest/ArrayOfAnnotStates.tsv +2 -0
  124. data/data/pdfrb/arlington/latest/ArrayOfAnnots.tsv +2 -0
  125. data/data/pdfrb/arlington/latest/ArrayOfArraysInkList.tsv +2 -0
  126. data/data/pdfrb/arlington/latest/ArrayOfArraysPaths.tsv +3 -0
  127. data/data/pdfrb/arlington/latest/ArrayOfArraysRBGroups.tsv +2 -0
  128. data/data/pdfrb/arlington/latest/ArrayOfArraysURLStrings.tsv +2 -0
  129. data/data/pdfrb/arlington/latest/ArrayOfArraysXPTSValues.tsv +2 -0
  130. data/data/pdfrb/arlington/latest/ArrayOfAttributeObjects.tsv +2 -0
  131. data/data/pdfrb/arlington/latest/ArrayOfAttributeRevisions.tsv +3 -0
  132. data/data/pdfrb/arlington/latest/ArrayOfBeads.tsv +2 -0
  133. data/data/pdfrb/arlington/latest/ArrayOfBlendModes.tsv +2 -0
  134. data/data/pdfrb/arlington/latest/ArrayOfBooleansGeneral.tsv +2 -0
  135. data/data/pdfrb/arlington/latest/ArrayOfCIDGlyphMetricsW.tsv +2 -0
  136. data/data/pdfrb/arlington/latest/ArrayOfCIDGlyphMetricsW2.tsv +2 -0
  137. data/data/pdfrb/arlington/latest/ArrayOfCIP4_AssemblingIntent.tsv +2 -0
  138. data/data/pdfrb/arlington/latest/ArrayOfCIP4_AssemblyItem.tsv +2 -0
  139. data/data/pdfrb/arlington/latest/ArrayOfCIP4_BindIn.tsv +2 -0
  140. data/data/pdfrb/arlington/latest/ArrayOfCIP4_BindingIntent.tsv +2 -0
  141. data/data/pdfrb/arlington/latest/ArrayOfCIP4_BlowIn.tsv +2 -0
  142. data/data/pdfrb/arlington/latest/ArrayOfCIP4_ChannelUsage.tsv +2 -0
  143. data/data/pdfrb/arlington/latest/ArrayOfCIP4_Coatings.tsv +2 -0
  144. data/data/pdfrb/arlington/latest/ArrayOfCIP4_ColorIntent.tsv +2 -0
  145. data/data/pdfrb/arlington/latest/ArrayOfCIP4_ComChannel.tsv +2 -0
  146. data/data/pdfrb/arlington/latest/ArrayOfCIP4_ContactTypes.tsv +2 -0
  147. data/data/pdfrb/arlington/latest/ArrayOfCIP4_FinishedDimensions.tsv +4 -0
  148. data/data/pdfrb/arlington/latest/ArrayOfCIP4_FoldingIntent.tsv +2 -0
  149. data/data/pdfrb/arlington/latest/ArrayOfCIP4_HoleMakingIntent.tsv +2 -0
  150. data/data/pdfrb/arlington/latest/ArrayOfCIP4_HolePattern.tsv +2 -0
  151. data/data/pdfrb/arlington/latest/ArrayOfCIP4_LABColorValue.tsv +4 -0
  152. data/data/pdfrb/arlington/latest/ArrayOfCIP4_LayoutIntent.tsv +2 -0
  153. data/data/pdfrb/arlington/latest/ArrayOfCIP4_MediaIntent.tsv +2 -0
  154. data/data/pdfrb/arlington/latest/ArrayOfCIP4_PrintProcess.tsv +2 -0
  155. data/data/pdfrb/arlington/latest/ArrayOfCIP4_ProductionIntent.tsv +2 -0
  156. data/data/pdfrb/arlington/latest/ArrayOfCIP4_Resource.tsv +2 -0
  157. data/data/pdfrb/arlington/latest/ArrayOfCIP4_StickOn.tsv +2 -0
  158. data/data/pdfrb/arlington/latest/ArrayOfClassNamesRevisions.tsv +3 -0
  159. data/data/pdfrb/arlington/latest/ArrayOfCompressionFilterNames.tsv +2 -0
  160. data/data/pdfrb/arlington/latest/ArrayOfDPartArrays.tsv +2 -0
  161. data/data/pdfrb/arlington/latest/ArrayOfDParts.tsv +2 -0
  162. data/data/pdfrb/arlington/latest/ArrayOfDashPatterns.tsv +2 -0
  163. data/data/pdfrb/arlington/latest/ArrayOfDecodeParams.tsv +2 -0
  164. data/data/pdfrb/arlington/latest/ArrayOfDescendantFonts.tsv +2 -0
  165. data/data/pdfrb/arlington/latest/ArrayOfDevExtensions.tsv +2 -0
  166. data/data/pdfrb/arlington/latest/ArrayOfDifferences.tsv +2 -0
  167. data/data/pdfrb/arlington/latest/ArrayOfDigestMethod.tsv +2 -0
  168. data/data/pdfrb/arlington/latest/ArrayOfDuration.tsv +3 -0
  169. data/data/pdfrb/arlington/latest/ArrayOfFieldChoiceOpt.tsv +2 -0
  170. data/data/pdfrb/arlington/latest/ArrayOfFieldID.tsv +2 -0
  171. data/data/pdfrb/arlington/latest/ArrayOfFields.tsv +2 -0
  172. data/data/pdfrb/arlington/latest/ArrayOfFileSpecifications.tsv +3 -0
  173. data/data/pdfrb/arlington/latest/ArrayOfFilterNames.tsv +2 -0
  174. data/data/pdfrb/arlington/latest/ArrayOfFontAndSize.tsv +3 -0
  175. data/data/pdfrb/arlington/latest/ArrayOfFonts.tsv +2 -0
  176. data/data/pdfrb/arlington/latest/ArrayOfFunctions.tsv +2 -0
  177. data/data/pdfrb/arlington/latest/ArrayOfGSPDashPatterns.tsv +3 -0
  178. data/data/pdfrb/arlington/latest/ArrayOfImageAlternates.tsv +2 -0
  179. data/data/pdfrb/arlington/latest/ArrayOfIndirectFileSpecifications.tsv +2 -0
  180. data/data/pdfrb/arlington/latest/ArrayOfIntegersGeneral.tsv +2 -0
  181. data/data/pdfrb/arlington/latest/ArrayOfIntegersGreaterThanZero.tsv +2 -0
  182. data/data/pdfrb/arlington/latest/ArrayOfMediaPlayerInfo.tsv +2 -0
  183. data/data/pdfrb/arlington/latest/ArrayOfNamesForEnforce.tsv +2 -0
  184. data/data/pdfrb/arlington/latest/ArrayOfNamesForPrintingOrder.tsv +2 -0
  185. data/data/pdfrb/arlington/latest/ArrayOfNamesForProcSet.tsv +2 -0
  186. data/data/pdfrb/arlington/latest/ArrayOfNamesGeneral.tsv +2 -0
  187. data/data/pdfrb/arlington/latest/ArrayOfNamesInPtData.tsv +2 -0
  188. data/data/pdfrb/arlington/latest/ArrayOfNamespace.tsv +2 -0
  189. data/data/pdfrb/arlington/latest/ArrayOfNavigatorLayoutNames.tsv +2 -0
  190. data/data/pdfrb/arlington/latest/ArrayOfNonNegativeIntegersGeneral.tsv +2 -0
  191. data/data/pdfrb/arlington/latest/ArrayOfNumberFormats.tsv +2 -0
  192. data/data/pdfrb/arlington/latest/ArrayOfNumbersGeneral.tsv +2 -0
  193. data/data/pdfrb/arlington/latest/ArrayOfOCConfig.tsv +2 -0
  194. data/data/pdfrb/arlington/latest/ArrayOfOCG.tsv +2 -0
  195. data/data/pdfrb/arlington/latest/ArrayOfOCGState.tsv +2 -0
  196. data/data/pdfrb/arlington/latest/ArrayOfOCGindirect.tsv +2 -0
  197. data/data/pdfrb/arlington/latest/ArrayOfOCUsage.tsv +2 -0
  198. data/data/pdfrb/arlington/latest/ArrayOfOPI13Color.tsv +6 -0
  199. data/data/pdfrb/arlington/latest/ArrayOfOPI2Inks.tsv +4 -0
  200. data/data/pdfrb/arlington/latest/ArrayOfOptContentGroups.tsv +2 -0
  201. data/data/pdfrb/arlington/latest/ArrayOfOptContentOrderElements.tsv +2 -0
  202. data/data/pdfrb/arlington/latest/ArrayOfOptContentOrders.tsv +3 -0
  203. data/data/pdfrb/arlington/latest/ArrayOfOutputIntents.tsv +2 -0
  204. data/data/pdfrb/arlington/latest/ArrayOfPageTreeNodeKids.tsv +2 -0
  205. data/data/pdfrb/arlington/latest/ArrayOfPages.tsv +2 -0
  206. data/data/pdfrb/arlington/latest/ArrayOfPaths.tsv +7 -0
  207. data/data/pdfrb/arlington/latest/ArrayOfQuadPoints.tsv +9 -0
  208. data/data/pdfrb/arlington/latest/ArrayOfRenditions.tsv +2 -0
  209. data/data/pdfrb/arlington/latest/ArrayOfRequirements.tsv +2 -0
  210. data/data/pdfrb/arlington/latest/ArrayOfRequirementsHandlers.tsv +2 -0
  211. data/data/pdfrb/arlington/latest/ArrayOfRichMediaConfiguration.tsv +2 -0
  212. data/data/pdfrb/arlington/latest/ArrayOfRichMediaCuePoints.tsv +2 -0
  213. data/data/pdfrb/arlington/latest/ArrayOfRichMediaInstances.tsv +2 -0
  214. data/data/pdfrb/arlington/latest/ArrayOfSignatureReferences.tsv +2 -0
  215. data/data/pdfrb/arlington/latest/ArrayOfSignatureSubFilterNames.tsv +2 -0
  216. data/data/pdfrb/arlington/latest/ArrayOfSoftwareIdentifiers.tsv +2 -0
  217. data/data/pdfrb/arlington/latest/ArrayOfSoftwareVersions.tsv +2 -0
  218. data/data/pdfrb/arlington/latest/ArrayOfSourceInformation.tsv +2 -0
  219. data/data/pdfrb/arlington/latest/ArrayOfStreamsGeneral.tsv +2 -0
  220. data/data/pdfrb/arlington/latest/ArrayOfStringsASCII.tsv +2 -0
  221. data/data/pdfrb/arlington/latest/ArrayOfStringsByte.tsv +2 -0
  222. data/data/pdfrb/arlington/latest/ArrayOfStringsText.tsv +2 -0
  223. data/data/pdfrb/arlington/latest/ArrayOfStringsTextOrNames.tsv +2 -0
  224. data/data/pdfrb/arlington/latest/ArrayOfStructElem.tsv +2 -0
  225. data/data/pdfrb/arlington/latest/ArrayOfStructElemKids.tsv +2 -0
  226. data/data/pdfrb/arlington/latest/ArrayOfStructElemParentTree.tsv +2 -0
  227. data/data/pdfrb/arlington/latest/ArrayOfSubjectDN.tsv +2 -0
  228. data/data/pdfrb/arlington/latest/ArrayOfTags.tsv +3 -0
  229. data/data/pdfrb/arlington/latest/ArrayOfThreads.tsv +2 -0
  230. data/data/pdfrb/arlington/latest/ArrayOfTrapNetVersionObjects.tsv +2 -0
  231. data/data/pdfrb/arlington/latest/ArrayOfTrapRegions.tsv +2 -0
  232. data/data/pdfrb/arlington/latest/ArrayOfURLStrings.tsv +2 -0
  233. data/data/pdfrb/arlington/latest/ArrayOfURLs.tsv +2 -0
  234. data/data/pdfrb/arlington/latest/ArrayOfUserProperty.tsv +2 -0
  235. data/data/pdfrb/arlington/latest/ArrayOfViewParams.tsv +2 -0
  236. data/data/pdfrb/arlington/latest/ArrayOfViewports.tsv +2 -0
  237. data/data/pdfrb/arlington/latest/ArrayOfWebCaptureCommands.tsv +2 -0
  238. data/data/pdfrb/arlington/latest/ArrayOfWebCaptureImages.tsv +2 -0
  239. data/data/pdfrb/arlington/latest/ArrayOfWebCapturePages.tsv +2 -0
  240. data/data/pdfrb/arlington/latest/ArrayOfXFA.tsv +3 -0
  241. data/data/pdfrb/arlington/latest/ArrayOfXPTSValues.tsv +2 -0
  242. data/data/pdfrb/arlington/latest/ArrayOfXRefIndexIntegers.tsv +3 -0
  243. data/data/pdfrb/arlington/latest/ArrayOfXRefWIntegers.tsv +4 -0
  244. data/data/pdfrb/arlington/latest/ArrayOf_2Booleans.tsv +3 -0
  245. data/data/pdfrb/arlington/latest/ArrayOf_2DashNumbers.tsv +3 -0
  246. data/data/pdfrb/arlington/latest/ArrayOf_2Integers.tsv +3 -0
  247. data/data/pdfrb/arlington/latest/ArrayOf_2LineEndingsNames.tsv +3 -0
  248. data/data/pdfrb/arlington/latest/ArrayOf_2NonNegativeIntegers.tsv +3 -0
  249. data/data/pdfrb/arlington/latest/ArrayOf_2Numbers.tsv +3 -0
  250. data/data/pdfrb/arlington/latest/ArrayOf_2StringsByte.tsv +3 -0
  251. data/data/pdfrb/arlington/latest/ArrayOf_2StringsText.tsv +3 -0
  252. data/data/pdfrb/arlington/latest/ArrayOf_3CenterOfRotationNumbers.tsv +4 -0
  253. data/data/pdfrb/arlington/latest/ArrayOf_3NonNegativeIntegers.tsv +4 -0
  254. data/data/pdfrb/arlington/latest/ArrayOf_3Numbers.tsv +4 -0
  255. data/data/pdfrb/arlington/latest/ArrayOf_3OrientationNumbers.tsv +4 -0
  256. data/data/pdfrb/arlington/latest/ArrayOf_3RGBNumbers.tsv +4 -0
  257. data/data/pdfrb/arlington/latest/ArrayOf_3or4CalloutLineNumbers.tsv +7 -0
  258. data/data/pdfrb/arlington/latest/ArrayOf_4AnnotBorderCharacteristics.tsv +5 -0
  259. data/data/pdfrb/arlington/latest/ArrayOf_4BorderColorArrays.tsv +5 -0
  260. data/data/pdfrb/arlington/latest/ArrayOf_4BorderStyleNames.tsv +5 -0
  261. data/data/pdfrb/arlington/latest/ArrayOf_4BorderThicknessNumbers.tsv +5 -0
  262. data/data/pdfrb/arlington/latest/ArrayOf_4ColourSpaceEntries.tsv +5 -0
  263. data/data/pdfrb/arlington/latest/ArrayOf_4Integers.tsv +5 -0
  264. data/data/pdfrb/arlington/latest/ArrayOf_4Numbers.tsv +5 -0
  265. data/data/pdfrb/arlington/latest/ArrayOf_4NumbersColorAnnotation.tsv +5 -0
  266. data/data/pdfrb/arlington/latest/ArrayOf_6Numbers.tsv +7 -0
  267. data/data/pdfrb/arlington/latest/ArrayOf_8Numbers.tsv +9 -0
  268. data/data/pdfrb/arlington/latest/ArrayOf_9Numbers.tsv +10 -0
  269. data/data/pdfrb/arlington/latest/ArrayOf_ArrayOfNumbers.tsv +2 -0
  270. data/data/pdfrb/arlington/latest/ArrayOf_RoleMapNS.tsv +3 -0
  271. data/data/pdfrb/arlington/latest/AuthCode.tsv +5 -0
  272. data/data/pdfrb/arlington/latest/Bead.tsv +7 -0
  273. data/data/pdfrb/arlington/latest/BeadFirst.tsv +7 -0
  274. data/data/pdfrb/arlington/latest/BlackpointArray.tsv +4 -0
  275. data/data/pdfrb/arlington/latest/BorderEffect.tsv +3 -0
  276. data/data/pdfrb/arlington/latest/BorderStyle.tsv +5 -0
  277. data/data/pdfrb/arlington/latest/BoxColorInfo.tsv +5 -0
  278. data/data/pdfrb/arlington/latest/BoxStyle.tsv +5 -0
  279. data/data/pdfrb/arlington/latest/CIDFontDescriptorMetrics.tsv +17 -0
  280. data/data/pdfrb/arlington/latest/CIDSystemInfo.tsv +4 -0
  281. data/data/pdfrb/arlington/latest/CIP4_Address.tsv +13 -0
  282. data/data/pdfrb/arlington/latest/CIP4_AssemblingIntent.tsv +7 -0
  283. data/data/pdfrb/arlington/latest/CIP4_AssemblyItem.tsv +3 -0
  284. data/data/pdfrb/arlington/latest/CIP4_BindIn.tsv +3 -0
  285. data/data/pdfrb/arlington/latest/CIP4_BindingIntent.tsv +6 -0
  286. data/data/pdfrb/arlington/latest/CIP4_BlowIn.tsv +3 -0
  287. data/data/pdfrb/arlington/latest/CIP4_ColorIntent.tsv +3 -0
  288. data/data/pdfrb/arlington/latest/CIP4_ComChannel.tsv +6 -0
  289. data/data/pdfrb/arlington/latest/CIP4_Company.tsv +5 -0
  290. data/data/pdfrb/arlington/latest/CIP4_Contact.tsv +8 -0
  291. data/data/pdfrb/arlington/latest/CIP4_FoldingIntent.tsv +4 -0
  292. data/data/pdfrb/arlington/latest/CIP4_HoleMakingIntent.tsv +3 -0
  293. data/data/pdfrb/arlington/latest/CIP4_HolePattern.tsv +4 -0
  294. data/data/pdfrb/arlington/latest/CIP4_Intent.tsv +11 -0
  295. data/data/pdfrb/arlington/latest/CIP4_IntentSummary.tsv +10 -0
  296. data/data/pdfrb/arlington/latest/CIP4_LayoutIntent.tsv +5 -0
  297. data/data/pdfrb/arlington/latest/CIP4_MediaIntent.tsv +11 -0
  298. data/data/pdfrb/arlington/latest/CIP4_Metadata.tsv +11 -0
  299. data/data/pdfrb/arlington/latest/CIP4_Person.tsv +10 -0
  300. data/data/pdfrb/arlington/latest/CIP4_Production.tsv +5 -0
  301. data/data/pdfrb/arlington/latest/CIP4_ProductionIntent.tsv +4 -0
  302. data/data/pdfrb/arlington/latest/CIP4_Recipient.tsv +3 -0
  303. data/data/pdfrb/arlington/latest/CIP4_Root.tsv +9 -0
  304. data/data/pdfrb/arlington/latest/CIP4_SaddleStitching.tsv +3 -0
  305. data/data/pdfrb/arlington/latest/CIP4_SideStitching.tsv +3 -0
  306. data/data/pdfrb/arlington/latest/CIP4_StickOn.tsv +3 -0
  307. data/data/pdfrb/arlington/latest/CMapStream.tsv +13 -0
  308. data/data/pdfrb/arlington/latest/CalGrayColorSpace.tsv +3 -0
  309. data/data/pdfrb/arlington/latest/CalGrayDict.tsv +4 -0
  310. data/data/pdfrb/arlington/latest/CalRGBColorSpace.tsv +3 -0
  311. data/data/pdfrb/arlington/latest/CalRGBDict.tsv +5 -0
  312. data/data/pdfrb/arlington/latest/Catalog.tsv +33 -0
  313. data/data/pdfrb/arlington/latest/CertSeedValue.tsv +14 -0
  314. data/data/pdfrb/arlington/latest/CharProcMap.tsv +2 -0
  315. data/data/pdfrb/arlington/latest/ClassMap.tsv +2 -0
  316. data/data/pdfrb/arlington/latest/Collection.tsv +11 -0
  317. data/data/pdfrb/arlington/latest/CollectionColors.tsv +7 -0
  318. data/data/pdfrb/arlington/latest/CollectionField.tsv +7 -0
  319. data/data/pdfrb/arlington/latest/CollectionFolder.tsv +13 -0
  320. data/data/pdfrb/arlington/latest/CollectionItem.tsv +3 -0
  321. data/data/pdfrb/arlington/latest/CollectionSchema.tsv +3 -0
  322. data/data/pdfrb/arlington/latest/CollectionSort.tsv +4 -0
  323. data/data/pdfrb/arlington/latest/CollectionSplit.tsv +4 -0
  324. data/data/pdfrb/arlington/latest/CollectionSubitem.tsv +4 -0
  325. data/data/pdfrb/arlington/latest/ColorSpaceMap.tsv +5 -0
  326. data/data/pdfrb/arlington/latest/ColorantsDict.tsv +2 -0
  327. data/data/pdfrb/arlington/latest/CryptFilter.tsv +5 -0
  328. data/data/pdfrb/arlington/latest/CryptFilterMap.tsv +4 -0
  329. data/data/pdfrb/arlington/latest/CryptFilterPublicKey.tsv +7 -0
  330. data/data/pdfrb/arlington/latest/CryptFilterPublicKeyMap.tsv +4 -0
  331. data/data/pdfrb/arlington/latest/DPM.tsv +5 -0
  332. data/data/pdfrb/arlington/latest/DPart.tsv +8 -0
  333. data/data/pdfrb/arlington/latest/DPartRoot.tsv +5 -0
  334. data/data/pdfrb/arlington/latest/DSS.tsv +6 -0
  335. data/data/pdfrb/arlington/latest/Data.tsv +4 -0
  336. data/data/pdfrb/arlington/latest/Dest0Array.tsv +3 -0
  337. data/data/pdfrb/arlington/latest/Dest0StructArray.tsv +3 -0
  338. data/data/pdfrb/arlington/latest/Dest1Array.tsv +4 -0
  339. data/data/pdfrb/arlington/latest/Dest1StructArray.tsv +4 -0
  340. data/data/pdfrb/arlington/latest/Dest4Array.tsv +7 -0
  341. data/data/pdfrb/arlington/latest/Dest4StructArray.tsv +7 -0
  342. data/data/pdfrb/arlington/latest/DestDict.tsv +3 -0
  343. data/data/pdfrb/arlington/latest/DestOutputProfileRef.tsv +7 -0
  344. data/data/pdfrb/arlington/latest/DestXYZArray.tsv +6 -0
  345. data/data/pdfrb/arlington/latest/DestXYZStructArray.tsv +6 -0
  346. data/data/pdfrb/arlington/latest/DestsMap.tsv +2 -0
  347. data/data/pdfrb/arlington/latest/DevExtensions.tsv +6 -0
  348. data/data/pdfrb/arlington/latest/DeviceCMYKColorSpace.tsv +2 -0
  349. data/data/pdfrb/arlington/latest/DeviceGrayColorSpace.tsv +2 -0
  350. data/data/pdfrb/arlington/latest/DeviceNColorSpace.tsv +6 -0
  351. data/data/pdfrb/arlington/latest/DeviceNDict.tsv +5 -0
  352. data/data/pdfrb/arlington/latest/DeviceNMixingHints.tsv +4 -0
  353. data/data/pdfrb/arlington/latest/DeviceNProcess.tsv +3 -0
  354. data/data/pdfrb/arlington/latest/DeviceRGBColorSpace.tsv +2 -0
  355. data/data/pdfrb/arlington/latest/DictionaryOfDictionaries.tsv +2 -0
  356. data/data/pdfrb/arlington/latest/DictionaryOfFunctions.tsv +3 -0
  357. data/data/pdfrb/arlington/latest/DocInfo.tsv +13 -0
  358. data/data/pdfrb/arlington/latest/DocMDPTransformParameters.tsv +4 -0
  359. data/data/pdfrb/arlington/latest/DocTimeStamp.tsv +19 -0
  360. data/data/pdfrb/arlington/latest/EmbeddedFileParameter.tsv +6 -0
  361. data/data/pdfrb/arlington/latest/EmbeddedFileStream.tsv +12 -0
  362. data/data/pdfrb/arlington/latest/Encoding.tsv +4 -0
  363. data/data/pdfrb/arlington/latest/EncryptedPayload.tsv +4 -0
  364. data/data/pdfrb/arlington/latest/EncryptionPublicKey.tsv +13 -0
  365. data/data/pdfrb/arlington/latest/EncryptionStandard.tsv +18 -0
  366. data/data/pdfrb/arlington/latest/ExData3DMarkup.tsv +6 -0
  367. data/data/pdfrb/arlington/latest/ExDataMarkupGeo.tsv +3 -0
  368. data/data/pdfrb/arlington/latest/ExDataProjection.tsv +4 -0
  369. data/data/pdfrb/arlington/latest/Extensions.tsv +5 -0
  370. data/data/pdfrb/arlington/latest/FDDict.tsv +2 -0
  371. data/data/pdfrb/arlington/latest/Field.tsv +8 -0
  372. data/data/pdfrb/arlington/latest/FieldBtnCheckbox.tsv +16 -0
  373. data/data/pdfrb/arlington/latest/FieldBtnPush.tsv +15 -0
  374. data/data/pdfrb/arlington/latest/FieldBtnRadio.tsv +16 -0
  375. data/data/pdfrb/arlington/latest/FieldChoice.tsv +18 -0
  376. data/data/pdfrb/arlington/latest/FieldMDPTransformParameters.tsv +5 -0
  377. data/data/pdfrb/arlington/latest/FieldSig.tsv +17 -0
  378. data/data/pdfrb/arlington/latest/FieldTx.tsv +16 -0
  379. data/data/pdfrb/arlington/latest/FileSpecEF.tsv +3 -0
  380. data/data/pdfrb/arlington/latest/FileSpecRF.tsv +3 -0
  381. data/data/pdfrb/arlington/latest/FileSpecification.tsv +17 -0
  382. data/data/pdfrb/arlington/latest/FileTrailer.tsv +11 -0
  383. data/data/pdfrb/arlington/latest/FilterCCITTFaxDecode.tsv +10 -0
  384. data/data/pdfrb/arlington/latest/FilterCrypt.tsv +3 -0
  385. data/data/pdfrb/arlington/latest/FilterDCTDecode.tsv +2 -0
  386. data/data/pdfrb/arlington/latest/FilterFlateDecode.tsv +5 -0
  387. data/data/pdfrb/arlington/latest/FilterJBIG2Decode.tsv +2 -0
  388. data/data/pdfrb/arlington/latest/FilterLZWDecode.tsv +6 -0
  389. data/data/pdfrb/arlington/latest/FixedPrint.tsv +5 -0
  390. data/data/pdfrb/arlington/latest/FloatingWindowParameters.tsv +10 -0
  391. data/data/pdfrb/arlington/latest/FontCIDType0.tsv +12 -0
  392. data/data/pdfrb/arlington/latest/FontCIDType2.tsv +12 -0
  393. data/data/pdfrb/arlington/latest/FontDescriptorCIDType0.tsv +25 -0
  394. data/data/pdfrb/arlington/latest/FontDescriptorCIDType2.tsv +26 -0
  395. data/data/pdfrb/arlington/latest/FontDescriptorTrueType.tsv +22 -0
  396. data/data/pdfrb/arlington/latest/FontDescriptorType1.tsv +22 -0
  397. data/data/pdfrb/arlington/latest/FontDescriptorType3.tsv +19 -0
  398. data/data/pdfrb/arlington/latest/FontFile.tsv +13 -0
  399. data/data/pdfrb/arlington/latest/FontFile2.tsv +13 -0
  400. data/data/pdfrb/arlington/latest/FontFile3CIDType0.tsv +13 -0
  401. data/data/pdfrb/arlington/latest/FontFile3OpenType.tsv +13 -0
  402. data/data/pdfrb/arlington/latest/FontFile3Type1.tsv +13 -0
  403. data/data/pdfrb/arlington/latest/FontFileType1.tsv +13 -0
  404. data/data/pdfrb/arlington/latest/FontMap.tsv +2 -0
  405. data/data/pdfrb/arlington/latest/FontMultipleMaster.tsv +11 -0
  406. data/data/pdfrb/arlington/latest/FontTrueType.tsv +11 -0
  407. data/data/pdfrb/arlington/latest/FontType0.tsv +7 -0
  408. data/data/pdfrb/arlington/latest/FontType1.tsv +11 -0
  409. data/data/pdfrb/arlington/latest/FontType3.tsv +14 -0
  410. data/data/pdfrb/arlington/latest/FunctionType0.tsv +16 -0
  411. data/data/pdfrb/arlington/latest/FunctionType2.tsv +7 -0
  412. data/data/pdfrb/arlington/latest/FunctionType3.tsv +7 -0
  413. data/data/pdfrb/arlington/latest/FunctionType4.tsv +11 -0
  414. data/data/pdfrb/arlington/latest/GTS_ProcStepsGroup.tsv +4 -0
  415. data/data/pdfrb/arlington/latest/GTSm_DevExtensions.tsv +6 -0
  416. data/data/pdfrb/arlington/latest/GammaArray.tsv +4 -0
  417. data/data/pdfrb/arlington/latest/GeographicCoordinateSystem.tsv +4 -0
  418. data/data/pdfrb/arlington/latest/GraphicsStateParameter.tsv +33 -0
  419. data/data/pdfrb/arlington/latest/GraphicsStateParameterMap.tsv +2 -0
  420. data/data/pdfrb/arlington/latest/GroupAttributes.tsv +6 -0
  421. data/data/pdfrb/arlington/latest/HalftoneType1.tsv +9 -0
  422. data/data/pdfrb/arlington/latest/HalftoneType10.tsv +14 -0
  423. data/data/pdfrb/arlington/latest/HalftoneType16.tsv +16 -0
  424. data/data/pdfrb/arlington/latest/HalftoneType5.tsv +6 -0
  425. data/data/pdfrb/arlington/latest/HalftoneType6.tsv +14 -0
  426. data/data/pdfrb/arlington/latest/ICCBasedColorSpace.tsv +3 -0
  427. data/data/pdfrb/arlington/latest/ICCProfileStream.tsv +12 -0
  428. data/data/pdfrb/arlington/latest/ISO_DevExtensions.tsv +6 -0
  429. data/data/pdfrb/arlington/latest/IconFit.tsv +5 -0
  430. data/data/pdfrb/arlington/latest/IndexedColorSpace.tsv +5 -0
  431. data/data/pdfrb/arlington/latest/InteractiveForm.tsv +9 -0
  432. data/data/pdfrb/arlington/latest/LabColorSpace.tsv +3 -0
  433. data/data/pdfrb/arlington/latest/LabDict.tsv +4 -0
  434. data/data/pdfrb/arlington/latest/LabRangeArray.tsv +5 -0
  435. data/data/pdfrb/arlington/latest/LegalAttestation.tsv +23 -0
  436. data/data/pdfrb/arlington/latest/LinearizationParameterDict.tsv +9 -0
  437. data/data/pdfrb/arlington/latest/MDPDict.tsv +2 -0
  438. data/data/pdfrb/arlington/latest/Mac.tsv +4 -0
  439. data/data/pdfrb/arlington/latest/MarkInfo.tsv +4 -0
  440. data/data/pdfrb/arlington/latest/MarkedContentReference.tsv +6 -0
  441. data/data/pdfrb/arlington/latest/MeasureGEO.tsv +10 -0
  442. data/data/pdfrb/arlington/latest/MeasureRL.tsv +12 -0
  443. data/data/pdfrb/arlington/latest/MediaClipData.tsv +11 -0
  444. data/data/pdfrb/arlington/latest/MediaClipDataMHBE.tsv +2 -0
  445. data/data/pdfrb/arlington/latest/MediaClipSection.tsv +8 -0
  446. data/data/pdfrb/arlington/latest/MediaClipSectionMHBE.tsv +3 -0
  447. data/data/pdfrb/arlington/latest/MediaCriteria.tsv +12 -0
  448. data/data/pdfrb/arlington/latest/MediaDuration.tsv +4 -0
  449. data/data/pdfrb/arlington/latest/MediaOffsetFrame.tsv +4 -0
  450. data/data/pdfrb/arlington/latest/MediaOffsetMarker.tsv +4 -0
  451. data/data/pdfrb/arlington/latest/MediaOffsetTime.tsv +4 -0
  452. data/data/pdfrb/arlington/latest/MediaPermissions.tsv +3 -0
  453. data/data/pdfrb/arlington/latest/MediaPlayParameters.tsv +5 -0
  454. data/data/pdfrb/arlington/latest/MediaPlayParametersBE.tsv +7 -0
  455. data/data/pdfrb/arlington/latest/MediaPlayParametersMH.tsv +7 -0
  456. data/data/pdfrb/arlington/latest/MediaPlayerInfo.tsv +5 -0
  457. data/data/pdfrb/arlington/latest/MediaPlayers.tsv +5 -0
  458. data/data/pdfrb/arlington/latest/MediaScreenParameters.tsv +4 -0
  459. data/data/pdfrb/arlington/latest/MediaScreenParametersMHBE.tsv +6 -0
  460. data/data/pdfrb/arlington/latest/Metadata.tsv +10 -0
  461. data/data/pdfrb/arlington/latest/MicrosoftWindowsLaunchParam.tsv +5 -0
  462. data/data/pdfrb/arlington/latest/MinimumBitDepth.tsv +4 -0
  463. data/data/pdfrb/arlington/latest/MinimumScreenSize.tsv +4 -0
  464. data/data/pdfrb/arlington/latest/Movie.tsv +5 -0
  465. data/data/pdfrb/arlington/latest/MovieActivation.tsv +10 -0
  466. data/data/pdfrb/arlington/latest/Name.tsv +12 -0
  467. data/data/pdfrb/arlington/latest/Namespace.tsv +5 -0
  468. data/data/pdfrb/arlington/latest/NavNode.tsv +7 -0
  469. data/data/pdfrb/arlington/latest/Navigator.tsv +16 -0
  470. data/data/pdfrb/arlington/latest/NumberFormat.tsv +12 -0
  471. data/data/pdfrb/arlington/latest/OOAdditionalStmsArray.tsv +3 -0
  472. data/data/pdfrb/arlington/latest/OPIVersion13.tsv +2 -0
  473. data/data/pdfrb/arlington/latest/OPIVersion13Dict.tsv +19 -0
  474. data/data/pdfrb/arlington/latest/OPIVersion20.tsv +2 -0
  475. data/data/pdfrb/arlington/latest/OPIVersion20Dict.tsv +12 -0
  476. data/data/pdfrb/arlington/latest/ObjectReference.tsv +4 -0
  477. data/data/pdfrb/arlington/latest/ObjectStream.tsv +12 -0
  478. data/data/pdfrb/arlington/latest/OptContentConfig.tsv +12 -0
  479. data/data/pdfrb/arlington/latest/OptContentCreatorInfo.tsv +4 -0
  480. data/data/pdfrb/arlington/latest/OptContentExport.tsv +2 -0
  481. data/data/pdfrb/arlington/latest/OptContentGroup.tsv +6 -0
  482. data/data/pdfrb/arlington/latest/OptContentLanguage.tsv +3 -0
  483. data/data/pdfrb/arlington/latest/OptContentMembership.tsv +5 -0
  484. data/data/pdfrb/arlington/latest/OptContentPageElement.tsv +2 -0
  485. data/data/pdfrb/arlington/latest/OptContentPrint.tsv +3 -0
  486. data/data/pdfrb/arlington/latest/OptContentProperties.tsv +4 -0
  487. data/data/pdfrb/arlington/latest/OptContentUsage.tsv +9 -0
  488. data/data/pdfrb/arlington/latest/OptContentUsageApplication.tsv +4 -0
  489. data/data/pdfrb/arlington/latest/OptContentUser.tsv +3 -0
  490. data/data/pdfrb/arlington/latest/OptContentView.tsv +2 -0
  491. data/data/pdfrb/arlington/latest/OptContentZoom.tsv +3 -0
  492. data/data/pdfrb/arlington/latest/Outline.tsv +5 -0
  493. data/data/pdfrb/arlington/latest/OutlineItem.tsv +13 -0
  494. data/data/pdfrb/arlington/latest/OutputIntents.tsv +11 -0
  495. data/data/pdfrb/arlington/latest/PageLabel.tsv +5 -0
  496. data/data/pdfrb/arlington/latest/PageObject.tsv +35 -0
  497. data/data/pdfrb/arlington/latest/PagePiece.tsv +2 -0
  498. data/data/pdfrb/arlington/latest/PageTreeNode.tsv +9 -0
  499. data/data/pdfrb/arlington/latest/PageTreeNodeRoot.tsv +8 -0
  500. data/data/pdfrb/arlington/latest/PaperMetaData.tsv +13 -0
  501. data/data/pdfrb/arlington/latest/PatternColorSpace.tsv +3 -0
  502. data/data/pdfrb/arlington/latest/PatternMap.tsv +2 -0
  503. data/data/pdfrb/arlington/latest/PatternType1.tsv +18 -0
  504. data/data/pdfrb/arlington/latest/PatternType2.tsv +6 -0
  505. data/data/pdfrb/arlington/latest/Permissions.tsv +3 -0
  506. data/data/pdfrb/arlington/latest/PointData.tsv +5 -0
  507. data/data/pdfrb/arlington/latest/ProjectedCoordinateSystem.tsv +4 -0
  508. data/data/pdfrb/arlington/latest/Projection.tsv +9 -0
  509. data/data/pdfrb/arlington/latest/Reference.tsv +4 -0
  510. data/data/pdfrb/arlington/latest/RelatedFilesArray.tsv +3 -0
  511. data/data/pdfrb/arlington/latest/RenditionBE.tsv +2 -0
  512. data/data/pdfrb/arlington/latest/RenditionMH.tsv +2 -0
  513. data/data/pdfrb/arlington/latest/RenditionMedia.tsv +9 -0
  514. data/data/pdfrb/arlington/latest/RenditionSelector.tsv +7 -0
  515. data/data/pdfrb/arlington/latest/Requirements3DMarkup.tsv +6 -0
  516. data/data/pdfrb/arlington/latest/RequirementsAcroFormInteract.tsv +6 -0
  517. data/data/pdfrb/arlington/latest/RequirementsAction.tsv +6 -0
  518. data/data/pdfrb/arlington/latest/RequirementsAttachment.tsv +6 -0
  519. data/data/pdfrb/arlington/latest/RequirementsAttachmentEditing.tsv +6 -0
  520. data/data/pdfrb/arlington/latest/RequirementsCollection.tsv +6 -0
  521. data/data/pdfrb/arlington/latest/RequirementsCollectionEditing.tsv +6 -0
  522. data/data/pdfrb/arlington/latest/RequirementsDPartInteract.tsv +6 -0
  523. data/data/pdfrb/arlington/latest/RequirementsDigSig.tsv +7 -0
  524. data/data/pdfrb/arlington/latest/RequirementsDigSigMDP.tsv +7 -0
  525. data/data/pdfrb/arlington/latest/RequirementsDigSigValidation.tsv +7 -0
  526. data/data/pdfrb/arlington/latest/RequirementsEnableJavaScripts.tsv +6 -0
  527. data/data/pdfrb/arlington/latest/RequirementsEncryption.tsv +7 -0
  528. data/data/pdfrb/arlington/latest/RequirementsGeospatial2D.tsv +6 -0
  529. data/data/pdfrb/arlington/latest/RequirementsGeospatial3D.tsv +6 -0
  530. data/data/pdfrb/arlington/latest/RequirementsHandler.tsv +4 -0
  531. data/data/pdfrb/arlington/latest/RequirementsMarkup.tsv +6 -0
  532. data/data/pdfrb/arlington/latest/RequirementsMultimedia.tsv +6 -0
  533. data/data/pdfrb/arlington/latest/RequirementsNavigation.tsv +6 -0
  534. data/data/pdfrb/arlington/latest/RequirementsOCAutoStates.tsv +6 -0
  535. data/data/pdfrb/arlington/latest/RequirementsOCInteract.tsv +6 -0
  536. data/data/pdfrb/arlington/latest/RequirementsPRC.tsv +6 -0
  537. data/data/pdfrb/arlington/latest/RequirementsRichMedia.tsv +6 -0
  538. data/data/pdfrb/arlington/latest/RequirementsSTEP.tsv +6 -0
  539. data/data/pdfrb/arlington/latest/RequirementsSeparationSimulation.tsv +6 -0
  540. data/data/pdfrb/arlington/latest/RequirementsTransitions.tsv +6 -0
  541. data/data/pdfrb/arlington/latest/RequirementsU3D.tsv +6 -0
  542. data/data/pdfrb/arlington/latest/RequirementsglTF.tsv +6 -0
  543. data/data/pdfrb/arlington/latest/Resource.tsv +10 -0
  544. data/data/pdfrb/arlington/latest/RichMediaActivation.tsv +8 -0
  545. data/data/pdfrb/arlington/latest/RichMediaAnimation.tsv +6 -0
  546. data/data/pdfrb/arlington/latest/RichMediaCommand.tsv +4 -0
  547. data/data/pdfrb/arlington/latest/RichMediaCommandArray.tsv +2 -0
  548. data/data/pdfrb/arlington/latest/RichMediaConfiguration.tsv +5 -0
  549. data/data/pdfrb/arlington/latest/RichMediaContent.tsv +5 -0
  550. data/data/pdfrb/arlington/latest/RichMediaCuePoint.tsv +6 -0
  551. data/data/pdfrb/arlington/latest/RichMediaDeactivation.tsv +3 -0
  552. data/data/pdfrb/arlington/latest/RichMediaHeight.tsv +4 -0
  553. data/data/pdfrb/arlington/latest/RichMediaInstance.tsv +6 -0
  554. data/data/pdfrb/arlington/latest/RichMediaParams.tsv +7 -0
  555. data/data/pdfrb/arlington/latest/RichMediaPosition.tsv +6 -0
  556. data/data/pdfrb/arlington/latest/RichMediaPresentation.tsv +8 -0
  557. data/data/pdfrb/arlington/latest/RichMediaSettings.tsv +4 -0
  558. data/data/pdfrb/arlington/latest/RichMediaWidth.tsv +4 -0
  559. data/data/pdfrb/arlington/latest/RichMediaWindow.tsv +5 -0
  560. data/data/pdfrb/arlington/latest/RoleMap.tsv +2 -0
  561. data/data/pdfrb/arlington/latest/RoleMapNS.tsv +2 -0
  562. data/data/pdfrb/arlington/latest/Separation.tsv +4 -0
  563. data/data/pdfrb/arlington/latest/SeparationColorSpace.tsv +5 -0
  564. data/data/pdfrb/arlington/latest/ShadingMap.tsv +2 -0
  565. data/data/pdfrb/arlington/latest/ShadingType1.tsv +9 -0
  566. data/data/pdfrb/arlington/latest/ShadingType2.tsv +10 -0
  567. data/data/pdfrb/arlington/latest/ShadingType3.tsv +10 -0
  568. data/data/pdfrb/arlington/latest/ShadingType4.tsv +18 -0
  569. data/data/pdfrb/arlington/latest/ShadingType5.tsv +18 -0
  570. data/data/pdfrb/arlington/latest/ShadingType6.tsv +18 -0
  571. data/data/pdfrb/arlington/latest/ShadingType7.tsv +18 -0
  572. data/data/pdfrb/arlington/latest/SigFieldLock.tsv +5 -0
  573. data/data/pdfrb/arlington/latest/SigFieldSeedValue.tsv +15 -0
  574. data/data/pdfrb/arlington/latest/Signature.tsv +20 -0
  575. data/data/pdfrb/arlington/latest/SignatureBuildDataAppDict.tsv +10 -0
  576. data/data/pdfrb/arlington/latest/SignatureBuildDataDict.tsv +9 -0
  577. data/data/pdfrb/arlington/latest/SignatureBuildDataSigQDict.tsv +10 -0
  578. data/data/pdfrb/arlington/latest/SignatureBuildPropDict.tsv +5 -0
  579. data/data/pdfrb/arlington/latest/SignatureReferenceDocMDP.tsv +8 -0
  580. data/data/pdfrb/arlington/latest/SignatureReferenceFieldMDP.tsv +8 -0
  581. data/data/pdfrb/arlington/latest/SignatureReferenceIdentity.tsv +7 -0
  582. data/data/pdfrb/arlington/latest/SignatureReferenceUR.tsv +8 -0
  583. data/data/pdfrb/arlington/latest/SlideShow.tsv +5 -0
  584. data/data/pdfrb/arlington/latest/SoftMaskAlpha.tsv +6 -0
  585. data/data/pdfrb/arlington/latest/SoftMaskLuminosity.tsv +6 -0
  586. data/data/pdfrb/arlington/latest/SoftwareIdentifier.tsv +8 -0
  587. data/data/pdfrb/arlington/latest/Solidities.tsv +3 -0
  588. data/data/pdfrb/arlington/latest/SoundObject.tsv +15 -0
  589. data/data/pdfrb/arlington/latest/SourceInformation.tsv +6 -0
  590. data/data/pdfrb/arlington/latest/SpectralData.tsv +2 -0
  591. data/data/pdfrb/arlington/latest/Stream.tsv +8 -0
  592. data/data/pdfrb/arlington/latest/StructElem.tsv +20 -0
  593. data/data/pdfrb/arlington/latest/StructTreeRoot.tsv +11 -0
  594. data/data/pdfrb/arlington/latest/StructureAttributesDict.tsv +54 -0
  595. data/data/pdfrb/arlington/latest/StyleDict.tsv +2 -0
  596. data/data/pdfrb/arlington/latest/SubjectDN.tsv +2 -0
  597. data/data/pdfrb/arlington/latest/Target.tsv +6 -0
  598. data/data/pdfrb/arlington/latest/TargetEmbedded.tsv +6 -0
  599. data/data/pdfrb/arlington/latest/Thread.tsv +5 -0
  600. data/data/pdfrb/arlington/latest/Thumbnail.tsv +15 -0
  601. data/data/pdfrb/arlington/latest/TimeStampDict.tsv +3 -0
  602. data/data/pdfrb/arlington/latest/Timespan.tsv +4 -0
  603. data/data/pdfrb/arlington/latest/ToUnicodeCMapStream.tsv +13 -0
  604. data/data/pdfrb/arlington/latest/TrailerIDArray.tsv +3 -0
  605. data/data/pdfrb/arlington/latest/Transition.tsv +9 -0
  606. data/data/pdfrb/arlington/latest/TrapRegion.tsv +3 -0
  607. data/data/pdfrb/arlington/latest/URI.tsv +2 -0
  608. data/data/pdfrb/arlington/latest/URLAlias.tsv +3 -0
  609. data/data/pdfrb/arlington/latest/URTransformParamAnnotsArray.tsv +2 -0
  610. data/data/pdfrb/arlington/latest/URTransformParamDocumentArray.tsv +2 -0
  611. data/data/pdfrb/arlington/latest/URTransformParamEFArray.tsv +2 -0
  612. data/data/pdfrb/arlington/latest/URTransformParamFormArray.tsv +2 -0
  613. data/data/pdfrb/arlington/latest/URTransformParamSignatureArray.tsv +2 -0
  614. data/data/pdfrb/arlington/latest/URTransformParameters.tsv +10 -0
  615. data/data/pdfrb/arlington/latest/UserProperty.tsv +5 -0
  616. data/data/pdfrb/arlington/latest/VRI.tsv +7 -0
  617. data/data/pdfrb/arlington/latest/VRIMap.tsv +2 -0
  618. data/data/pdfrb/arlington/latest/ViewParams.tsv +3 -0
  619. data/data/pdfrb/arlington/latest/ViewerPreferences.tsv +19 -0
  620. data/data/pdfrb/arlington/latest/Viewport.tsv +6 -0
  621. data/data/pdfrb/arlington/latest/VisibilityExpressionArray.tsv +4 -0
  622. data/data/pdfrb/arlington/latest/WebCaptureCommand.tsv +8 -0
  623. data/data/pdfrb/arlington/latest/WebCaptureCommandSettings.tsv +3 -0
  624. data/data/pdfrb/arlington/latest/WebCaptureImageSet.tsv +9 -0
  625. data/data/pdfrb/arlington/latest/WebCaptureInfo.tsv +3 -0
  626. data/data/pdfrb/arlington/latest/WebCapturePageSet.tsv +10 -0
  627. data/data/pdfrb/arlington/latest/WhitepointArray.tsv +4 -0
  628. data/data/pdfrb/arlington/latest/XObjectFormPS.tsv +10 -0
  629. data/data/pdfrb/arlington/latest/XObjectFormPSpassthrough.tsv +15 -0
  630. data/data/pdfrb/arlington/latest/XObjectFormPrinterMark.tsv +29 -0
  631. data/data/pdfrb/arlington/latest/XObjectFormTrapNet.tsv +31 -0
  632. data/data/pdfrb/arlington/latest/XObjectFormType1.tsv +32 -0
  633. data/data/pdfrb/arlington/latest/XObjectImage.tsv +35 -0
  634. data/data/pdfrb/arlington/latest/XObjectImageMask.tsv +29 -0
  635. data/data/pdfrb/arlington/latest/XObjectImageSoftMask.tsv +22 -0
  636. data/data/pdfrb/arlington/latest/XObjectMap.tsv +2 -0
  637. data/data/pdfrb/arlington/latest/XRefStream.tsv +20 -0
  638. data/data/pdfrb/arlington/latest/_UniversalArray.tsv +2 -0
  639. data/data/pdfrb/arlington/latest/_UniversalDictionary.tsv +2 -0
  640. data/data/pdfrb/glyphlist.txt +4306 -0
  641. data/data/pdfrb/zapfdingbats.txt +226 -0
  642. data/exe/pdfrb +10 -0
  643. data/lib/pdfrb/arlington/field_definition.rb +128 -0
  644. data/lib/pdfrb/arlington/loader.rb +84 -0
  645. data/lib/pdfrb/arlington/object_definition.rb +45 -0
  646. data/lib/pdfrb/arlington/pdf_version.rb +121 -0
  647. data/lib/pdfrb/arlington/predicate/ast.rb +21 -0
  648. data/lib/pdfrb/arlington/predicate/context.rb +24 -0
  649. data/lib/pdfrb/arlington/predicate/evaluator.rb +113 -0
  650. data/lib/pdfrb/arlington/predicate/functions/arithmetic.rb +67 -0
  651. data/lib/pdfrb/arlington/predicate/functions/file.rb +22 -0
  652. data/lib/pdfrb/arlington/predicate/functions/logical.rb +38 -0
  653. data/lib/pdfrb/arlington/predicate/functions/presence.rb +39 -0
  654. data/lib/pdfrb/arlington/predicate/functions/reference.rb +28 -0
  655. data/lib/pdfrb/arlington/predicate/functions/version.rb +53 -0
  656. data/lib/pdfrb/arlington/predicate/functions.rb +34 -0
  657. data/lib/pdfrb/arlington/predicate/lexer.rb +177 -0
  658. data/lib/pdfrb/arlington/predicate/parser.rb +185 -0
  659. data/lib/pdfrb/arlington/predicate.rb +22 -0
  660. data/lib/pdfrb/arlington/type.rb +41 -0
  661. data/lib/pdfrb/arlington.rb +19 -0
  662. data/lib/pdfrb/cli.rb +135 -0
  663. data/lib/pdfrb/configuration.rb +64 -0
  664. data/lib/pdfrb/conformance/pdf_a.rb +74 -0
  665. data/lib/pdfrb/conformance/pdf_ua.rb +46 -0
  666. data/lib/pdfrb/conformance.rb +11 -0
  667. data/lib/pdfrb/content/canvas.rb +248 -0
  668. data/lib/pdfrb/content/graphic_object/arc.rb +85 -0
  669. data/lib/pdfrb/content/graphic_object/curve.rb +28 -0
  670. data/lib/pdfrb/content/graphic_object/polyline.rb +27 -0
  671. data/lib/pdfrb/content/graphic_object/rectangle.rb +53 -0
  672. data/lib/pdfrb/content/graphic_object.rb +16 -0
  673. data/lib/pdfrb/content/graphics_state.rb +104 -0
  674. data/lib/pdfrb/content/operator.rb +72 -0
  675. data/lib/pdfrb/content/operators/color.rb +106 -0
  676. data/lib/pdfrb/content/operators/general.rb +50 -0
  677. data/lib/pdfrb/content/operators/graphics_state_params.rb +78 -0
  678. data/lib/pdfrb/content/operators/marked_content.rb +51 -0
  679. data/lib/pdfrb/content/operators/painting.rb +82 -0
  680. data/lib/pdfrb/content/operators/path.rb +69 -0
  681. data/lib/pdfrb/content/operators/text_positioning.rb +44 -0
  682. data/lib/pdfrb/content/operators/text_showing.rb +48 -0
  683. data/lib/pdfrb/content/operators/text_state.rb +66 -0
  684. data/lib/pdfrb/content/parser.rb +103 -0
  685. data/lib/pdfrb/content/processor.rb +81 -0
  686. data/lib/pdfrb/content.rb +38 -0
  687. data/lib/pdfrb/data_dir.rb +35 -0
  688. data/lib/pdfrb/digital_signature/handler.rb +21 -0
  689. data/lib/pdfrb/digital_signature/signing.rb +29 -0
  690. data/lib/pdfrb/digital_signature/verification.rb +22 -0
  691. data/lib/pdfrb/digital_signature.rb +11 -0
  692. data/lib/pdfrb/document/annotations.rb +44 -0
  693. data/lib/pdfrb/document/destinations.rb +22 -0
  694. data/lib/pdfrb/document/files.rb +28 -0
  695. data/lib/pdfrb/document/fonts.rb +121 -0
  696. data/lib/pdfrb/document/images.rb +57 -0
  697. data/lib/pdfrb/document/metadata.rb +64 -0
  698. data/lib/pdfrb/document/pages.rb +134 -0
  699. data/lib/pdfrb/document.rb +343 -0
  700. data/lib/pdfrb/encryption/aes.rb +68 -0
  701. data/lib/pdfrb/encryption/password_verification.rb +112 -0
  702. data/lib/pdfrb/encryption/rc4.rb +45 -0
  703. data/lib/pdfrb/encryption/security_handler.rb +65 -0
  704. data/lib/pdfrb/encryption/standard_security_handler.rb +117 -0
  705. data/lib/pdfrb/encryption.rb +20 -0
  706. data/lib/pdfrb/error.rb +92 -0
  707. data/lib/pdfrb/filter/ascii_85_decode.rb +79 -0
  708. data/lib/pdfrb/filter/ascii_hex_decode.rb +37 -0
  709. data/lib/pdfrb/filter/base.rb +32 -0
  710. data/lib/pdfrb/filter/crypt.rb +36 -0
  711. data/lib/pdfrb/filter/flate_decode.rb +137 -0
  712. data/lib/pdfrb/filter/lzw_decode.rb +124 -0
  713. data/lib/pdfrb/filter/passthrough_filters.rb +55 -0
  714. data/lib/pdfrb/filter/run_length_decode.rb +72 -0
  715. data/lib/pdfrb/filter.rb +64 -0
  716. data/lib/pdfrb/font/afm_parser.rb +84 -0
  717. data/lib/pdfrb/font/cmap/parser.rb +96 -0
  718. data/lib/pdfrb/font/cmap/writer.rb +46 -0
  719. data/lib/pdfrb/font/cmap.rb +10 -0
  720. data/lib/pdfrb/font/encoding/mac_roman_encoding.rb +25 -0
  721. data/lib/pdfrb/font/encoding/pdf_doc_encoding.rb +16 -0
  722. data/lib/pdfrb/font/encoding/standard_encoding.rb +24 -0
  723. data/lib/pdfrb/font/encoding/win_ansi_encoding.rb +25 -0
  724. data/lib/pdfrb/font/encoding/zapf_dingbats_encoding.rb +13 -0
  725. data/lib/pdfrb/font/encoding.rb +36 -0
  726. data/lib/pdfrb/font/glyph_list.rb +56 -0
  727. data/lib/pdfrb/font/true_type/cmap.rb +240 -0
  728. data/lib/pdfrb/font/true_type/file.rb +85 -0
  729. data/lib/pdfrb/font/true_type/head.rb +43 -0
  730. data/lib/pdfrb/font/true_type/hhea.rb +36 -0
  731. data/lib/pdfrb/font/true_type/hmtx.rb +58 -0
  732. data/lib/pdfrb/font/true_type/os2.rb +51 -0
  733. data/lib/pdfrb/font/true_type/subsetter.rb +28 -0
  734. data/lib/pdfrb/font/true_type.rb +14 -0
  735. data/lib/pdfrb/font/type1/font_metrics.rb +46 -0
  736. data/lib/pdfrb/font/type1.rb +9 -0
  737. data/lib/pdfrb/font.rb +18 -0
  738. data/lib/pdfrb/font_loader/true_type.rb +62 -0
  739. data/lib/pdfrb/font_loader/type1.rb +27 -0
  740. data/lib/pdfrb/font_loader.rb +10 -0
  741. data/lib/pdfrb/image_loader/jpeg.rb +90 -0
  742. data/lib/pdfrb/image_loader/pdf.rb +28 -0
  743. data/lib/pdfrb/image_loader/png.rb +282 -0
  744. data/lib/pdfrb/image_loader.rb +64 -0
  745. data/lib/pdfrb/importer.rb +78 -0
  746. data/lib/pdfrb/model/cos/dictionary.rb +310 -0
  747. data/lib/pdfrb/model/cos/fields.rb +215 -0
  748. data/lib/pdfrb/model/cos/name_encoding.rb +64 -0
  749. data/lib/pdfrb/model/cos/stream.rb +96 -0
  750. data/lib/pdfrb/model/cos/string_encoding.rb +135 -0
  751. data/lib/pdfrb/model/cos.rb +20 -0
  752. data/lib/pdfrb/model/date.rb +82 -0
  753. data/lib/pdfrb/model/matrix.rb +85 -0
  754. data/lib/pdfrb/model/object.rb +76 -0
  755. data/lib/pdfrb/model/pdf_array.rb +63 -0
  756. data/lib/pdfrb/model/rectangle.rb +54 -0
  757. data/lib/pdfrb/model/reference.rb +49 -0
  758. data/lib/pdfrb/model/type/action.rb +33 -0
  759. data/lib/pdfrb/model/type/af_embedded_file.rb +12 -0
  760. data/lib/pdfrb/model/type/af_file_specification.rb +13 -0
  761. data/lib/pdfrb/model/type/annotation.rb +50 -0
  762. data/lib/pdfrb/model/type/catalog.rb +50 -0
  763. data/lib/pdfrb/model/type/cid_font.rb +13 -0
  764. data/lib/pdfrb/model/type/embedded_file.rb +13 -0
  765. data/lib/pdfrb/model/type/encryption_public_key.rb +12 -0
  766. data/lib/pdfrb/model/type/encryption_standard.rb +12 -0
  767. data/lib/pdfrb/model/type/file_specification.rb +12 -0
  768. data/lib/pdfrb/model/type/file_trailer.rb +14 -0
  769. data/lib/pdfrb/model/type/font.rb +13 -0
  770. data/lib/pdfrb/model/type/font_descriptor.rb +12 -0
  771. data/lib/pdfrb/model/type/font_true_type.rb +12 -0
  772. data/lib/pdfrb/model/type/font_type0.rb +12 -0
  773. data/lib/pdfrb/model/type/font_type1.rb +12 -0
  774. data/lib/pdfrb/model/type/font_type3.rb +13 -0
  775. data/lib/pdfrb/model/type/graphics_state_parameter.rb +17 -0
  776. data/lib/pdfrb/model/type/info.rb +15 -0
  777. data/lib/pdfrb/model/type/interactive_form.rb +12 -0
  778. data/lib/pdfrb/model/type/metadata.rb +18 -0
  779. data/lib/pdfrb/model/type/names.rb +14 -0
  780. data/lib/pdfrb/model/type/object_stream.rb +14 -0
  781. data/lib/pdfrb/model/type/optional_content_group.rb +25 -0
  782. data/lib/pdfrb/model/type/optional_content_membership.rb +13 -0
  783. data/lib/pdfrb/model/type/optional_content_properties.rb +12 -0
  784. data/lib/pdfrb/model/type/outline.rb +20 -0
  785. data/lib/pdfrb/model/type/outline_item.rb +13 -0
  786. data/lib/pdfrb/model/type/output_intent.rb +12 -0
  787. data/lib/pdfrb/model/type/page.rb +86 -0
  788. data/lib/pdfrb/model/type/page_tree_node.rb +46 -0
  789. data/lib/pdfrb/model/type/resources.rb +53 -0
  790. data/lib/pdfrb/model/type/struct_elem.rb +15 -0
  791. data/lib/pdfrb/model/type/struct_tree_root.rb +15 -0
  792. data/lib/pdfrb/model/type/xobject_form.rb +13 -0
  793. data/lib/pdfrb/model/type/xobject_image.rb +13 -0
  794. data/lib/pdfrb/model/type/xref_stream.rb +14 -0
  795. data/lib/pdfrb/model/type.rb +78 -0
  796. data/lib/pdfrb/model.rb +27 -0
  797. data/lib/pdfrb/pdf_constants.rb +42 -0
  798. data/lib/pdfrb/serializer.rb +174 -0
  799. data/lib/pdfrb/source/header_reader.rb +34 -0
  800. data/lib/pdfrb/source/helpers.rb +25 -0
  801. data/lib/pdfrb/source/linearization_detection.rb +34 -0
  802. data/lib/pdfrb/source/object_reader.rb +132 -0
  803. data/lib/pdfrb/source/object_stream_reader.rb +32 -0
  804. data/lib/pdfrb/source/parser.rb +281 -0
  805. data/lib/pdfrb/source/recovery.rb +35 -0
  806. data/lib/pdfrb/source/token.rb +15 -0
  807. data/lib/pdfrb/source/tokenizer.rb +320 -0
  808. data/lib/pdfrb/source/tokenizer.rb.bak +320 -0
  809. data/lib/pdfrb/source/trailer_reader.rb +32 -0
  810. data/lib/pdfrb/source/xref_stream_reader.rb +52 -0
  811. data/lib/pdfrb/source/xref_table_reader.rb +72 -0
  812. data/lib/pdfrb/source.rb +24 -0
  813. data/lib/pdfrb/task/extract_images.rb +53 -0
  814. data/lib/pdfrb/task/extract_text.rb +232 -0
  815. data/lib/pdfrb/task/merge.rb +47 -0
  816. data/lib/pdfrb/task/optimize.rb +18 -0
  817. data/lib/pdfrb/task.rb +13 -0
  818. data/lib/pdfrb/version.rb +5 -0
  819. data/lib/pdfrb/writer.rb +144 -0
  820. data/lib/pdfrb/xref_section.rb +51 -0
  821. data/lib/pdfrb.rb +97 -0
  822. metadata +890 -0
@@ -0,0 +1,232 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pdfrb
4
+ module Task
5
+ # Extract plain text from a document by walking each page's
6
+ # content stream. Decodes glyph codes back to Unicode using:
7
+ #
8
+ # 1. The font's /ToUnicode CMap (preferred — gives proper
9
+ # Unicode for CIDFont / embedded TTF fonts).
10
+ # 2. The font's /Encoding + AdobeStandardEncoding glyph names
11
+ # (fallback for Type1 standard fonts).
12
+ # 3. ASCII passthrough (last resort).
13
+ #
14
+ # Tracks the text matrix to insert line breaks at vertical moves
15
+ # and approximate paragraph breaks.
16
+ module ExtractText
17
+ module_function
18
+
19
+ def call(document)
20
+ results = []
21
+ document.pages.each do |page|
22
+ extractor = TextCollector.new(document, page)
23
+ begin
24
+ extractor.process(page.decoded_content)
25
+ rescue StandardError
26
+ # Malformed content stream — best effort, skip.
27
+ end
28
+ text = extractor.text
29
+ block_given? ? yield(page, text) : (results << text)
30
+ end
31
+ block_given? ? document : results
32
+ end
33
+
34
+ # Internal: collects bytes from +Tj+ / +TJ+ / +'+ / +"'.
35
+ # Tracks text-matrix y to insert line breaks at vertical moves.
36
+ # Resolves glyph codes to Unicode via the active font's
37
+ # /ToUnicode CMap or /Encoding.
38
+ class TextCollector < Pdfrb::Content::Processor
39
+ attr_reader :text
40
+
41
+ def initialize(document, page)
42
+ super()
43
+ @document = document
44
+ @page = page
45
+ @text = +""
46
+ @last_y = nil
47
+ @font_resolver = FontResolver.new(document, page)
48
+ end
49
+
50
+ def show_text(str)
51
+ check_line_break
52
+ @text << decode(str)
53
+ end
54
+
55
+ def show_text_array(arr)
56
+ check_line_break
57
+ arr.each do |e|
58
+ case e
59
+ when ::String then @text << decode(e)
60
+ when Numeric then next # kerning adjustment; ignore
61
+ end
62
+ end
63
+ end
64
+
65
+ def move_text(tx, ty, **)
66
+ super
67
+ check_line_break
68
+ end
69
+
70
+ def update_text_state(**overrides)
71
+ super
72
+ @font_resolver.activate(graphics_state.text_state.font_name) if overrides.key?(:font_name)
73
+ end
74
+
75
+ private
76
+
77
+ def check_line_break
78
+ cur_y = graphics_state.text_state.text_matrix.f
79
+ if @last_y && (cur_y - @last_y).abs > 0.001
80
+ @text << "\n"
81
+ end
82
+ @last_y = cur_y
83
+ end
84
+
85
+ def decode(bytes)
86
+ @font_resolver.decode(bytes)
87
+ end
88
+ end
89
+
90
+ # Resolves glyph codes to Unicode strings for the active font.
91
+ class FontResolver
92
+ def initialize(document, page)
93
+ @document = document
94
+ @page = page
95
+ @cache = {} # font_name -> decoder (CMap or Encoding)
96
+ @active = nil
97
+ end
98
+
99
+ def activate(font_name)
100
+ return if font_name.nil? || font_name == @active_name
101
+
102
+ @active_name = font_name
103
+ @active = loader_for(font_name)
104
+ end
105
+
106
+ def decode(bytes)
107
+ return bytes.to_s.dup.force_encoding("UTF-8") unless @active
108
+
109
+ @active.decode(bytes.to_s)
110
+ end
111
+
112
+ private
113
+
114
+ def loader_for(font_name)
115
+ return @cache[font_name] if @cache.key?(font_name)
116
+
117
+ @cache[font_name] = build_decoder(font_name)
118
+ end
119
+
120
+ def build_decoder(font_name)
121
+ font_dict = find_font(font_name)
122
+ return IdentityDecoder.new unless font_dict
123
+
124
+ ToUnicodeDecoder.new(font_dict) || EncodingDecoder.new(font_dict) || IdentityDecoder.new
125
+ end
126
+
127
+ def find_font(name)
128
+ resources = @page[:Resources]
129
+ return nil unless resources
130
+
131
+ resources = @document.object(resources) if resources.is_a?(Pdfrb::Model::Reference)
132
+ fonts = resources[:Font]
133
+ return nil unless fonts
134
+
135
+ fonts = @document.object(fonts) if fonts.is_a?(Pdfrb::Model::Reference)
136
+ return nil unless fonts.is_a?(::Hash)
137
+
138
+ entry = fonts[name] || fonts[name.to_sym] || fonts[name.to_s]
139
+ entry.is_a?(Pdfrb::Model::Reference) ? @document.object(entry) : entry
140
+ end
141
+ end
142
+ private_constant :FontResolver
143
+
144
+ # Uses the font's /ToUnicode CMap to decode glyph codes.
145
+ class ToUnicodeDecoder
146
+ def initialize(font_dict)
147
+ @font_dict = font_dict
148
+ @cmap = parse_tounicode(font_dict[:ToUnicode])
149
+ end
150
+
151
+ def self.for(font_dict); new(font_dict); end
152
+
153
+ def decode(bytes)
154
+ return bytes unless @cmap
155
+
156
+ bytes_to_unicode(bytes)
157
+ end
158
+
159
+ private
160
+
161
+ def parse_tounicode(ref)
162
+ return nil unless ref
163
+
164
+ doc = @font_dict.respond_to?(:document) ? @font_dict.document : nil
165
+ stream = if ref.is_a?(Pdfrb::Model::Reference) && doc
166
+ doc.object(ref)
167
+ else
168
+ ref
169
+ end
170
+ return nil unless stream.is_a?(Pdfrb::Model::Cos::Stream)
171
+
172
+ data = stream.decoded_stream
173
+ Pdfrb::Font::CMap::Parser.parse(data)
174
+ rescue StandardError
175
+ nil
176
+ end
177
+
178
+ def bytes_to_unicode(bytes)
179
+ result = +""
180
+ i = 0
181
+ while i < bytes.length
182
+ # Try 2-byte code first (most CIDFonts use 2-byte codes).
183
+ code2 = bytes.getbyte(i) * 256
184
+ code2 += bytes.getbyte(i + 1) if i + 1 < bytes.length
185
+ decoded = @cmap.decode(code2)
186
+ if decoded
187
+ result << decoded
188
+ i += 2
189
+ next
190
+ end
191
+
192
+ code1 = bytes.getbyte(i)
193
+ decoded1 = @cmap.decode(code1)
194
+ result << (decoded1 || fallback_char(code1))
195
+ i += 1
196
+ end
197
+ result
198
+ end
199
+
200
+ def fallback_char(byte)
201
+ byte < 128 ? byte.chr : "?"
202
+ end
203
+ end
204
+ private_constant :ToUnicodeDecoder
205
+
206
+ # Uses the font's /Encoding (WinAnsiEncoding etc.) to decode bytes.
207
+ class EncodingDecoder
208
+ def initialize(font_dict)
209
+ @font_dict = font_dict
210
+ end
211
+
212
+ def decode(bytes)
213
+ encoding_name = @font_dict[:Encoding]
214
+ case encoding_name
215
+ when Symbol, ::String
216
+ Pdfrb::Font::Encoding.decode(encoding_name, bytes)
217
+ else
218
+ bytes
219
+ end
220
+ end
221
+ end
222
+ private_constant :EncodingDecoder
223
+
224
+ # Identity passthrough — assumes bytes are already UTF-8 (or
225
+ # just gives back raw bytes for the caller to handle).
226
+ class IdentityDecoder
227
+ def decode(bytes); bytes.to_s; end
228
+ end
229
+ private_constant :IdentityDecoder
230
+ end
231
+ end
232
+ end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pdfrb
4
+ module Task
5
+ # Merge multiple source PDFs into a target Document. Each source
6
+ # page is deep-copied via +Importer+ (which preserves resources,
7
+ # fonts, content streams). Source documents remain unchanged.
8
+ module Merge
9
+ module_function
10
+
11
+ def call(target, *sources)
12
+ sources.each { |src| import_all_pages(target, src) }
13
+ target
14
+ end
15
+
16
+ def import_all_pages(target, source)
17
+ importer = Pdfrb::Importer.new(target)
18
+ source.pages.each do |page|
19
+ new_value = importer.import(page.value, source)
20
+ new_value[:Parent] = parent_ref(target)
21
+ new_page = target.add(new_value, type: Pdfrb::Model::Type::Page)
22
+ kids = pages_root(target).value[:Kids]
23
+ kids << Pdfrb::Model::Reference.new(new_page.oid, new_page.gen)
24
+ pages_root(target).value[:Count] = (pages_root(target).value[:Count] || 0) + 1
25
+ end
26
+ end
27
+ private_class_method :import_all_pages
28
+
29
+ def pages_root(target)
30
+ ref = target.catalog.value[:Pages] || begin
31
+ root = target.add({ Type: :Pages, Kids: [], Count: 0 },
32
+ type: Pdfrb::Model::Type::PageTreeNode)
33
+ target.catalog.value[:Pages] = Pdfrb::Model::Reference.new(root.oid, 0)
34
+ target.catalog.value[:Pages]
35
+ end
36
+ target.object(ref)
37
+ end
38
+ private_class_method :pages_root
39
+
40
+ def parent_ref(target)
41
+ root = pages_root(target)
42
+ Pdfrb::Model::Reference.new(root.oid, root.gen)
43
+ end
44
+ private_class_method :parent_ref
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pdfrb
4
+ module Task
5
+ # Placeholder for the optimise task. Real implementation needs
6
+ # TODO 31 (object-stream packing) + dedup hash + xref-stream
7
+ # conversion. For now: no-op pass-through so the CLI can wire
8
+ # without raising.
9
+ module Optimize
10
+ module_function
11
+
12
+ def call(document, **_opts)
13
+ # TODO: dedup, pack into ObjStm, switch to xref stream.
14
+ document
15
+ end
16
+ end
17
+ end
18
+ end
data/lib/pdfrb/task.rb ADDED
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pdfrb
4
+ # Bulk operations on a Document. Each task is a module under Task::*
5
+ # with a `.call(document, **opts)` class method. Adding a new task
6
+ # = adding one module file (open/closed via the CLI wiring).
7
+ module Task
8
+ autoload :ExtractText, "pdfrb/task/extract_text"
9
+ autoload :ExtractImages, "pdfrb/task/extract_images"
10
+ autoload :Merge, "pdfrb/task/merge"
11
+ autoload :Optimize, "pdfrb/task/optimize"
12
+ end
13
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pdfrb
4
+ VERSION = "0.1.0"
5
+ end
@@ -0,0 +1,144 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pdfrb
4
+ # Writes a Document to an IO as a complete PDF file: header,
5
+ # indirect objects, xref section, trailer.
6
+ #
7
+ # Two modes:
8
+ # * +write+ (default) — full rewrite; assign oids to new objects,
9
+ # emit every object the document references.
10
+ # * +write_incremental+ — append a new revision to an existing
11
+ # byte stream. Only valid when the document was opened from an
12
+ # IO; the original bytes are preserved verbatim, and a new
13
+ # xref + trailer are appended with /Prev pointing back.
14
+ class Writer
15
+ DEFAULT_VERSION = "1.4"
16
+
17
+ attr_reader :document, :io, :serializer
18
+
19
+ def initialize(document, io)
20
+ @document = document
21
+ @io = io
22
+ @serializer = Serializer.new(
23
+ compress_streams: document.config["writer.compress_streams"],
24
+ compress_min_size: document.config["writer.compress_min_size"]
25
+ )
26
+ @xref_offsets = {} # oid -> byte offset
27
+ end
28
+
29
+ def self.write(document, io)
30
+ new(document, io).write
31
+ end
32
+
33
+ def self.write_incremental(document, io)
34
+ new(document, io).write_incremental
35
+ end
36
+
37
+ def write
38
+ @io.binmode
39
+ @io.truncate(0) if @io.respond_to?(:truncate)
40
+ write_header
41
+ dispatch_before_write
42
+ each_indirect_object do |obj|
43
+ @xref_offsets[obj.oid] = @io.pos
44
+ @io << @serializer.serialize_indirect(obj)
45
+ end
46
+ xref_pos = write_xref
47
+ write_trailer(xref_pos)
48
+ @io.flush
49
+ self
50
+ end
51
+
52
+ # Append a new revision to the original byte stream. Requires the
53
+ # document to have been opened from an IO (so we can copy its
54
+ # original bytes verbatim) and the IO the writer is given is the
55
+ # target output.
56
+ def write_incremental
57
+ raise Pdfrb::Error, "incremental write requires a source IO" unless document.io
58
+
59
+ @io.binmode
60
+ # Copy the original bytes verbatim.
61
+ document.io.seek(0, IO::SEEK_SET)
62
+ @io << document.io.read
63
+ dispatch_before_write
64
+ # Emit only the modified objects.
65
+ document.instance_variable_get(:@objects).each_value do |obj|
66
+ next unless obj.indirect?
67
+
68
+ @xref_offsets[obj.oid] = @io.pos
69
+ @io << @serializer.serialize_indirect(obj)
70
+ end
71
+ xref_pos = write_xref(prev: previous_xref_offset)
72
+ write_trailer(xref_pos, prev: previous_xref_offset)
73
+ @io.flush
74
+ self
75
+ end
76
+
77
+ private
78
+
79
+ def write_header
80
+ @io << "%PDF-#{version}\n"
81
+ @io << "%\xE2\xE3\xCF\xD3\n"
82
+ end
83
+
84
+ def write_xref(prev: nil)
85
+ pos = @io.pos
86
+ oids = @xref_offsets.keys.sort
87
+ max_oid = oids.max || 0
88
+ @io << "xref\n"
89
+ @io << "0 #{max_oid + 1}\n"
90
+ @io << sprintf("0000000000 65535 f \r\n")
91
+ (1..max_oid).each do |oid|
92
+ offset = @xref_offsets[oid]
93
+ if offset
94
+ @io << sprintf("%010d %05d n \r\n", offset, 0)
95
+ else
96
+ @io << sprintf("0000000000 00000 f \r\n")
97
+ end
98
+ end
99
+ pos
100
+ end
101
+
102
+ def write_trailer(xref_pos, prev: nil)
103
+ root = document.catalog
104
+ root_ref = root && root.respond_to?(:indirect?) && root.indirect? ?
105
+ Pdfrb::Model::Reference.new(root.oid, root.gen) : nil
106
+ size = [(@xref_offsets.keys.max || 0) + 1, document.instance_variable_get(:@next_oid) || 1].max
107
+
108
+ existing = document.trailer || {}
109
+ trailer_hash = {}
110
+ existing.each do |k, v|
111
+ next if %i[Size Root Prev XRefStm].include?(k)
112
+
113
+ trailer_hash[k] = v
114
+ end
115
+ trailer_hash[:Size] = size
116
+ trailer_hash[:Root] = root_ref if root_ref
117
+ trailer_hash[:Prev] = prev if prev
118
+
119
+ @io << "trailer\n"
120
+ @io << @serializer.serialize(trailer_hash)
121
+ @io << "\nstartxref\n#{xref_pos}\n%%EOF\n"
122
+ end
123
+
124
+ def previous_xref_offset
125
+ @previous_xref_offset ||= begin
126
+ # Re-scan the source's startxref. Same logic as TrailerReader
127
+ # but the source IO is the document's.
128
+ Pdfrb::Source::TrailerReader.startxref_offset(document.io)
129
+ end
130
+ end
131
+
132
+ def dispatch_before_write
133
+ document.dispatch_message(:before_write)
134
+ end
135
+
136
+ def version
137
+ document.version || DEFAULT_VERSION
138
+ end
139
+
140
+ def each_indirect_object
141
+ document.each_indirect_object { |obj| yield obj }
142
+ end
143
+ end
144
+ end
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pdfrb
4
+ # In-memory cross-reference section (s7.5.4). Maps oid -> Entry
5
+ # where each Entry is one of:
6
+ # * :in_use — at +offset+ in the file, generation +gen+.
7
+ # * :free — head of free list (with next-free oid +gen+).
8
+ # * :compressed — inside ObjStm +obj_stm_oid+ at index +index+.
9
+ class XrefSection
10
+ Entry = Struct.new(:type, :offset, :gen, :obj_stm_oid, :index, keyword_init: true) do
11
+ def in_use?; type == :in_use; end
12
+ def free?; type == :free; end
13
+ def compressed?; type == :compressed; end
14
+ end
15
+
16
+ attr_reader :entries, :size
17
+
18
+ def initialize(size: 0)
19
+ @entries = {}
20
+ @size = size
21
+ end
22
+
23
+ def add_in_use(oid, gen, offset)
24
+ @entries[oid] = Entry.new(type: :in_use, offset: offset, gen: gen)
25
+ @size = [@size, oid + 1].max
26
+ end
27
+
28
+ def add_free(oid, gen, next_free)
29
+ @entries[oid] = Entry.new(type: :free, offset: next_free, gen: gen)
30
+ end
31
+
32
+ def add_compressed(oid, obj_stm_oid, index)
33
+ @entries[oid] = Entry.new(type: :compressed, obj_stm_oid: obj_stm_oid, index: index)
34
+ @size = [@size, oid + 1].max
35
+ end
36
+
37
+ def [](oid)
38
+ @entries[oid]
39
+ end
40
+
41
+ def each_entry(&block)
42
+ @entries.each(&block)
43
+ end
44
+
45
+ def merge!(other)
46
+ other.entries.each { |oid, e| @entries[oid] = e unless @entries.key?(oid) }
47
+ @size = [@size, other.size].max
48
+ self
49
+ end
50
+ end
51
+ end
data/lib/pdfrb.rb ADDED
@@ -0,0 +1,97 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Pdfrb — pure-Ruby PDF library.
4
+ #
5
+ # Two-direction contract:
6
+ # * "PDF file <=> Model" — parse PDF bytes into a typed Model, serialize
7
+ # a Model back to PDF bytes. Round-trip is the correctness backbone.
8
+ # * "API Builder Input => Model" — Document / Canvas build a typed
9
+ # Model from user intent, which is then serialized.
10
+ #
11
+ # Pdfrb is deliberately scoped to the PDF byte format. Layout concerns
12
+ # (page templates, flows, line breaking, tables, etc.) live in the
13
+ # sibling `arroolio` gem.
14
+ #
15
+ # The PDF object model is sourced directly from the vendored Arlington
16
+ # PDF Model TSVs (data/pdfrb/arlington/*.tsv). Field metadata, version
17
+ # predicates, and validators stay aligned with ISO 32000-2:2020 by data,
18
+ # not by hand-coded mimicry.
19
+ #
20
+ # Layering (mirrors the sibling postscript gem):
21
+ # Source — bytes → tokens → COS graph (read direction)
22
+ # Model — typed domain model (COS values + Type::* semantics)
23
+ # Arlington — TSV loader + predicate evaluator (drives Model field defs)
24
+ # Filter — stream filter pipeline (Flate, ASCII-85, LZW, ...)
25
+ # Content — content-stream operators + Canvas drawing API
26
+ # Serializer — Model → bytes
27
+ # Writer — Document → file (xref + trailer assembly)
28
+ # Document — top-level facade
29
+ module Pdfrb
30
+ autoload :VERSION, "pdfrb/version"
31
+
32
+ # Errors — every failure mode in the gem subclasses Pdfrb::Error.
33
+ autoload :Error, "pdfrb/error"
34
+ autoload :ParseError, "pdfrb/error"
35
+ autoload :LexError, "pdfrb/error"
36
+ autoload :SyntaxError, "pdfrb/error"
37
+ autoload :MalformedPdfError, "pdfrb/error"
38
+ autoload :SerializeError, "pdfrb/error"
39
+ autoload :FilterError, "pdfrb/error"
40
+ autoload :EncryptionError, "pdfrb/error"
41
+ autoload :UnsupportedVersionError, "pdfrb/error"
42
+ autoload :ValidationError, "pdfrb/error"
43
+ autoload :ObjectReferenceError, "pdfrb/error"
44
+
45
+ # Cross-cutting helpers.
46
+ autoload :Configuration, "pdfrb/configuration"
47
+ autoload :DataDir, "pdfrb/data_dir"
48
+ autoload :PdfConstants, "pdfrb/pdf_constants"
49
+
50
+ # Sub-namespaces. Each lives in its own file which holds the autoloads
51
+ # for that namespace's children (the "immediate parent" rule).
52
+ autoload :Source, "pdfrb/source"
53
+ autoload :Model, "pdfrb/model"
54
+ autoload :Arlington, "pdfrb/arlington"
55
+ autoload :Filter, "pdfrb/filter"
56
+ autoload :Content, "pdfrb/content"
57
+ autoload :Encryption, "pdfrb/encryption"
58
+ autoload :DigitalSignature, "pdfrb/digital_signature"
59
+
60
+ # Eager-load Type::* subclasses so they self-register in the
61
+ # /Type-symbol type_map before any wrap call happens. Without
62
+ # this, the first read of a Catalog wouldn't upgrade to
63
+ # Type::Catalog (because the constant hadn't been autoloaded yet
64
+ # and therefore hadn't called register_type).
65
+ require "pdfrb/model/type/file_trailer"
66
+ require "pdfrb/model/type/catalog"
67
+ require "pdfrb/model/type/info"
68
+ require "pdfrb/model/type/page_tree_node"
69
+ require "pdfrb/model/type/page"
70
+ require "pdfrb/model/type/resources"
71
+ require "pdfrb/model/type/metadata"
72
+ require "pdfrb/model/type/object_stream"
73
+ require "pdfrb/model/type/xref_stream"
74
+ require "pdfrb/model/type/graphics_state_parameter"
75
+ require "pdfrb/model/type/optional_content_group"
76
+ require "pdfrb/model/type/struct_tree_root"
77
+ require "pdfrb/model/type/font_type1"
78
+ require "pdfrb/model/type/annotation"
79
+ require "pdfrb/model/type/action"
80
+ autoload :Font, "pdfrb/font"
81
+ autoload :FontLoader, "pdfrb/font_loader"
82
+ autoload :ImageLoader, "pdfrb/image_loader"
83
+ autoload :Task, "pdfrb/task"
84
+
85
+ # Top-level orchestrators.
86
+ autoload :Serializer, "pdfrb/serializer"
87
+ autoload :Writer, "pdfrb/writer"
88
+ autoload :Importer, "pdfrb/importer"
89
+ autoload :Revision, "pdfrb/revision"
90
+ autoload :Revisions, "pdfrb/revisions"
91
+ autoload :XrefSection, "pdfrb/xref_section"
92
+ autoload :Document, "pdfrb/document"
93
+
94
+ # CLI (only loaded when invoked via the +pdfrb+ executable; avoids
95
+ # pulling in thor for library-only users).
96
+ autoload :CLI, "pdfrb/cli"
97
+ end