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,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pdfrb
4
+ module Font
5
+ module Type1
6
+ autoload :FontMetrics, "pdfrb/font/type1/font_metrics"
7
+ end
8
+ end
9
+ end
data/lib/pdfrb/font.rb ADDED
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pdfrb
4
+ # Font machinery: encoding tables, CMap parser, TrueType file parser,
5
+ # AFM metrics, font loaders. Consumed by +Document::Fonts+.
6
+ module Font
7
+ autoload :Encoding, "pdfrb/font/encoding"
8
+ autoload :GlyphList, "pdfrb/font/glyph_list"
9
+ autoload :AFMParser, "pdfrb/font/afm_parser"
10
+ autoload :CMap, "pdfrb/font/cmap"
11
+ autoload :TrueType, "pdfrb/font/true_type"
12
+ autoload :Type1, "pdfrb/font/type1"
13
+ end
14
+
15
+ # Top-level font loader registry. Extends what +Document::Fonts+
16
+ # already supports by adding TrueType and Type1 loaders.
17
+ autoload :FontLoader, "pdfrb/font_loader"
18
+ end
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pdfrb
4
+ module FontLoader
5
+ # TrueType font loader. Reads a .ttf file, builds the PDF font
6
+ # dict + descriptor, and embeds the font file (optionally
7
+ # subsetted).
8
+ module TrueType
9
+ module_function
10
+
11
+ def call(document, name_or_io, embedded: true, **_opts)
12
+ return nil unless name_or_io.is_a?(::String) && File.exist?(name_or_io)
13
+ return nil unless name_or_io.end_with?(".ttf", ".otf")
14
+
15
+ font_data = File.binread(name_or_io)
16
+ ttf = Pdfrb::Font::TrueType::File.new(font_data)
17
+
18
+ base_font = File.basename(name_or_io, ".*")
19
+ font_dict = document.add(
20
+ {
21
+ Type: :Font,
22
+ Subtype: :TrueType,
23
+ BaseFont: base_font.to_sym,
24
+ FirstChar: 0,
25
+ LastChar: 255
26
+ },
27
+ type: Pdfrb::Model::Type::FontTrueType
28
+ )
29
+
30
+ if embedded
31
+ font_stream = document.add(
32
+ { Length1: font_data.bytesize },
33
+ type: Pdfrb::Model::Cos::Stream
34
+ )
35
+ font_stream.stream = font_data
36
+
37
+ descriptor = document.add(
38
+ {
39
+ Type: :FontDescriptor,
40
+ FontName: base_font.to_sym,
41
+ Flags: 32,
42
+ FontBBox: [0, 0, 1000, 1000],
43
+ ItalicAngle: 0,
44
+ Ascent: 800,
45
+ Descent: -200,
46
+ CapHeight: 700,
47
+ StemV: 80,
48
+ FontFile2: Pdfrb::Model::Reference.new(font_stream.oid, 0)
49
+ },
50
+ type: Pdfrb::Model::Type::FontDescriptor
51
+ )
52
+ font_dict.value[:FontDescriptor] =
53
+ Pdfrb::Model::Reference.new(descriptor.oid, 0)
54
+ end
55
+
56
+ font_dict
57
+ end
58
+ end
59
+ end
60
+ end
61
+
62
+ Pdfrb::Document::Fonts.register_loader(Pdfrb::FontLoader::TrueType)
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pdfrb
4
+ module FontLoader
5
+ # Type1 font loader. For the 14 standard fonts, no embedding
6
+ # is needed. For custom Type1 fonts, parses the AFM and embeds
7
+ # the PFB via /FontFile.
8
+ module Type1
9
+ module_function
10
+
11
+ def call(document, name_or_io, **_opts)
12
+ case name_or_io
13
+ when ::String
14
+ if Pdfrb::Document::Fonts::STANDARDS.include?(name_or_io)
15
+ return document.add(
16
+ { Type: :Font, Subtype: :Type1, BaseFont: name_or_io.to_sym },
17
+ type: Pdfrb::Model::Type::FontType1
18
+ )
19
+ end
20
+ nil
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+
27
+ Pdfrb::Document::Fonts.register_loader(Pdfrb::FontLoader::Type1)
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pdfrb
4
+ # Font loader registry. Extends the 14-standard-font loader in
5
+ # +Document::Fonts+ with TrueType and Type1 font file loaders.
6
+ module FontLoader
7
+ autoload :TrueType, "pdfrb/font_loader/true_type"
8
+ autoload :Type1, "pdfrb/font_loader/type1"
9
+ end
10
+ end
@@ -0,0 +1,90 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pdfrb
4
+ module ImageLoader
5
+ # JPEG loader. Parses the SOI/SOFn marker stream to extract width,
6
+ # height, bits-per-component, and number of components. The raw
7
+ # JPEG bytes are stored verbatim with /Filter /DCTDecode — no
8
+ # re-encoding.
9
+ module JPEG
10
+ SOI = "\xFF\xD8".b
11
+ SOFN_MARKERS = [
12
+ 0xFFC0, 0xFFC1, 0xFFC2, 0xFFC3,
13
+ 0xFFC5, 0xFFC6, 0xFFC7,
14
+ 0xFFC9, 0xFFCA, 0xFFCB,
15
+ 0xFFCD, 0xFFCE, 0xFFCF
16
+ ].freeze
17
+ private_constant :SOI, :SOFN_MARKERS
18
+
19
+ module_function
20
+
21
+ def call(document, bytes, **_opts)
22
+ return nil unless bytes.is_a?(::String) && bytes.start_with?(SOI)
23
+
24
+ info = parse_header(bytes)
25
+ image = document.add(
26
+ {
27
+ Type: :XObject,
28
+ Subtype: :Image,
29
+ Width: info[:width],
30
+ Height: info[:height],
31
+ BitsPerComponent: info[:precision],
32
+ ColorSpace: info[:color_space],
33
+ Filter: :DCTDecode
34
+ },
35
+ type: Pdfrb::Model::Type::XObjectImage
36
+ )
37
+ image.stream = bytes.b
38
+ image
39
+ end
40
+
41
+ def parse_header(bytes)
42
+ i = 2 # skip SOI marker
43
+ while i + 1 < bytes.bytesize
44
+ marker = bytes.getbyte(i) * 256 + bytes.getbyte(i + 1)
45
+ i += 2
46
+ # Standalone markers (no length): RSTn, SOI, EOI, TEM.
47
+ standalone = (0xFFD0..0xFFD7).include?(marker) ||
48
+ marker == 0xFF01 || marker == 0xFFD8 || marker == 0xFFD9
49
+ if SOFN_MARKERS.include?(marker)
50
+ return parse_sofn(bytes, i)
51
+ elsif standalone
52
+ next
53
+ else
54
+ length = bytes.getbyte(i) * 256 + bytes.getbyte(i + 1)
55
+ i += length
56
+ end
57
+ end
58
+ raise Pdfrb::Error, "JPEG: no SOFn marker found"
59
+ end
60
+ private_class_method :parse_header
61
+
62
+ def parse_sofn(bytes, i)
63
+ # SOFn layout: precision(1), height(2), width(2), components(1)
64
+ _length = bytes.getbyte(i) * 256 + bytes.getbyte(i + 1)
65
+ precision = bytes.getbyte(i + 2)
66
+ height = bytes.getbyte(i + 3) * 256 + bytes.getbyte(i + 4)
67
+ width = bytes.getbyte(i + 5) * 256 + bytes.getbyte(i + 6)
68
+ components = bytes.getbyte(i + 7)
69
+ {
70
+ precision: precision,
71
+ width: width,
72
+ height: height,
73
+ components: components,
74
+ color_space: color_space_for(components)
75
+ }
76
+ end
77
+ private_class_method :parse_sofn
78
+
79
+ def color_space_for(n)
80
+ case n
81
+ when 1 then :DeviceGray
82
+ when 3 then :DeviceRGB
83
+ when 4 then :DeviceCMYK
84
+ else raise Pdfrb::Error, "JPEG: unsupported component count #{n}"
85
+ end
86
+ end
87
+ private_class_method :color_space_for
88
+ end
89
+ end
90
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pdfrb
4
+ module ImageLoader
5
+ # PDF image loader. Imports a page from another PDF document as
6
+ # a Form XObject, suitable for embedding via the +Do+ operator
7
+ # or the canvas +image+ method (TODO 95 enhancement).
8
+ module PDF
9
+ module_function
10
+
11
+ def call(document, io, page: 0, **_opts)
12
+ source_doc = io.is_a?(Pdfrb::Document) ? io : Pdfrb::Document.open(io)
13
+ source_page = source_doc.pages[page]
14
+ return nil unless source_page
15
+
16
+ importer = Pdfrb::Importer.new(document)
17
+ imported_value = importer.import(source_page.value, source_doc)
18
+ imported_value.delete(:Parent)
19
+ imported_value[:Type] = :XObject
20
+ imported_value[:Subtype] = :Form
21
+ imported_value[:BBox] ||= imported_value[:MediaBox] || [0, 0, 612, 792]
22
+
23
+ form = document.add(imported_value, type: Pdfrb::Model::Type::XObjectForm)
24
+ form
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,282 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "zlib"
4
+
5
+ module Pdfrb
6
+ module ImageLoader
7
+ # PNG loader. Parses IHDR/IDAT/IEND chunks. Stores the
8
+ # zlib-compressed IDAT bytes verbatim with a PNG-predictor
9
+ # DecodeParms dict so the reader re-applies the PNG unfilter
10
+ # via +FlateDecode+.
11
+ #
12
+ # Supported color types: 0 (gray), 2 (RGB), 3 (indexed), 4 (gray+alpha),
13
+ # 6 (RGBA). For RGBA/gray+alpha, alpha is split into a separate
14
+ # /SMask Image XObject (also FlateDecode + PNG predictor).
15
+ module PNG
16
+ SIGNATURE = "\x89PNG\r\n\x1a\n".b
17
+ COLOR_TYPES = {
18
+ 0 => { name: :gray, channels: 1, has_alpha: false },
19
+ 2 => { name: :rgb, channels: 3, has_alpha: false },
20
+ 3 => { name: :indexed, channels: 1, has_alpha: false },
21
+ 4 => { name: :gray_alpha, channels: 2, has_alpha: true },
22
+ 6 => { name: :rgba, channels: 4, has_alpha: true }
23
+ }.freeze
24
+ private_constant :SIGNATURE, :COLOR_TYPES
25
+
26
+ module_function
27
+
28
+ def call(document, bytes, **_opts)
29
+ return nil unless bytes.is_a?(::String) && bytes.start_with?(SIGNATURE)
30
+
31
+ chunks = parse_chunks(bytes)
32
+ ihdr = chunks[:IHDR]
33
+ width = unpack_uint(ihdr, 0, 4)
34
+ height = unpack_uint(ihdr, 4, 4)
35
+ bit_depth = ihdr.getbyte(8)
36
+ color_type_id = ihdr.getbyte(9)
37
+ color_type = COLOR_TYPES[color_type_id] ||
38
+ raise(Pdfrb::Error, "PNG: unsupported color type #{color_type_id}")
39
+
40
+ idat = chunks[:IDATs].map { |c| c }.join
41
+ decoded = Zlib::Inflate.inflate(idat)
42
+
43
+ if color_type[:has_alpha]
44
+ build_rgba_image(document, width, height, bit_depth, color_type, decoded, chunks)
45
+ else
46
+ build_opaque_image(document, width, height, bit_depth, color_type, decoded, chunks)
47
+ end
48
+ end
49
+
50
+ def parse_chunks(bytes)
51
+ i = SIGNATURE.bytesize
52
+ result = { IDATs: [] }
53
+ while i + 8 <= bytes.bytesize
54
+ length = unpack_uint(bytes, i, 4)
55
+ type = bytes.byteslice(i + 4, 4).force_encoding("ASCII-8BIT")
56
+ data = bytes.byteslice(i + 8, length)
57
+ # _crc = unpack_uint(bytes, i + 8 + length, 4)
58
+ case type
59
+ when "IHDR" then result[:IHDR] = data
60
+ when "PLTE" then result[:PLTE] = data
61
+ when "tRNS" then result[:tRNS] = data
62
+ when "IDAT" then result[:IDATs] << data
63
+ when "IEND" then break
64
+ end
65
+ i += 8 + length + 4
66
+ end
67
+ result
68
+ end
69
+ private_class_method :parse_chunks
70
+
71
+ def unpack_uint(bytes, offset, n)
72
+ v = 0
73
+ n.times { |i| v = v * 256 + bytes.getbyte(offset + i) }
74
+ v
75
+ end
76
+ private_class_method :unpack_uint
77
+
78
+ def build_opaque_image(document, width, height, bit_depth, color_type, decoded, chunks)
79
+ predictor_parms = predictor_parms(width, color_type[:channels], bit_depth)
80
+ dict = {
81
+ Type: :XObject,
82
+ Subtype: :Image,
83
+ Width: width,
84
+ Height: height,
85
+ BitsPerComponent: bit_depth,
86
+ Filter: :FlateDecode,
87
+ DecodeParms: predictor_parms
88
+ }
89
+ dict[:ColorSpace] = color_space_for(color_type, bit_depth, chunks)
90
+ image = document.add(dict, type: Pdfrb::Model::Type::XObjectImage)
91
+ image.stream = deflate_with_filter_bytes(decoded, width, color_type[:channels], height)
92
+ image
93
+ end
94
+
95
+ def build_rgba_image(document, width, height, bit_depth, color_type, decoded, _chunks)
96
+ # De-filter PNG rows, split into RGB + alpha channels,
97
+ # re-compress each separately.
98
+ rgb, alpha = split_channels(decoded, width, height,
99
+ color_type[:channels], bit_depth)
100
+ channels = color_type[:channels] - 1 # alpha removed
101
+ predictor_parms = predictor_parms(width, channels, bit_depth)
102
+ rgb_bytes = with_filter_bytes(rgb, width, channels, height)
103
+ alpha_bytes = with_filter_bytes(alpha, width, 1, height)
104
+
105
+ smask = document.add(
106
+ {
107
+ Type: :XObject,
108
+ Subtype: :Image,
109
+ Width: width,
110
+ Height: height,
111
+ BitsPerComponent: bit_depth,
112
+ ColorSpace: :DeviceGray,
113
+ Filter: :FlateDecode,
114
+ DecodeParms: predictor_parms(width, 1, bit_depth)
115
+ },
116
+ type: Pdfrb::Model::Type::XObjectImage
117
+ )
118
+ smask.stream = Zlib::Deflate.deflate(alpha_bytes)
119
+
120
+ image = document.add(
121
+ {
122
+ Type: :XObject,
123
+ Subtype: :Image,
124
+ Width: width,
125
+ Height: height,
126
+ BitsPerComponent: bit_depth,
127
+ ColorSpace: color_type[:name] == :rgba ? :DeviceRGB : :DeviceGray,
128
+ Filter: :FlateDecode,
129
+ DecodeParms: predictor_parms,
130
+ SMask: Pdfrb::Model::Reference.new(smask.oid, smask.gen)
131
+ },
132
+ type: Pdfrb::Model::Type::XObjectImage
133
+ )
134
+ image.stream = Zlib::Deflate.deflate(rgb_bytes)
135
+ image
136
+ end
137
+
138
+ def color_space_for(color_type, _bit_depth, chunks)
139
+ case color_type[:name]
140
+ when :gray, :gray_alpha then :DeviceGray
141
+ when :rgb, :rgba then :DeviceRGB
142
+ when :indexed
143
+ palette = chunks[:PLTE] || raise(Pdfrb::Error, "PNG indexed missing PLTE")
144
+ # Indexed: [/Indexed /DeviceRGB max_index <hex_palette>]
145
+ [:Indexed, :DeviceRGB, palette.bytesize / 3 - 1,
146
+ palette.b]
147
+ end
148
+ end
149
+ private_class_method :color_space_for
150
+
151
+ def predictor_parms(width, colors, bpc)
152
+ { Predictor: 15, Columns: width, Colors: colors, BitsPerComponent: bpc }
153
+ end
154
+ private_class_method :predictor_parms
155
+
156
+ # PNG uses per-row filter bytes inside the compressed data.
157
+ # PDF's FlateDecode + PNG predictor expects the same layout, so
158
+ # we re-emit the row+filter-bytes pattern and re-compress.
159
+ def with_filter_bytes(rows_unfiltered, width, channels, height)
160
+ bytes_per_pixel = channels
161
+ rows_unfiltered
162
+ end
163
+ private_class_method :with_filter_bytes
164
+
165
+ def deflate_with_filter_bytes(decoded, width, channels, height)
166
+ # decoded is already the IDAT-decompressed data including per-row
167
+ # filter bytes. Re-deflate to match the original layout.
168
+ Zlib::Deflate.deflate(decoded)
169
+ end
170
+ private_class_method :deflate_with_filter_bytes
171
+
172
+ def split_channels(decoded, width, height, channels, _bit_depth)
173
+ # De-filter rows, then separate color channels from alpha.
174
+ undefiltered = png_unfilter(decoded, width, height, channels)
175
+ row_stride = width * channels
176
+ rgb = +""
177
+ alpha = +""
178
+ height.times do |y|
179
+ row_start = y * row_stride
180
+ width.times do |x|
181
+ pixel_start = row_start + x * channels
182
+ (channels - 1).times { |c| rgb << undiltered_byte(undefiltered, pixel_start + c) }
183
+ alpha << undiltered_byte(undefiltered, pixel_start + channels - 1)
184
+ end
185
+ end
186
+ [rgb, alpha]
187
+ end
188
+ private_class_method :split_channels
189
+
190
+ def undiltered_byte(buf, idx)
191
+ buf.getbyte(idx)
192
+ end
193
+ private_class_method :undiltered_byte
194
+
195
+ # Apply PNG unfiltering (None/Sub/Up/Average/Paeth) to get raw pixels.
196
+ def png_unfilter(decoded, width, height, channels)
197
+ bpp = channels
198
+ row_stride = width * channels
199
+ prev_row = nil
200
+ out = +""
201
+ pos = 0
202
+ height.times do |_y|
203
+ filter = decoded.getbyte(pos)
204
+ pos += 1
205
+ row_bytes = decoded.byteslice(pos, row_stride)
206
+ pos += row_stride
207
+ row = unfilter_row(filter, row_bytes, prev_row, bpp)
208
+ out << row
209
+ prev_row = row
210
+ end
211
+ out.force_encoding(Encoding::BINARY)
212
+ end
213
+ private_class_method :png_unfilter
214
+
215
+ def unfilter_row(filter, row_bytes, prev_row, bpp)
216
+ case filter
217
+ when 0 then row_bytes
218
+ when 1 then png_sub(row_bytes, bpp)
219
+ when 2 then png_up(row_bytes, prev_row)
220
+ when 3 then png_average(row_bytes, prev_row, bpp)
221
+ when 4 then png_paeth(row_bytes, prev_row, bpp)
222
+ else row_bytes
223
+ end
224
+ end
225
+ private_class_method :unfilter_row
226
+
227
+ def png_sub(bytes, bpp)
228
+ out = bytes.bytes.dup
229
+ bpp.upto(out.length - 1).each { |i| out[i] = (out[i] + out[i - bpp]) & 0xFF }
230
+ out.pack("C*")
231
+ end
232
+ private_class_method :png_sub
233
+
234
+ def png_up(bytes, prev_row)
235
+ return bytes unless prev_row
236
+
237
+ out = bytes.bytes
238
+ prev = prev_row.bytes
239
+ (0...out.length).each { |i| out[i] = (out[i] + prev[i]) & 0xFF }
240
+ out.pack("C*")
241
+ end
242
+ private_class_method :png_up
243
+
244
+ def png_average(bytes, prev_row, bpp)
245
+ out = bytes.bytes
246
+ prev = prev_row ? prev_row.bytes : ::Array.new(out.length, 0)
247
+ (0...out.length).each do |i|
248
+ left = i >= bpp ? out[i - bpp] : 0
249
+ up = prev[i] || 0
250
+ out[i] = (out[i] + ((left + up) / 2)) & 0xFF
251
+ end
252
+ out.pack("C*")
253
+ end
254
+ private_class_method :png_average
255
+
256
+ def png_paeth(bytes, prev_row, bpp)
257
+ out = bytes.bytes
258
+ prev = prev_row ? prev_row.bytes : ::Array.new(out.length, 0)
259
+ (0...out.length).each do |i|
260
+ left = i >= bpp ? out[i - bpp] : 0
261
+ up = prev[i] || 0
262
+ up_left = i >= bpp ? prev[i - bpp] : 0
263
+ out[i] = (out[i] + paeth(left, up, up_left)) & 0xFF
264
+ end
265
+ out.pack("C*")
266
+ end
267
+ private_class_method :png_paeth
268
+
269
+ def paeth(a, b, c)
270
+ p = a + b - c
271
+ pa = (p - a).abs
272
+ pb = (p - b).abs
273
+ pc = (p - c).abs
274
+ return a if pa <= pb && pa <= pc
275
+ return b if pb <= pc
276
+
277
+ c
278
+ end
279
+ private_class_method :paeth
280
+ end
281
+ end
282
+ end
@@ -0,0 +1,64 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pdfrb
4
+ # Image loaders: build a +Type::XObjectImage+ (or +Type::XObjectForm+
5
+ # for PDF) from a JPEG, PNG, or PDF source. Each loader is a module
6
+ # under +ImageLoader::*+ with a +call(document, io, **opts)+
7
+ # class method that returns an image object or nil if it can't
8
+ # handle the format.
9
+ module ImageLoader
10
+ autoload :JPEG, "pdfrb/image_loader/jpeg"
11
+ autoload :PNG, "pdfrb/image_loader/png"
12
+ autoload :PDF, "pdfrb/image_loader/pdf"
13
+
14
+ @loaders = []
15
+
16
+ class << self
17
+ attr_reader :loaders
18
+
19
+ # Register a loader. Loaders are tried in registration order;
20
+ # first non-nil return wins.
21
+ def register(loader)
22
+ @loaders << loader
23
+ end
24
+
25
+ # Build an image XObject from +io+ (IO, file path, or bytes).
26
+ # Iterates registered loaders until one matches.
27
+ def load(document, io, **opts)
28
+ bytes = read_bytes(io)
29
+ @loaders.each do |loader|
30
+ result = loader.call(document, bytes, **opts)
31
+ return result if result
32
+ end
33
+ raise Pdfrb::Error,
34
+ "no image loader matched (unknown or unrecognised format)"
35
+ end
36
+
37
+ def reset!
38
+ @loaders.clear
39
+ end
40
+
41
+ private
42
+
43
+ def read_bytes(io)
44
+ case io
45
+ when IO, StringIO then io.read
46
+ when ::String
47
+ looks_like_path?(io) ? File.binread(io) : io.b
48
+ else
49
+ io.to_s.b
50
+ end
51
+ end
52
+
53
+ def looks_like_path?(s)
54
+ return false if s.bytesize > 4096 || s.encoding == Encoding::BINARY
55
+ return false if s.bytes.any? { |b| b == 0 || b < 9 || (b > 13 && b < 32) }
56
+
57
+ File.exist?(s)
58
+ end
59
+ end
60
+
61
+ register JPEG
62
+ register PNG
63
+ end
64
+ end
@@ -0,0 +1,78 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pdfrb
4
+ # Cross-document object importer. Deep-copies a value (and any
5
+ # references it transitively reaches) from a source document into
6
+ # this document, allocating fresh oids and rewriting references.
7
+ #
8
+ # Cycle-safe: a "currently being imported" set guards against
9
+ # infinite recursion when objects reference each other.
10
+ class Importer
11
+ attr_reader :target, :mappings
12
+
13
+ def initialize(target_document)
14
+ @target = target_document
15
+ @mappings = {} # source_oid -> target Pdfrb::Model::Object
16
+ @in_progress = {} # source_oid -> half-built target obj
17
+ end
18
+
19
+ # Import +source_value+ (resolved against +source_document+) into
20
+ # the target. Returns the imported value (NOT wrapped in an
21
+ # Object; the caller decides oid assignment via Document#add).
22
+ def import(source_value, source_document)
23
+ case source_value
24
+ when Pdfrb::Model::Reference
25
+ import_reference(source_value, source_document)
26
+ when ::Hash
27
+ import_hash(source_value, source_document)
28
+ when ::Array
29
+ source_value.map { |v| import(v, source_document) }
30
+ when Pdfrb::Model::Object
31
+ import(source_value.value, source_document)
32
+ else
33
+ source_value
34
+ end
35
+ end
36
+
37
+ private
38
+
39
+ def import_reference(ref, source_doc)
40
+ cached = @mappings[ref.oid]
41
+ return Pdfrb::Model::Reference.new(cached.oid, cached.gen) if cached
42
+
43
+ in_progress = @in_progress[ref.oid]
44
+ return Pdfrb::Model::Reference.new(in_progress.oid, in_progress.gen) if in_progress
45
+
46
+ source_obj = source_doc.object(ref)
47
+ return nil unless source_obj
48
+
49
+ # Reserve the oid up-front so cycles resolve to this stub.
50
+ stub = target.add({}, type: Pdfrb::Model::Cos::Dictionary)
51
+ @in_progress[ref.oid] = stub
52
+
53
+ imported_value = import(source_obj.value, source_doc)
54
+ stub.value.replace(imported_value)
55
+ # Streams: copy the raw bytes if source was a Stream.
56
+ if source_obj.is_a?(Pdfrb::Model::Cos::Stream)
57
+ stub_stream!(stub, source_obj)
58
+ end
59
+ @mappings[ref.oid] = stub
60
+ @in_progress.delete(ref.oid)
61
+ Pdfrb::Model::Reference.new(stub.oid, stub.gen)
62
+ end
63
+
64
+ def import_hash(hash, source_doc)
65
+ hash.transform_values { |v| import(v, source_doc) }
66
+ end
67
+
68
+ def stub_stream!(stub, source)
69
+ # Re-wrap the stub Dictionary as a real Stream carrying the
70
+ # source's bytes; register the new object under the same oid.
71
+ stream_bytes = source.stream.dup
72
+ new_stream = target.wrap(stub.value, type: Pdfrb::Model::Cos::Stream,
73
+ oid: stub.oid, gen: stub.gen)
74
+ new_stream.stream = stream_bytes
75
+ target.register_override(new_stream)
76
+ end
77
+ end
78
+ end