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.
- checksums.yaml +7 -0
- data/.rspec +2 -0
- data/.rubocop.yml +22 -0
- data/.rubocop_todo.yml +819 -0
- data/.yardopts +4 -0
- data/CHANGELOG.md +226 -0
- data/CLAUDE.md +110 -0
- data/Gemfile +13 -0
- data/LICENSE +25 -0
- data/README.adoc +88 -0
- data/Rakefile +45 -0
- data/benchmarks/bench.rb +49 -0
- data/data/pdfrb/afm/Courier-Bold.afm +342 -0
- data/data/pdfrb/afm/Courier-BoldOblique.afm +342 -0
- data/data/pdfrb/afm/Courier-Oblique.afm +342 -0
- data/data/pdfrb/afm/Courier.afm +342 -0
- data/data/pdfrb/afm/Helvetica-Bold.afm +2827 -0
- data/data/pdfrb/afm/Helvetica-BoldOblique.afm +2827 -0
- data/data/pdfrb/afm/Helvetica-Oblique.afm +3051 -0
- data/data/pdfrb/afm/Helvetica.afm +3051 -0
- data/data/pdfrb/afm/Symbol.afm +213 -0
- data/data/pdfrb/afm/Times-Bold.afm +2588 -0
- data/data/pdfrb/afm/Times-BoldItalic.afm +2384 -0
- data/data/pdfrb/afm/Times-Italic.afm +2667 -0
- data/data/pdfrb/afm/Times-Roman.afm +2419 -0
- data/data/pdfrb/afm/ZapfDingbats.afm +225 -0
- data/data/pdfrb/arlington/latest/3DActivation.tsv +10 -0
- data/data/pdfrb/arlington/latest/3DAnimationStyle.tsv +5 -0
- data/data/pdfrb/arlington/latest/3DBackground.tsv +6 -0
- data/data/pdfrb/arlington/latest/3DCrossSection.tsv +11 -0
- data/data/pdfrb/arlington/latest/3DLightingScheme.tsv +3 -0
- data/data/pdfrb/arlington/latest/3DMeasure3DC.tsv +12 -0
- data/data/pdfrb/arlington/latest/3DMeasureAD3.tsv +21 -0
- data/data/pdfrb/arlington/latest/3DMeasureLD3.tsv +18 -0
- data/data/pdfrb/arlington/latest/3DMeasurePD3.tsv +19 -0
- data/data/pdfrb/arlington/latest/3DMeasureRD3.tsv +23 -0
- data/data/pdfrb/arlington/latest/3DNode.tsv +9 -0
- data/data/pdfrb/arlington/latest/3DReference.tsv +3 -0
- data/data/pdfrb/arlington/latest/3DRenderMode.tsv +7 -0
- data/data/pdfrb/arlington/latest/3DStream.tsv +16 -0
- data/data/pdfrb/arlington/latest/3DUnits.tsv +10 -0
- data/data/pdfrb/arlington/latest/3DView.tsv +17 -0
- data/data/pdfrb/arlington/latest/3DViewAddEntries.tsv +19 -0
- data/data/pdfrb/arlington/latest/AAPL_ST.tsv +7 -0
- data/data/pdfrb/arlington/latest/AFEmbeddedFileParameter.tsv +6 -0
- data/data/pdfrb/arlington/latest/AFEmbeddedFileStream.tsv +12 -0
- data/data/pdfrb/arlington/latest/AFFileSpecEF.tsv +3 -0
- data/data/pdfrb/arlington/latest/AFFileSpecification.tsv +17 -0
- data/data/pdfrb/arlington/latest/ActionECMAScript.tsv +5 -0
- data/data/pdfrb/arlington/latest/ActionGoTo.tsv +6 -0
- data/data/pdfrb/arlington/latest/ActionGoTo3DView.tsv +6 -0
- data/data/pdfrb/arlington/latest/ActionGoToDp.tsv +5 -0
- data/data/pdfrb/arlington/latest/ActionGoToE.tsv +8 -0
- data/data/pdfrb/arlington/latest/ActionGoToR.tsv +8 -0
- data/data/pdfrb/arlington/latest/ActionHide.tsv +6 -0
- data/data/pdfrb/arlington/latest/ActionImportData.tsv +5 -0
- data/data/pdfrb/arlington/latest/ActionLaunch.tsv +9 -0
- data/data/pdfrb/arlington/latest/ActionMovie.tsv +7 -0
- data/data/pdfrb/arlington/latest/ActionNOP.tsv +4 -0
- data/data/pdfrb/arlington/latest/ActionNamed.tsv +5 -0
- data/data/pdfrb/arlington/latest/ActionRendition.tsv +8 -0
- data/data/pdfrb/arlington/latest/ActionResetForm.tsv +6 -0
- data/data/pdfrb/arlington/latest/ActionRichMediaExecute.tsv +7 -0
- data/data/pdfrb/arlington/latest/ActionSetOCGState.tsv +6 -0
- data/data/pdfrb/arlington/latest/ActionSetState.tsv +6 -0
- data/data/pdfrb/arlington/latest/ActionSound.tsv +9 -0
- data/data/pdfrb/arlington/latest/ActionSubmitForm.tsv +8 -0
- data/data/pdfrb/arlington/latest/ActionThread.tsv +7 -0
- data/data/pdfrb/arlington/latest/ActionTransition.tsv +5 -0
- data/data/pdfrb/arlington/latest/ActionURI.tsv +6 -0
- data/data/pdfrb/arlington/latest/AddActionCatalog.tsv +6 -0
- data/data/pdfrb/arlington/latest/AddActionFormField.tsv +5 -0
- data/data/pdfrb/arlington/latest/AddActionPageObject.tsv +3 -0
- data/data/pdfrb/arlington/latest/AddActionScreenAnnotation.tsv +9 -0
- data/data/pdfrb/arlington/latest/AddActionWidgetAnnotation.tsv +11 -0
- data/data/pdfrb/arlington/latest/AlternateImage.tsv +4 -0
- data/data/pdfrb/arlington/latest/Annot3D.tsv +27 -0
- data/data/pdfrb/arlington/latest/AnnotCaret.tsv +31 -0
- data/data/pdfrb/arlington/latest/AnnotCircle.tsv +33 -0
- data/data/pdfrb/arlington/latest/AnnotFileAttachment.tsv +31 -0
- data/data/pdfrb/arlington/latest/AnnotFreeText.tsv +37 -0
- data/data/pdfrb/arlington/latest/AnnotHighlight.tsv +30 -0
- data/data/pdfrb/arlington/latest/AnnotInk.tsv +32 -0
- data/data/pdfrb/arlington/latest/AnnotLine.tsv +40 -0
- data/data/pdfrb/arlington/latest/AnnotLink.tsv +27 -0
- data/data/pdfrb/arlington/latest/AnnotMovie.tsv +23 -0
- data/data/pdfrb/arlington/latest/AnnotPolyLine.tsv +36 -0
- data/data/pdfrb/arlington/latest/AnnotPolygon.tsv +36 -0
- data/data/pdfrb/arlington/latest/AnnotPopup.tsv +22 -0
- data/data/pdfrb/arlington/latest/AnnotPrinterMark.tsv +21 -0
- data/data/pdfrb/arlington/latest/AnnotProjection.tsv +29 -0
- data/data/pdfrb/arlington/latest/AnnotRedact.tsv +36 -0
- data/data/pdfrb/arlington/latest/AnnotRichMedia.tsv +22 -0
- data/data/pdfrb/arlington/latest/AnnotScreen.tsv +24 -0
- data/data/pdfrb/arlington/latest/AnnotSound.tsv +31 -0
- data/data/pdfrb/arlington/latest/AnnotSquare.tsv +33 -0
- data/data/pdfrb/arlington/latest/AnnotSquiggly.tsv +30 -0
- data/data/pdfrb/arlington/latest/AnnotStamp.tsv +30 -0
- data/data/pdfrb/arlington/latest/AnnotStrikeOut.tsv +30 -0
- data/data/pdfrb/arlington/latest/AnnotText.tsv +33 -0
- data/data/pdfrb/arlington/latest/AnnotTrapNetwork.tsv +24 -0
- data/data/pdfrb/arlington/latest/AnnotUnderline.tsv +30 -0
- data/data/pdfrb/arlington/latest/AnnotWatermark.tsv +21 -0
- data/data/pdfrb/arlington/latest/AnnotWidget.tsv +32 -0
- data/data/pdfrb/arlington/latest/Appearance.tsv +4 -0
- data/data/pdfrb/arlington/latest/AppearanceCharacteristics.tsv +12 -0
- data/data/pdfrb/arlington/latest/AppearancePrinterMark.tsv +4 -0
- data/data/pdfrb/arlington/latest/AppearancePrinterMarkSubDict.tsv +2 -0
- data/data/pdfrb/arlington/latest/AppearanceSubDict.tsv +2 -0
- data/data/pdfrb/arlington/latest/AppearanceTrapNet.tsv +4 -0
- data/data/pdfrb/arlington/latest/AppearanceTrapNetSubDict.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOf3DCrossSection.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOf3DMeasure.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOf3DNode.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOf3DTransMatrix.tsv +13 -0
- data/data/pdfrb/arlington/latest/ArrayOf3DView.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOf3DViewAddEntries.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOf3PDUNames.tsv +4 -0
- data/data/pdfrb/arlington/latest/ArrayOf4Functions.tsv +5 -0
- data/data/pdfrb/arlington/latest/ArrayOfAFFileSpecifications.tsv +3 -0
- data/data/pdfrb/arlington/latest/ArrayOfActionHideAnnots.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfActions.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfAnnotStates.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfAnnots.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfArraysInkList.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfArraysPaths.tsv +3 -0
- data/data/pdfrb/arlington/latest/ArrayOfArraysRBGroups.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfArraysURLStrings.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfArraysXPTSValues.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfAttributeObjects.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfAttributeRevisions.tsv +3 -0
- data/data/pdfrb/arlington/latest/ArrayOfBeads.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfBlendModes.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfBooleansGeneral.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIDGlyphMetricsW.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIDGlyphMetricsW2.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIP4_AssemblingIntent.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIP4_AssemblyItem.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIP4_BindIn.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIP4_BindingIntent.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIP4_BlowIn.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIP4_ChannelUsage.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIP4_Coatings.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIP4_ColorIntent.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIP4_ComChannel.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIP4_ContactTypes.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIP4_FinishedDimensions.tsv +4 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIP4_FoldingIntent.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIP4_HoleMakingIntent.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIP4_HolePattern.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIP4_LABColorValue.tsv +4 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIP4_LayoutIntent.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIP4_MediaIntent.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIP4_PrintProcess.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIP4_ProductionIntent.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIP4_Resource.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfCIP4_StickOn.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfClassNamesRevisions.tsv +3 -0
- data/data/pdfrb/arlington/latest/ArrayOfCompressionFilterNames.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfDPartArrays.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfDParts.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfDashPatterns.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfDecodeParams.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfDescendantFonts.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfDevExtensions.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfDifferences.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfDigestMethod.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfDuration.tsv +3 -0
- data/data/pdfrb/arlington/latest/ArrayOfFieldChoiceOpt.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfFieldID.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfFields.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfFileSpecifications.tsv +3 -0
- data/data/pdfrb/arlington/latest/ArrayOfFilterNames.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfFontAndSize.tsv +3 -0
- data/data/pdfrb/arlington/latest/ArrayOfFonts.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfFunctions.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfGSPDashPatterns.tsv +3 -0
- data/data/pdfrb/arlington/latest/ArrayOfImageAlternates.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfIndirectFileSpecifications.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfIntegersGeneral.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfIntegersGreaterThanZero.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfMediaPlayerInfo.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfNamesForEnforce.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfNamesForPrintingOrder.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfNamesForProcSet.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfNamesGeneral.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfNamesInPtData.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfNamespace.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfNavigatorLayoutNames.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfNonNegativeIntegersGeneral.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfNumberFormats.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfNumbersGeneral.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfOCConfig.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfOCG.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfOCGState.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfOCGindirect.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfOCUsage.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfOPI13Color.tsv +6 -0
- data/data/pdfrb/arlington/latest/ArrayOfOPI2Inks.tsv +4 -0
- data/data/pdfrb/arlington/latest/ArrayOfOptContentGroups.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfOptContentOrderElements.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfOptContentOrders.tsv +3 -0
- data/data/pdfrb/arlington/latest/ArrayOfOutputIntents.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfPageTreeNodeKids.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfPages.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfPaths.tsv +7 -0
- data/data/pdfrb/arlington/latest/ArrayOfQuadPoints.tsv +9 -0
- data/data/pdfrb/arlington/latest/ArrayOfRenditions.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfRequirements.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfRequirementsHandlers.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfRichMediaConfiguration.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfRichMediaCuePoints.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfRichMediaInstances.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfSignatureReferences.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfSignatureSubFilterNames.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfSoftwareIdentifiers.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfSoftwareVersions.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfSourceInformation.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfStreamsGeneral.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfStringsASCII.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfStringsByte.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfStringsText.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfStringsTextOrNames.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfStructElem.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfStructElemKids.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfStructElemParentTree.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfSubjectDN.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfTags.tsv +3 -0
- data/data/pdfrb/arlington/latest/ArrayOfThreads.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfTrapNetVersionObjects.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfTrapRegions.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfURLStrings.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfURLs.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfUserProperty.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfViewParams.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfViewports.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfWebCaptureCommands.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfWebCaptureImages.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfWebCapturePages.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfXFA.tsv +3 -0
- data/data/pdfrb/arlington/latest/ArrayOfXPTSValues.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOfXRefIndexIntegers.tsv +3 -0
- data/data/pdfrb/arlington/latest/ArrayOfXRefWIntegers.tsv +4 -0
- data/data/pdfrb/arlington/latest/ArrayOf_2Booleans.tsv +3 -0
- data/data/pdfrb/arlington/latest/ArrayOf_2DashNumbers.tsv +3 -0
- data/data/pdfrb/arlington/latest/ArrayOf_2Integers.tsv +3 -0
- data/data/pdfrb/arlington/latest/ArrayOf_2LineEndingsNames.tsv +3 -0
- data/data/pdfrb/arlington/latest/ArrayOf_2NonNegativeIntegers.tsv +3 -0
- data/data/pdfrb/arlington/latest/ArrayOf_2Numbers.tsv +3 -0
- data/data/pdfrb/arlington/latest/ArrayOf_2StringsByte.tsv +3 -0
- data/data/pdfrb/arlington/latest/ArrayOf_2StringsText.tsv +3 -0
- data/data/pdfrb/arlington/latest/ArrayOf_3CenterOfRotationNumbers.tsv +4 -0
- data/data/pdfrb/arlington/latest/ArrayOf_3NonNegativeIntegers.tsv +4 -0
- data/data/pdfrb/arlington/latest/ArrayOf_3Numbers.tsv +4 -0
- data/data/pdfrb/arlington/latest/ArrayOf_3OrientationNumbers.tsv +4 -0
- data/data/pdfrb/arlington/latest/ArrayOf_3RGBNumbers.tsv +4 -0
- data/data/pdfrb/arlington/latest/ArrayOf_3or4CalloutLineNumbers.tsv +7 -0
- data/data/pdfrb/arlington/latest/ArrayOf_4AnnotBorderCharacteristics.tsv +5 -0
- data/data/pdfrb/arlington/latest/ArrayOf_4BorderColorArrays.tsv +5 -0
- data/data/pdfrb/arlington/latest/ArrayOf_4BorderStyleNames.tsv +5 -0
- data/data/pdfrb/arlington/latest/ArrayOf_4BorderThicknessNumbers.tsv +5 -0
- data/data/pdfrb/arlington/latest/ArrayOf_4ColourSpaceEntries.tsv +5 -0
- data/data/pdfrb/arlington/latest/ArrayOf_4Integers.tsv +5 -0
- data/data/pdfrb/arlington/latest/ArrayOf_4Numbers.tsv +5 -0
- data/data/pdfrb/arlington/latest/ArrayOf_4NumbersColorAnnotation.tsv +5 -0
- data/data/pdfrb/arlington/latest/ArrayOf_6Numbers.tsv +7 -0
- data/data/pdfrb/arlington/latest/ArrayOf_8Numbers.tsv +9 -0
- data/data/pdfrb/arlington/latest/ArrayOf_9Numbers.tsv +10 -0
- data/data/pdfrb/arlington/latest/ArrayOf_ArrayOfNumbers.tsv +2 -0
- data/data/pdfrb/arlington/latest/ArrayOf_RoleMapNS.tsv +3 -0
- data/data/pdfrb/arlington/latest/AuthCode.tsv +5 -0
- data/data/pdfrb/arlington/latest/Bead.tsv +7 -0
- data/data/pdfrb/arlington/latest/BeadFirst.tsv +7 -0
- data/data/pdfrb/arlington/latest/BlackpointArray.tsv +4 -0
- data/data/pdfrb/arlington/latest/BorderEffect.tsv +3 -0
- data/data/pdfrb/arlington/latest/BorderStyle.tsv +5 -0
- data/data/pdfrb/arlington/latest/BoxColorInfo.tsv +5 -0
- data/data/pdfrb/arlington/latest/BoxStyle.tsv +5 -0
- data/data/pdfrb/arlington/latest/CIDFontDescriptorMetrics.tsv +17 -0
- data/data/pdfrb/arlington/latest/CIDSystemInfo.tsv +4 -0
- data/data/pdfrb/arlington/latest/CIP4_Address.tsv +13 -0
- data/data/pdfrb/arlington/latest/CIP4_AssemblingIntent.tsv +7 -0
- data/data/pdfrb/arlington/latest/CIP4_AssemblyItem.tsv +3 -0
- data/data/pdfrb/arlington/latest/CIP4_BindIn.tsv +3 -0
- data/data/pdfrb/arlington/latest/CIP4_BindingIntent.tsv +6 -0
- data/data/pdfrb/arlington/latest/CIP4_BlowIn.tsv +3 -0
- data/data/pdfrb/arlington/latest/CIP4_ColorIntent.tsv +3 -0
- data/data/pdfrb/arlington/latest/CIP4_ComChannel.tsv +6 -0
- data/data/pdfrb/arlington/latest/CIP4_Company.tsv +5 -0
- data/data/pdfrb/arlington/latest/CIP4_Contact.tsv +8 -0
- data/data/pdfrb/arlington/latest/CIP4_FoldingIntent.tsv +4 -0
- data/data/pdfrb/arlington/latest/CIP4_HoleMakingIntent.tsv +3 -0
- data/data/pdfrb/arlington/latest/CIP4_HolePattern.tsv +4 -0
- data/data/pdfrb/arlington/latest/CIP4_Intent.tsv +11 -0
- data/data/pdfrb/arlington/latest/CIP4_IntentSummary.tsv +10 -0
- data/data/pdfrb/arlington/latest/CIP4_LayoutIntent.tsv +5 -0
- data/data/pdfrb/arlington/latest/CIP4_MediaIntent.tsv +11 -0
- data/data/pdfrb/arlington/latest/CIP4_Metadata.tsv +11 -0
- data/data/pdfrb/arlington/latest/CIP4_Person.tsv +10 -0
- data/data/pdfrb/arlington/latest/CIP4_Production.tsv +5 -0
- data/data/pdfrb/arlington/latest/CIP4_ProductionIntent.tsv +4 -0
- data/data/pdfrb/arlington/latest/CIP4_Recipient.tsv +3 -0
- data/data/pdfrb/arlington/latest/CIP4_Root.tsv +9 -0
- data/data/pdfrb/arlington/latest/CIP4_SaddleStitching.tsv +3 -0
- data/data/pdfrb/arlington/latest/CIP4_SideStitching.tsv +3 -0
- data/data/pdfrb/arlington/latest/CIP4_StickOn.tsv +3 -0
- data/data/pdfrb/arlington/latest/CMapStream.tsv +13 -0
- data/data/pdfrb/arlington/latest/CalGrayColorSpace.tsv +3 -0
- data/data/pdfrb/arlington/latest/CalGrayDict.tsv +4 -0
- data/data/pdfrb/arlington/latest/CalRGBColorSpace.tsv +3 -0
- data/data/pdfrb/arlington/latest/CalRGBDict.tsv +5 -0
- data/data/pdfrb/arlington/latest/Catalog.tsv +33 -0
- data/data/pdfrb/arlington/latest/CertSeedValue.tsv +14 -0
- data/data/pdfrb/arlington/latest/CharProcMap.tsv +2 -0
- data/data/pdfrb/arlington/latest/ClassMap.tsv +2 -0
- data/data/pdfrb/arlington/latest/Collection.tsv +11 -0
- data/data/pdfrb/arlington/latest/CollectionColors.tsv +7 -0
- data/data/pdfrb/arlington/latest/CollectionField.tsv +7 -0
- data/data/pdfrb/arlington/latest/CollectionFolder.tsv +13 -0
- data/data/pdfrb/arlington/latest/CollectionItem.tsv +3 -0
- data/data/pdfrb/arlington/latest/CollectionSchema.tsv +3 -0
- data/data/pdfrb/arlington/latest/CollectionSort.tsv +4 -0
- data/data/pdfrb/arlington/latest/CollectionSplit.tsv +4 -0
- data/data/pdfrb/arlington/latest/CollectionSubitem.tsv +4 -0
- data/data/pdfrb/arlington/latest/ColorSpaceMap.tsv +5 -0
- data/data/pdfrb/arlington/latest/ColorantsDict.tsv +2 -0
- data/data/pdfrb/arlington/latest/CryptFilter.tsv +5 -0
- data/data/pdfrb/arlington/latest/CryptFilterMap.tsv +4 -0
- data/data/pdfrb/arlington/latest/CryptFilterPublicKey.tsv +7 -0
- data/data/pdfrb/arlington/latest/CryptFilterPublicKeyMap.tsv +4 -0
- data/data/pdfrb/arlington/latest/DPM.tsv +5 -0
- data/data/pdfrb/arlington/latest/DPart.tsv +8 -0
- data/data/pdfrb/arlington/latest/DPartRoot.tsv +5 -0
- data/data/pdfrb/arlington/latest/DSS.tsv +6 -0
- data/data/pdfrb/arlington/latest/Data.tsv +4 -0
- data/data/pdfrb/arlington/latest/Dest0Array.tsv +3 -0
- data/data/pdfrb/arlington/latest/Dest0StructArray.tsv +3 -0
- data/data/pdfrb/arlington/latest/Dest1Array.tsv +4 -0
- data/data/pdfrb/arlington/latest/Dest1StructArray.tsv +4 -0
- data/data/pdfrb/arlington/latest/Dest4Array.tsv +7 -0
- data/data/pdfrb/arlington/latest/Dest4StructArray.tsv +7 -0
- data/data/pdfrb/arlington/latest/DestDict.tsv +3 -0
- data/data/pdfrb/arlington/latest/DestOutputProfileRef.tsv +7 -0
- data/data/pdfrb/arlington/latest/DestXYZArray.tsv +6 -0
- data/data/pdfrb/arlington/latest/DestXYZStructArray.tsv +6 -0
- data/data/pdfrb/arlington/latest/DestsMap.tsv +2 -0
- data/data/pdfrb/arlington/latest/DevExtensions.tsv +6 -0
- data/data/pdfrb/arlington/latest/DeviceCMYKColorSpace.tsv +2 -0
- data/data/pdfrb/arlington/latest/DeviceGrayColorSpace.tsv +2 -0
- data/data/pdfrb/arlington/latest/DeviceNColorSpace.tsv +6 -0
- data/data/pdfrb/arlington/latest/DeviceNDict.tsv +5 -0
- data/data/pdfrb/arlington/latest/DeviceNMixingHints.tsv +4 -0
- data/data/pdfrb/arlington/latest/DeviceNProcess.tsv +3 -0
- data/data/pdfrb/arlington/latest/DeviceRGBColorSpace.tsv +2 -0
- data/data/pdfrb/arlington/latest/DictionaryOfDictionaries.tsv +2 -0
- data/data/pdfrb/arlington/latest/DictionaryOfFunctions.tsv +3 -0
- data/data/pdfrb/arlington/latest/DocInfo.tsv +13 -0
- data/data/pdfrb/arlington/latest/DocMDPTransformParameters.tsv +4 -0
- data/data/pdfrb/arlington/latest/DocTimeStamp.tsv +19 -0
- data/data/pdfrb/arlington/latest/EmbeddedFileParameter.tsv +6 -0
- data/data/pdfrb/arlington/latest/EmbeddedFileStream.tsv +12 -0
- data/data/pdfrb/arlington/latest/Encoding.tsv +4 -0
- data/data/pdfrb/arlington/latest/EncryptedPayload.tsv +4 -0
- data/data/pdfrb/arlington/latest/EncryptionPublicKey.tsv +13 -0
- data/data/pdfrb/arlington/latest/EncryptionStandard.tsv +18 -0
- data/data/pdfrb/arlington/latest/ExData3DMarkup.tsv +6 -0
- data/data/pdfrb/arlington/latest/ExDataMarkupGeo.tsv +3 -0
- data/data/pdfrb/arlington/latest/ExDataProjection.tsv +4 -0
- data/data/pdfrb/arlington/latest/Extensions.tsv +5 -0
- data/data/pdfrb/arlington/latest/FDDict.tsv +2 -0
- data/data/pdfrb/arlington/latest/Field.tsv +8 -0
- data/data/pdfrb/arlington/latest/FieldBtnCheckbox.tsv +16 -0
- data/data/pdfrb/arlington/latest/FieldBtnPush.tsv +15 -0
- data/data/pdfrb/arlington/latest/FieldBtnRadio.tsv +16 -0
- data/data/pdfrb/arlington/latest/FieldChoice.tsv +18 -0
- data/data/pdfrb/arlington/latest/FieldMDPTransformParameters.tsv +5 -0
- data/data/pdfrb/arlington/latest/FieldSig.tsv +17 -0
- data/data/pdfrb/arlington/latest/FieldTx.tsv +16 -0
- data/data/pdfrb/arlington/latest/FileSpecEF.tsv +3 -0
- data/data/pdfrb/arlington/latest/FileSpecRF.tsv +3 -0
- data/data/pdfrb/arlington/latest/FileSpecification.tsv +17 -0
- data/data/pdfrb/arlington/latest/FileTrailer.tsv +11 -0
- data/data/pdfrb/arlington/latest/FilterCCITTFaxDecode.tsv +10 -0
- data/data/pdfrb/arlington/latest/FilterCrypt.tsv +3 -0
- data/data/pdfrb/arlington/latest/FilterDCTDecode.tsv +2 -0
- data/data/pdfrb/arlington/latest/FilterFlateDecode.tsv +5 -0
- data/data/pdfrb/arlington/latest/FilterJBIG2Decode.tsv +2 -0
- data/data/pdfrb/arlington/latest/FilterLZWDecode.tsv +6 -0
- data/data/pdfrb/arlington/latest/FixedPrint.tsv +5 -0
- data/data/pdfrb/arlington/latest/FloatingWindowParameters.tsv +10 -0
- data/data/pdfrb/arlington/latest/FontCIDType0.tsv +12 -0
- data/data/pdfrb/arlington/latest/FontCIDType2.tsv +12 -0
- data/data/pdfrb/arlington/latest/FontDescriptorCIDType0.tsv +25 -0
- data/data/pdfrb/arlington/latest/FontDescriptorCIDType2.tsv +26 -0
- data/data/pdfrb/arlington/latest/FontDescriptorTrueType.tsv +22 -0
- data/data/pdfrb/arlington/latest/FontDescriptorType1.tsv +22 -0
- data/data/pdfrb/arlington/latest/FontDescriptorType3.tsv +19 -0
- data/data/pdfrb/arlington/latest/FontFile.tsv +13 -0
- data/data/pdfrb/arlington/latest/FontFile2.tsv +13 -0
- data/data/pdfrb/arlington/latest/FontFile3CIDType0.tsv +13 -0
- data/data/pdfrb/arlington/latest/FontFile3OpenType.tsv +13 -0
- data/data/pdfrb/arlington/latest/FontFile3Type1.tsv +13 -0
- data/data/pdfrb/arlington/latest/FontFileType1.tsv +13 -0
- data/data/pdfrb/arlington/latest/FontMap.tsv +2 -0
- data/data/pdfrb/arlington/latest/FontMultipleMaster.tsv +11 -0
- data/data/pdfrb/arlington/latest/FontTrueType.tsv +11 -0
- data/data/pdfrb/arlington/latest/FontType0.tsv +7 -0
- data/data/pdfrb/arlington/latest/FontType1.tsv +11 -0
- data/data/pdfrb/arlington/latest/FontType3.tsv +14 -0
- data/data/pdfrb/arlington/latest/FunctionType0.tsv +16 -0
- data/data/pdfrb/arlington/latest/FunctionType2.tsv +7 -0
- data/data/pdfrb/arlington/latest/FunctionType3.tsv +7 -0
- data/data/pdfrb/arlington/latest/FunctionType4.tsv +11 -0
- data/data/pdfrb/arlington/latest/GTS_ProcStepsGroup.tsv +4 -0
- data/data/pdfrb/arlington/latest/GTSm_DevExtensions.tsv +6 -0
- data/data/pdfrb/arlington/latest/GammaArray.tsv +4 -0
- data/data/pdfrb/arlington/latest/GeographicCoordinateSystem.tsv +4 -0
- data/data/pdfrb/arlington/latest/GraphicsStateParameter.tsv +33 -0
- data/data/pdfrb/arlington/latest/GraphicsStateParameterMap.tsv +2 -0
- data/data/pdfrb/arlington/latest/GroupAttributes.tsv +6 -0
- data/data/pdfrb/arlington/latest/HalftoneType1.tsv +9 -0
- data/data/pdfrb/arlington/latest/HalftoneType10.tsv +14 -0
- data/data/pdfrb/arlington/latest/HalftoneType16.tsv +16 -0
- data/data/pdfrb/arlington/latest/HalftoneType5.tsv +6 -0
- data/data/pdfrb/arlington/latest/HalftoneType6.tsv +14 -0
- data/data/pdfrb/arlington/latest/ICCBasedColorSpace.tsv +3 -0
- data/data/pdfrb/arlington/latest/ICCProfileStream.tsv +12 -0
- data/data/pdfrb/arlington/latest/ISO_DevExtensions.tsv +6 -0
- data/data/pdfrb/arlington/latest/IconFit.tsv +5 -0
- data/data/pdfrb/arlington/latest/IndexedColorSpace.tsv +5 -0
- data/data/pdfrb/arlington/latest/InteractiveForm.tsv +9 -0
- data/data/pdfrb/arlington/latest/LabColorSpace.tsv +3 -0
- data/data/pdfrb/arlington/latest/LabDict.tsv +4 -0
- data/data/pdfrb/arlington/latest/LabRangeArray.tsv +5 -0
- data/data/pdfrb/arlington/latest/LegalAttestation.tsv +23 -0
- data/data/pdfrb/arlington/latest/LinearizationParameterDict.tsv +9 -0
- data/data/pdfrb/arlington/latest/MDPDict.tsv +2 -0
- data/data/pdfrb/arlington/latest/Mac.tsv +4 -0
- data/data/pdfrb/arlington/latest/MarkInfo.tsv +4 -0
- data/data/pdfrb/arlington/latest/MarkedContentReference.tsv +6 -0
- data/data/pdfrb/arlington/latest/MeasureGEO.tsv +10 -0
- data/data/pdfrb/arlington/latest/MeasureRL.tsv +12 -0
- data/data/pdfrb/arlington/latest/MediaClipData.tsv +11 -0
- data/data/pdfrb/arlington/latest/MediaClipDataMHBE.tsv +2 -0
- data/data/pdfrb/arlington/latest/MediaClipSection.tsv +8 -0
- data/data/pdfrb/arlington/latest/MediaClipSectionMHBE.tsv +3 -0
- data/data/pdfrb/arlington/latest/MediaCriteria.tsv +12 -0
- data/data/pdfrb/arlington/latest/MediaDuration.tsv +4 -0
- data/data/pdfrb/arlington/latest/MediaOffsetFrame.tsv +4 -0
- data/data/pdfrb/arlington/latest/MediaOffsetMarker.tsv +4 -0
- data/data/pdfrb/arlington/latest/MediaOffsetTime.tsv +4 -0
- data/data/pdfrb/arlington/latest/MediaPermissions.tsv +3 -0
- data/data/pdfrb/arlington/latest/MediaPlayParameters.tsv +5 -0
- data/data/pdfrb/arlington/latest/MediaPlayParametersBE.tsv +7 -0
- data/data/pdfrb/arlington/latest/MediaPlayParametersMH.tsv +7 -0
- data/data/pdfrb/arlington/latest/MediaPlayerInfo.tsv +5 -0
- data/data/pdfrb/arlington/latest/MediaPlayers.tsv +5 -0
- data/data/pdfrb/arlington/latest/MediaScreenParameters.tsv +4 -0
- data/data/pdfrb/arlington/latest/MediaScreenParametersMHBE.tsv +6 -0
- data/data/pdfrb/arlington/latest/Metadata.tsv +10 -0
- data/data/pdfrb/arlington/latest/MicrosoftWindowsLaunchParam.tsv +5 -0
- data/data/pdfrb/arlington/latest/MinimumBitDepth.tsv +4 -0
- data/data/pdfrb/arlington/latest/MinimumScreenSize.tsv +4 -0
- data/data/pdfrb/arlington/latest/Movie.tsv +5 -0
- data/data/pdfrb/arlington/latest/MovieActivation.tsv +10 -0
- data/data/pdfrb/arlington/latest/Name.tsv +12 -0
- data/data/pdfrb/arlington/latest/Namespace.tsv +5 -0
- data/data/pdfrb/arlington/latest/NavNode.tsv +7 -0
- data/data/pdfrb/arlington/latest/Navigator.tsv +16 -0
- data/data/pdfrb/arlington/latest/NumberFormat.tsv +12 -0
- data/data/pdfrb/arlington/latest/OOAdditionalStmsArray.tsv +3 -0
- data/data/pdfrb/arlington/latest/OPIVersion13.tsv +2 -0
- data/data/pdfrb/arlington/latest/OPIVersion13Dict.tsv +19 -0
- data/data/pdfrb/arlington/latest/OPIVersion20.tsv +2 -0
- data/data/pdfrb/arlington/latest/OPIVersion20Dict.tsv +12 -0
- data/data/pdfrb/arlington/latest/ObjectReference.tsv +4 -0
- data/data/pdfrb/arlington/latest/ObjectStream.tsv +12 -0
- data/data/pdfrb/arlington/latest/OptContentConfig.tsv +12 -0
- data/data/pdfrb/arlington/latest/OptContentCreatorInfo.tsv +4 -0
- data/data/pdfrb/arlington/latest/OptContentExport.tsv +2 -0
- data/data/pdfrb/arlington/latest/OptContentGroup.tsv +6 -0
- data/data/pdfrb/arlington/latest/OptContentLanguage.tsv +3 -0
- data/data/pdfrb/arlington/latest/OptContentMembership.tsv +5 -0
- data/data/pdfrb/arlington/latest/OptContentPageElement.tsv +2 -0
- data/data/pdfrb/arlington/latest/OptContentPrint.tsv +3 -0
- data/data/pdfrb/arlington/latest/OptContentProperties.tsv +4 -0
- data/data/pdfrb/arlington/latest/OptContentUsage.tsv +9 -0
- data/data/pdfrb/arlington/latest/OptContentUsageApplication.tsv +4 -0
- data/data/pdfrb/arlington/latest/OptContentUser.tsv +3 -0
- data/data/pdfrb/arlington/latest/OptContentView.tsv +2 -0
- data/data/pdfrb/arlington/latest/OptContentZoom.tsv +3 -0
- data/data/pdfrb/arlington/latest/Outline.tsv +5 -0
- data/data/pdfrb/arlington/latest/OutlineItem.tsv +13 -0
- data/data/pdfrb/arlington/latest/OutputIntents.tsv +11 -0
- data/data/pdfrb/arlington/latest/PageLabel.tsv +5 -0
- data/data/pdfrb/arlington/latest/PageObject.tsv +35 -0
- data/data/pdfrb/arlington/latest/PagePiece.tsv +2 -0
- data/data/pdfrb/arlington/latest/PageTreeNode.tsv +9 -0
- data/data/pdfrb/arlington/latest/PageTreeNodeRoot.tsv +8 -0
- data/data/pdfrb/arlington/latest/PaperMetaData.tsv +13 -0
- data/data/pdfrb/arlington/latest/PatternColorSpace.tsv +3 -0
- data/data/pdfrb/arlington/latest/PatternMap.tsv +2 -0
- data/data/pdfrb/arlington/latest/PatternType1.tsv +18 -0
- data/data/pdfrb/arlington/latest/PatternType2.tsv +6 -0
- data/data/pdfrb/arlington/latest/Permissions.tsv +3 -0
- data/data/pdfrb/arlington/latest/PointData.tsv +5 -0
- data/data/pdfrb/arlington/latest/ProjectedCoordinateSystem.tsv +4 -0
- data/data/pdfrb/arlington/latest/Projection.tsv +9 -0
- data/data/pdfrb/arlington/latest/Reference.tsv +4 -0
- data/data/pdfrb/arlington/latest/RelatedFilesArray.tsv +3 -0
- data/data/pdfrb/arlington/latest/RenditionBE.tsv +2 -0
- data/data/pdfrb/arlington/latest/RenditionMH.tsv +2 -0
- data/data/pdfrb/arlington/latest/RenditionMedia.tsv +9 -0
- data/data/pdfrb/arlington/latest/RenditionSelector.tsv +7 -0
- data/data/pdfrb/arlington/latest/Requirements3DMarkup.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsAcroFormInteract.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsAction.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsAttachment.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsAttachmentEditing.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsCollection.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsCollectionEditing.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsDPartInteract.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsDigSig.tsv +7 -0
- data/data/pdfrb/arlington/latest/RequirementsDigSigMDP.tsv +7 -0
- data/data/pdfrb/arlington/latest/RequirementsDigSigValidation.tsv +7 -0
- data/data/pdfrb/arlington/latest/RequirementsEnableJavaScripts.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsEncryption.tsv +7 -0
- data/data/pdfrb/arlington/latest/RequirementsGeospatial2D.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsGeospatial3D.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsHandler.tsv +4 -0
- data/data/pdfrb/arlington/latest/RequirementsMarkup.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsMultimedia.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsNavigation.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsOCAutoStates.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsOCInteract.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsPRC.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsRichMedia.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsSTEP.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsSeparationSimulation.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsTransitions.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsU3D.tsv +6 -0
- data/data/pdfrb/arlington/latest/RequirementsglTF.tsv +6 -0
- data/data/pdfrb/arlington/latest/Resource.tsv +10 -0
- data/data/pdfrb/arlington/latest/RichMediaActivation.tsv +8 -0
- data/data/pdfrb/arlington/latest/RichMediaAnimation.tsv +6 -0
- data/data/pdfrb/arlington/latest/RichMediaCommand.tsv +4 -0
- data/data/pdfrb/arlington/latest/RichMediaCommandArray.tsv +2 -0
- data/data/pdfrb/arlington/latest/RichMediaConfiguration.tsv +5 -0
- data/data/pdfrb/arlington/latest/RichMediaContent.tsv +5 -0
- data/data/pdfrb/arlington/latest/RichMediaCuePoint.tsv +6 -0
- data/data/pdfrb/arlington/latest/RichMediaDeactivation.tsv +3 -0
- data/data/pdfrb/arlington/latest/RichMediaHeight.tsv +4 -0
- data/data/pdfrb/arlington/latest/RichMediaInstance.tsv +6 -0
- data/data/pdfrb/arlington/latest/RichMediaParams.tsv +7 -0
- data/data/pdfrb/arlington/latest/RichMediaPosition.tsv +6 -0
- data/data/pdfrb/arlington/latest/RichMediaPresentation.tsv +8 -0
- data/data/pdfrb/arlington/latest/RichMediaSettings.tsv +4 -0
- data/data/pdfrb/arlington/latest/RichMediaWidth.tsv +4 -0
- data/data/pdfrb/arlington/latest/RichMediaWindow.tsv +5 -0
- data/data/pdfrb/arlington/latest/RoleMap.tsv +2 -0
- data/data/pdfrb/arlington/latest/RoleMapNS.tsv +2 -0
- data/data/pdfrb/arlington/latest/Separation.tsv +4 -0
- data/data/pdfrb/arlington/latest/SeparationColorSpace.tsv +5 -0
- data/data/pdfrb/arlington/latest/ShadingMap.tsv +2 -0
- data/data/pdfrb/arlington/latest/ShadingType1.tsv +9 -0
- data/data/pdfrb/arlington/latest/ShadingType2.tsv +10 -0
- data/data/pdfrb/arlington/latest/ShadingType3.tsv +10 -0
- data/data/pdfrb/arlington/latest/ShadingType4.tsv +18 -0
- data/data/pdfrb/arlington/latest/ShadingType5.tsv +18 -0
- data/data/pdfrb/arlington/latest/ShadingType6.tsv +18 -0
- data/data/pdfrb/arlington/latest/ShadingType7.tsv +18 -0
- data/data/pdfrb/arlington/latest/SigFieldLock.tsv +5 -0
- data/data/pdfrb/arlington/latest/SigFieldSeedValue.tsv +15 -0
- data/data/pdfrb/arlington/latest/Signature.tsv +20 -0
- data/data/pdfrb/arlington/latest/SignatureBuildDataAppDict.tsv +10 -0
- data/data/pdfrb/arlington/latest/SignatureBuildDataDict.tsv +9 -0
- data/data/pdfrb/arlington/latest/SignatureBuildDataSigQDict.tsv +10 -0
- data/data/pdfrb/arlington/latest/SignatureBuildPropDict.tsv +5 -0
- data/data/pdfrb/arlington/latest/SignatureReferenceDocMDP.tsv +8 -0
- data/data/pdfrb/arlington/latest/SignatureReferenceFieldMDP.tsv +8 -0
- data/data/pdfrb/arlington/latest/SignatureReferenceIdentity.tsv +7 -0
- data/data/pdfrb/arlington/latest/SignatureReferenceUR.tsv +8 -0
- data/data/pdfrb/arlington/latest/SlideShow.tsv +5 -0
- data/data/pdfrb/arlington/latest/SoftMaskAlpha.tsv +6 -0
- data/data/pdfrb/arlington/latest/SoftMaskLuminosity.tsv +6 -0
- data/data/pdfrb/arlington/latest/SoftwareIdentifier.tsv +8 -0
- data/data/pdfrb/arlington/latest/Solidities.tsv +3 -0
- data/data/pdfrb/arlington/latest/SoundObject.tsv +15 -0
- data/data/pdfrb/arlington/latest/SourceInformation.tsv +6 -0
- data/data/pdfrb/arlington/latest/SpectralData.tsv +2 -0
- data/data/pdfrb/arlington/latest/Stream.tsv +8 -0
- data/data/pdfrb/arlington/latest/StructElem.tsv +20 -0
- data/data/pdfrb/arlington/latest/StructTreeRoot.tsv +11 -0
- data/data/pdfrb/arlington/latest/StructureAttributesDict.tsv +54 -0
- data/data/pdfrb/arlington/latest/StyleDict.tsv +2 -0
- data/data/pdfrb/arlington/latest/SubjectDN.tsv +2 -0
- data/data/pdfrb/arlington/latest/Target.tsv +6 -0
- data/data/pdfrb/arlington/latest/TargetEmbedded.tsv +6 -0
- data/data/pdfrb/arlington/latest/Thread.tsv +5 -0
- data/data/pdfrb/arlington/latest/Thumbnail.tsv +15 -0
- data/data/pdfrb/arlington/latest/TimeStampDict.tsv +3 -0
- data/data/pdfrb/arlington/latest/Timespan.tsv +4 -0
- data/data/pdfrb/arlington/latest/ToUnicodeCMapStream.tsv +13 -0
- data/data/pdfrb/arlington/latest/TrailerIDArray.tsv +3 -0
- data/data/pdfrb/arlington/latest/Transition.tsv +9 -0
- data/data/pdfrb/arlington/latest/TrapRegion.tsv +3 -0
- data/data/pdfrb/arlington/latest/URI.tsv +2 -0
- data/data/pdfrb/arlington/latest/URLAlias.tsv +3 -0
- data/data/pdfrb/arlington/latest/URTransformParamAnnotsArray.tsv +2 -0
- data/data/pdfrb/arlington/latest/URTransformParamDocumentArray.tsv +2 -0
- data/data/pdfrb/arlington/latest/URTransformParamEFArray.tsv +2 -0
- data/data/pdfrb/arlington/latest/URTransformParamFormArray.tsv +2 -0
- data/data/pdfrb/arlington/latest/URTransformParamSignatureArray.tsv +2 -0
- data/data/pdfrb/arlington/latest/URTransformParameters.tsv +10 -0
- data/data/pdfrb/arlington/latest/UserProperty.tsv +5 -0
- data/data/pdfrb/arlington/latest/VRI.tsv +7 -0
- data/data/pdfrb/arlington/latest/VRIMap.tsv +2 -0
- data/data/pdfrb/arlington/latest/ViewParams.tsv +3 -0
- data/data/pdfrb/arlington/latest/ViewerPreferences.tsv +19 -0
- data/data/pdfrb/arlington/latest/Viewport.tsv +6 -0
- data/data/pdfrb/arlington/latest/VisibilityExpressionArray.tsv +4 -0
- data/data/pdfrb/arlington/latest/WebCaptureCommand.tsv +8 -0
- data/data/pdfrb/arlington/latest/WebCaptureCommandSettings.tsv +3 -0
- data/data/pdfrb/arlington/latest/WebCaptureImageSet.tsv +9 -0
- data/data/pdfrb/arlington/latest/WebCaptureInfo.tsv +3 -0
- data/data/pdfrb/arlington/latest/WebCapturePageSet.tsv +10 -0
- data/data/pdfrb/arlington/latest/WhitepointArray.tsv +4 -0
- data/data/pdfrb/arlington/latest/XObjectFormPS.tsv +10 -0
- data/data/pdfrb/arlington/latest/XObjectFormPSpassthrough.tsv +15 -0
- data/data/pdfrb/arlington/latest/XObjectFormPrinterMark.tsv +29 -0
- data/data/pdfrb/arlington/latest/XObjectFormTrapNet.tsv +31 -0
- data/data/pdfrb/arlington/latest/XObjectFormType1.tsv +32 -0
- data/data/pdfrb/arlington/latest/XObjectImage.tsv +35 -0
- data/data/pdfrb/arlington/latest/XObjectImageMask.tsv +29 -0
- data/data/pdfrb/arlington/latest/XObjectImageSoftMask.tsv +22 -0
- data/data/pdfrb/arlington/latest/XObjectMap.tsv +2 -0
- data/data/pdfrb/arlington/latest/XRefStream.tsv +20 -0
- data/data/pdfrb/arlington/latest/_UniversalArray.tsv +2 -0
- data/data/pdfrb/arlington/latest/_UniversalDictionary.tsv +2 -0
- data/data/pdfrb/glyphlist.txt +4306 -0
- data/data/pdfrb/zapfdingbats.txt +226 -0
- data/exe/pdfrb +10 -0
- data/lib/pdfrb/arlington/field_definition.rb +128 -0
- data/lib/pdfrb/arlington/loader.rb +84 -0
- data/lib/pdfrb/arlington/object_definition.rb +45 -0
- data/lib/pdfrb/arlington/pdf_version.rb +121 -0
- data/lib/pdfrb/arlington/predicate/ast.rb +21 -0
- data/lib/pdfrb/arlington/predicate/context.rb +24 -0
- data/lib/pdfrb/arlington/predicate/evaluator.rb +113 -0
- data/lib/pdfrb/arlington/predicate/functions/arithmetic.rb +67 -0
- data/lib/pdfrb/arlington/predicate/functions/file.rb +22 -0
- data/lib/pdfrb/arlington/predicate/functions/logical.rb +38 -0
- data/lib/pdfrb/arlington/predicate/functions/presence.rb +39 -0
- data/lib/pdfrb/arlington/predicate/functions/reference.rb +28 -0
- data/lib/pdfrb/arlington/predicate/functions/version.rb +53 -0
- data/lib/pdfrb/arlington/predicate/functions.rb +34 -0
- data/lib/pdfrb/arlington/predicate/lexer.rb +177 -0
- data/lib/pdfrb/arlington/predicate/parser.rb +185 -0
- data/lib/pdfrb/arlington/predicate.rb +22 -0
- data/lib/pdfrb/arlington/type.rb +41 -0
- data/lib/pdfrb/arlington.rb +19 -0
- data/lib/pdfrb/cli.rb +135 -0
- data/lib/pdfrb/configuration.rb +64 -0
- data/lib/pdfrb/conformance/pdf_a.rb +74 -0
- data/lib/pdfrb/conformance/pdf_ua.rb +46 -0
- data/lib/pdfrb/conformance.rb +11 -0
- data/lib/pdfrb/content/canvas.rb +248 -0
- data/lib/pdfrb/content/graphic_object/arc.rb +85 -0
- data/lib/pdfrb/content/graphic_object/curve.rb +28 -0
- data/lib/pdfrb/content/graphic_object/polyline.rb +27 -0
- data/lib/pdfrb/content/graphic_object/rectangle.rb +53 -0
- data/lib/pdfrb/content/graphic_object.rb +16 -0
- data/lib/pdfrb/content/graphics_state.rb +104 -0
- data/lib/pdfrb/content/operator.rb +72 -0
- data/lib/pdfrb/content/operators/color.rb +106 -0
- data/lib/pdfrb/content/operators/general.rb +50 -0
- data/lib/pdfrb/content/operators/graphics_state_params.rb +78 -0
- data/lib/pdfrb/content/operators/marked_content.rb +51 -0
- data/lib/pdfrb/content/operators/painting.rb +82 -0
- data/lib/pdfrb/content/operators/path.rb +69 -0
- data/lib/pdfrb/content/operators/text_positioning.rb +44 -0
- data/lib/pdfrb/content/operators/text_showing.rb +48 -0
- data/lib/pdfrb/content/operators/text_state.rb +66 -0
- data/lib/pdfrb/content/parser.rb +103 -0
- data/lib/pdfrb/content/processor.rb +81 -0
- data/lib/pdfrb/content.rb +38 -0
- data/lib/pdfrb/data_dir.rb +35 -0
- data/lib/pdfrb/digital_signature/handler.rb +21 -0
- data/lib/pdfrb/digital_signature/signing.rb +29 -0
- data/lib/pdfrb/digital_signature/verification.rb +22 -0
- data/lib/pdfrb/digital_signature.rb +11 -0
- data/lib/pdfrb/document/annotations.rb +44 -0
- data/lib/pdfrb/document/destinations.rb +22 -0
- data/lib/pdfrb/document/files.rb +28 -0
- data/lib/pdfrb/document/fonts.rb +121 -0
- data/lib/pdfrb/document/images.rb +57 -0
- data/lib/pdfrb/document/metadata.rb +64 -0
- data/lib/pdfrb/document/pages.rb +134 -0
- data/lib/pdfrb/document.rb +343 -0
- data/lib/pdfrb/encryption/aes.rb +68 -0
- data/lib/pdfrb/encryption/password_verification.rb +112 -0
- data/lib/pdfrb/encryption/rc4.rb +45 -0
- data/lib/pdfrb/encryption/security_handler.rb +65 -0
- data/lib/pdfrb/encryption/standard_security_handler.rb +117 -0
- data/lib/pdfrb/encryption.rb +20 -0
- data/lib/pdfrb/error.rb +92 -0
- data/lib/pdfrb/filter/ascii_85_decode.rb +79 -0
- data/lib/pdfrb/filter/ascii_hex_decode.rb +37 -0
- data/lib/pdfrb/filter/base.rb +32 -0
- data/lib/pdfrb/filter/crypt.rb +36 -0
- data/lib/pdfrb/filter/flate_decode.rb +137 -0
- data/lib/pdfrb/filter/lzw_decode.rb +124 -0
- data/lib/pdfrb/filter/passthrough_filters.rb +55 -0
- data/lib/pdfrb/filter/run_length_decode.rb +72 -0
- data/lib/pdfrb/filter.rb +64 -0
- data/lib/pdfrb/font/afm_parser.rb +84 -0
- data/lib/pdfrb/font/cmap/parser.rb +96 -0
- data/lib/pdfrb/font/cmap/writer.rb +46 -0
- data/lib/pdfrb/font/cmap.rb +10 -0
- data/lib/pdfrb/font/encoding/mac_roman_encoding.rb +25 -0
- data/lib/pdfrb/font/encoding/pdf_doc_encoding.rb +16 -0
- data/lib/pdfrb/font/encoding/standard_encoding.rb +24 -0
- data/lib/pdfrb/font/encoding/win_ansi_encoding.rb +25 -0
- data/lib/pdfrb/font/encoding/zapf_dingbats_encoding.rb +13 -0
- data/lib/pdfrb/font/encoding.rb +36 -0
- data/lib/pdfrb/font/glyph_list.rb +56 -0
- data/lib/pdfrb/font/true_type/cmap.rb +240 -0
- data/lib/pdfrb/font/true_type/file.rb +85 -0
- data/lib/pdfrb/font/true_type/head.rb +43 -0
- data/lib/pdfrb/font/true_type/hhea.rb +36 -0
- data/lib/pdfrb/font/true_type/hmtx.rb +58 -0
- data/lib/pdfrb/font/true_type/os2.rb +51 -0
- data/lib/pdfrb/font/true_type/subsetter.rb +28 -0
- data/lib/pdfrb/font/true_type.rb +14 -0
- data/lib/pdfrb/font/type1/font_metrics.rb +46 -0
- data/lib/pdfrb/font/type1.rb +9 -0
- data/lib/pdfrb/font.rb +18 -0
- data/lib/pdfrb/font_loader/true_type.rb +62 -0
- data/lib/pdfrb/font_loader/type1.rb +27 -0
- data/lib/pdfrb/font_loader.rb +10 -0
- data/lib/pdfrb/image_loader/jpeg.rb +90 -0
- data/lib/pdfrb/image_loader/pdf.rb +28 -0
- data/lib/pdfrb/image_loader/png.rb +282 -0
- data/lib/pdfrb/image_loader.rb +64 -0
- data/lib/pdfrb/importer.rb +78 -0
- data/lib/pdfrb/model/cos/dictionary.rb +310 -0
- data/lib/pdfrb/model/cos/fields.rb +215 -0
- data/lib/pdfrb/model/cos/name_encoding.rb +64 -0
- data/lib/pdfrb/model/cos/stream.rb +96 -0
- data/lib/pdfrb/model/cos/string_encoding.rb +135 -0
- data/lib/pdfrb/model/cos.rb +20 -0
- data/lib/pdfrb/model/date.rb +82 -0
- data/lib/pdfrb/model/matrix.rb +85 -0
- data/lib/pdfrb/model/object.rb +76 -0
- data/lib/pdfrb/model/pdf_array.rb +63 -0
- data/lib/pdfrb/model/rectangle.rb +54 -0
- data/lib/pdfrb/model/reference.rb +49 -0
- data/lib/pdfrb/model/type/action.rb +33 -0
- data/lib/pdfrb/model/type/af_embedded_file.rb +12 -0
- data/lib/pdfrb/model/type/af_file_specification.rb +13 -0
- data/lib/pdfrb/model/type/annotation.rb +50 -0
- data/lib/pdfrb/model/type/catalog.rb +50 -0
- data/lib/pdfrb/model/type/cid_font.rb +13 -0
- data/lib/pdfrb/model/type/embedded_file.rb +13 -0
- data/lib/pdfrb/model/type/encryption_public_key.rb +12 -0
- data/lib/pdfrb/model/type/encryption_standard.rb +12 -0
- data/lib/pdfrb/model/type/file_specification.rb +12 -0
- data/lib/pdfrb/model/type/file_trailer.rb +14 -0
- data/lib/pdfrb/model/type/font.rb +13 -0
- data/lib/pdfrb/model/type/font_descriptor.rb +12 -0
- data/lib/pdfrb/model/type/font_true_type.rb +12 -0
- data/lib/pdfrb/model/type/font_type0.rb +12 -0
- data/lib/pdfrb/model/type/font_type1.rb +12 -0
- data/lib/pdfrb/model/type/font_type3.rb +13 -0
- data/lib/pdfrb/model/type/graphics_state_parameter.rb +17 -0
- data/lib/pdfrb/model/type/info.rb +15 -0
- data/lib/pdfrb/model/type/interactive_form.rb +12 -0
- data/lib/pdfrb/model/type/metadata.rb +18 -0
- data/lib/pdfrb/model/type/names.rb +14 -0
- data/lib/pdfrb/model/type/object_stream.rb +14 -0
- data/lib/pdfrb/model/type/optional_content_group.rb +25 -0
- data/lib/pdfrb/model/type/optional_content_membership.rb +13 -0
- data/lib/pdfrb/model/type/optional_content_properties.rb +12 -0
- data/lib/pdfrb/model/type/outline.rb +20 -0
- data/lib/pdfrb/model/type/outline_item.rb +13 -0
- data/lib/pdfrb/model/type/output_intent.rb +12 -0
- data/lib/pdfrb/model/type/page.rb +86 -0
- data/lib/pdfrb/model/type/page_tree_node.rb +46 -0
- data/lib/pdfrb/model/type/resources.rb +53 -0
- data/lib/pdfrb/model/type/struct_elem.rb +15 -0
- data/lib/pdfrb/model/type/struct_tree_root.rb +15 -0
- data/lib/pdfrb/model/type/xobject_form.rb +13 -0
- data/lib/pdfrb/model/type/xobject_image.rb +13 -0
- data/lib/pdfrb/model/type/xref_stream.rb +14 -0
- data/lib/pdfrb/model/type.rb +78 -0
- data/lib/pdfrb/model.rb +27 -0
- data/lib/pdfrb/pdf_constants.rb +42 -0
- data/lib/pdfrb/serializer.rb +174 -0
- data/lib/pdfrb/source/header_reader.rb +34 -0
- data/lib/pdfrb/source/helpers.rb +25 -0
- data/lib/pdfrb/source/linearization_detection.rb +34 -0
- data/lib/pdfrb/source/object_reader.rb +132 -0
- data/lib/pdfrb/source/object_stream_reader.rb +32 -0
- data/lib/pdfrb/source/parser.rb +281 -0
- data/lib/pdfrb/source/recovery.rb +35 -0
- data/lib/pdfrb/source/token.rb +15 -0
- data/lib/pdfrb/source/tokenizer.rb +320 -0
- data/lib/pdfrb/source/tokenizer.rb.bak +320 -0
- data/lib/pdfrb/source/trailer_reader.rb +32 -0
- data/lib/pdfrb/source/xref_stream_reader.rb +52 -0
- data/lib/pdfrb/source/xref_table_reader.rb +72 -0
- data/lib/pdfrb/source.rb +24 -0
- data/lib/pdfrb/task/extract_images.rb +53 -0
- data/lib/pdfrb/task/extract_text.rb +232 -0
- data/lib/pdfrb/task/merge.rb +47 -0
- data/lib/pdfrb/task/optimize.rb +18 -0
- data/lib/pdfrb/task.rb +13 -0
- data/lib/pdfrb/version.rb +5 -0
- data/lib/pdfrb/writer.rb +144 -0
- data/lib/pdfrb/xref_section.rb +51 -0
- data/lib/pdfrb.rb +97 -0
- metadata +890 -0
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pdfrb
|
|
4
|
+
module Filter
|
|
5
|
+
# LZWDecode (s7.4.4). LZW decompression with optional DeLZW
|
|
6
|
+
# predictor handling (same PNG predictor as FlateDecode).
|
|
7
|
+
class LZWDecode
|
|
8
|
+
include Base
|
|
9
|
+
|
|
10
|
+
register_as "LZWDecode"
|
|
11
|
+
|
|
12
|
+
CLEAR_TABLE = 256
|
|
13
|
+
EOD_MARKER = 257
|
|
14
|
+
INITIAL_DICT_SIZE = 258
|
|
15
|
+
|
|
16
|
+
class << self
|
|
17
|
+
def decoder(bytes, parms, _document)
|
|
18
|
+
decoded = decompress(bytes)
|
|
19
|
+
apply_predictor(decoded, parms)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def encoder(_bytes, _parms, _document)
|
|
23
|
+
raise Pdfrb::FilterError.new(
|
|
24
|
+
"LZWDecode encoder not implemented",
|
|
25
|
+
filter_name: "LZWDecode"
|
|
26
|
+
)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
private
|
|
30
|
+
|
|
31
|
+
def decompress(bytes)
|
|
32
|
+
out = +""
|
|
33
|
+
table = build_initial_table
|
|
34
|
+
next_code = INITIAL_DICT_SIZE
|
|
35
|
+
bit_width = 9
|
|
36
|
+
early_change = 1 # default per spec
|
|
37
|
+
bit_iter = BitReader.new(bytes)
|
|
38
|
+
prev = nil
|
|
39
|
+
|
|
40
|
+
while (code = bit_iter.read_bits(bit_width))
|
|
41
|
+
break if code == EOD_MARKER
|
|
42
|
+
|
|
43
|
+
if code == CLEAR_TABLE
|
|
44
|
+
table = build_initial_table
|
|
45
|
+
next_code = INITIAL_DICT_SIZE
|
|
46
|
+
bit_width = 9
|
|
47
|
+
prev = nil
|
|
48
|
+
next
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
entry =
|
|
52
|
+
if code < table.length
|
|
53
|
+
table[code]
|
|
54
|
+
elsif code == table.length && prev
|
|
55
|
+
prev + prev.byteslice(0, 1)
|
|
56
|
+
else
|
|
57
|
+
raise Pdfrb::FilterError.new(
|
|
58
|
+
"LZWDecode bad code #{code}",
|
|
59
|
+
filter_name: "LZWDecode"
|
|
60
|
+
)
|
|
61
|
+
end
|
|
62
|
+
out << entry
|
|
63
|
+
if prev && next_code < 4096
|
|
64
|
+
table << prev + entry.byteslice(0, 1)
|
|
65
|
+
next_code += 1
|
|
66
|
+
bit_width = compute_bit_width(next_code, early_change) if next_code > (1 << bit_width) - 1 - early_change + 1
|
|
67
|
+
end
|
|
68
|
+
prev = entry
|
|
69
|
+
end
|
|
70
|
+
out.force_encoding(Encoding::BINARY)
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def build_initial_table
|
|
74
|
+
(0..255).map(&:chr).map { |s| s.force_encoding(Encoding::BINARY) }
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def compute_bit_width(next_code, early_change)
|
|
78
|
+
w = 9
|
|
79
|
+
w += 1 while next_code > (1 << w) - 1 - early_change
|
|
80
|
+
w.clamp(9, 12)
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def apply_predictor(bytes, parms)
|
|
84
|
+
return bytes unless parms && parms.is_a?(::Hash)
|
|
85
|
+
|
|
86
|
+
predictor = parms[:Predictor] || 1
|
|
87
|
+
return bytes if predictor == 1
|
|
88
|
+
|
|
89
|
+
Pdfrb::Filter::FlateDecode.send(:apply_png_predictor_decode,
|
|
90
|
+
bytes,
|
|
91
|
+
predictor: predictor,
|
|
92
|
+
columns: parms[:Columns] || 1,
|
|
93
|
+
colors: parms[:Colors] || 1,
|
|
94
|
+
bits_per_component: parms[:BitsPerComponent] || 8)
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
# Pull-based bit reader for LZW bit-streams.
|
|
99
|
+
class BitReader
|
|
100
|
+
def initialize(bytes)
|
|
101
|
+
@bytes = bytes.bytes
|
|
102
|
+
@bit_pos = 0
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def read_bits(width)
|
|
106
|
+
result = 0
|
|
107
|
+
bits_read = 0
|
|
108
|
+
while bits_read < width
|
|
109
|
+
byte_index = @bit_pos / 8
|
|
110
|
+
return nil if byte_index >= @bytes.length
|
|
111
|
+
|
|
112
|
+
bit_in_byte = 7 - (@bit_pos % 8)
|
|
113
|
+
bit = (@bytes[byte_index] >> bit_in_byte) & 1
|
|
114
|
+
result = (result << 1) | bit
|
|
115
|
+
@bit_pos += 1
|
|
116
|
+
bits_read += 1
|
|
117
|
+
end
|
|
118
|
+
result
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
private_constant :BitReader
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pdfrb
|
|
4
|
+
module Filter
|
|
5
|
+
DCTDecode = Class.new do
|
|
6
|
+
include Base
|
|
7
|
+
register_as "DCTDecode"
|
|
8
|
+
class << self
|
|
9
|
+
def decoder(bytes, _parms, _document); bytes; end
|
|
10
|
+
def encoder(bytes, _parms, _document); bytes; end
|
|
11
|
+
end
|
|
12
|
+
end.freeze
|
|
13
|
+
public_constant :DCTDecode
|
|
14
|
+
|
|
15
|
+
JPXDecode = Class.new do
|
|
16
|
+
include Base
|
|
17
|
+
register_as "JPXDecode"
|
|
18
|
+
class << self
|
|
19
|
+
def decoder(bytes, _parms, _document); bytes; end
|
|
20
|
+
def encoder(bytes, _parms, _document); bytes; end
|
|
21
|
+
end
|
|
22
|
+
end.freeze
|
|
23
|
+
public_constant :JPXDecode
|
|
24
|
+
|
|
25
|
+
JBIG2Decode = Class.new do
|
|
26
|
+
include Base
|
|
27
|
+
register_as "JBIG2Decode"
|
|
28
|
+
class << self
|
|
29
|
+
def decoder(bytes, _parms, _document); bytes; end
|
|
30
|
+
def encoder(bytes, _parms, _document); bytes; end
|
|
31
|
+
end
|
|
32
|
+
end.freeze
|
|
33
|
+
public_constant :JBIG2Decode
|
|
34
|
+
|
|
35
|
+
CCITTFaxDecode = Class.new do
|
|
36
|
+
include Base
|
|
37
|
+
register_as "CCITTFaxDecode"
|
|
38
|
+
class << self
|
|
39
|
+
def decoder(bytes, _parms, _document)
|
|
40
|
+
raise Pdfrb::FilterError.new(
|
|
41
|
+
"CCITTFaxDecode requires an external decoder (Group 3/4 fax)",
|
|
42
|
+
filter_name: "CCITTFaxDecode"
|
|
43
|
+
)
|
|
44
|
+
end
|
|
45
|
+
def encoder(_bytes, _parms, _document)
|
|
46
|
+
raise Pdfrb::FilterError.new(
|
|
47
|
+
"CCITTFaxDecode encoder not implemented",
|
|
48
|
+
filter_name: "CCITTFaxDecode"
|
|
49
|
+
)
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end.freeze
|
|
53
|
+
public_constant :CCITTFaxDecode
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pdfrb
|
|
4
|
+
module Filter
|
|
5
|
+
# RunLengthDecode (s7.4.5). Length byte 0..127 = N+1 literal bytes;
|
|
6
|
+
# 129..255 = repeat next byte (257 - N) times; 128 = EOD.
|
|
7
|
+
class RunLengthDecode
|
|
8
|
+
include Base
|
|
9
|
+
|
|
10
|
+
register_as "RunLengthDecode"
|
|
11
|
+
|
|
12
|
+
class << self
|
|
13
|
+
def decoder(bytes, _parms, _document)
|
|
14
|
+
out = +""
|
|
15
|
+
i = 0
|
|
16
|
+
bs = bytes.bytes
|
|
17
|
+
while i < bs.length
|
|
18
|
+
n = bs[i]
|
|
19
|
+
i += 1
|
|
20
|
+
case n
|
|
21
|
+
when 128 then break
|
|
22
|
+
when 0..127
|
|
23
|
+
out << bs[i, n + 1].pack("C*")
|
|
24
|
+
i += n + 1
|
|
25
|
+
when 129..255
|
|
26
|
+
count = 257 - n
|
|
27
|
+
out << (bs[i] || 0).chr * count if count.positive? && bs[i]
|
|
28
|
+
i += 1
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
out.force_encoding(Encoding::BINARY)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def encoder(bytes, _parms, _document)
|
|
35
|
+
out = +""
|
|
36
|
+
bs = bytes.bytes
|
|
37
|
+
i = 0
|
|
38
|
+
while i < bs.length
|
|
39
|
+
# Try to find a run of identical bytes (3+).
|
|
40
|
+
run_len = 1
|
|
41
|
+
while i + run_len < bs.length && bs[i + run_len] == bs[i] && run_len < 128
|
|
42
|
+
run_len += 1
|
|
43
|
+
end
|
|
44
|
+
if run_len >= 3
|
|
45
|
+
out << (257 - run_len).chr
|
|
46
|
+
out << bs[i].chr
|
|
47
|
+
i += run_len
|
|
48
|
+
else
|
|
49
|
+
# Accumulate literals until next run or 128 bytes.
|
|
50
|
+
literal = []
|
|
51
|
+
while i < bs.length && literal.length < 128
|
|
52
|
+
# Stop if a run of >= 3 starts.
|
|
53
|
+
ahead_run = 0
|
|
54
|
+
while i + ahead_run < bs.length && bs[i + ahead_run] == bs[i] && ahead_run < 3
|
|
55
|
+
ahead_run += 1
|
|
56
|
+
end
|
|
57
|
+
break if ahead_run >= 3
|
|
58
|
+
|
|
59
|
+
literal << bs[i]
|
|
60
|
+
i += 1
|
|
61
|
+
end
|
|
62
|
+
out << (literal.length - 1).chr
|
|
63
|
+
out << literal.pack("C*")
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
out << 128.chr # EOD
|
|
67
|
+
out.force_encoding(Encoding::BINARY)
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
data/lib/pdfrb/filter.rb
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pdfrb
|
|
4
|
+
# Stream filter pipeline (s7.4). Each filter is a stateless class
|
|
5
|
+
# with `decoder(bytes, parms, document)` and `encoder(bytes, parms,
|
|
6
|
+
# document)` class methods, registered via `register_as`.
|
|
7
|
+
module Filter
|
|
8
|
+
autoload :Base, "pdfrb/filter/base"
|
|
9
|
+
|
|
10
|
+
class << self
|
|
11
|
+
def registry; @registry ||= {}; end
|
|
12
|
+
|
|
13
|
+
def register(name, klass)
|
|
14
|
+
registry[name.to_s] = klass
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def [](name)
|
|
18
|
+
registry[name.to_s]
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def apply(bytes, filters:, parms:, direction:, document: nil)
|
|
22
|
+
return bytes if filters.empty?
|
|
23
|
+
|
|
24
|
+
case direction
|
|
25
|
+
when :decode then decode_chain(bytes, filters, parms, document)
|
|
26
|
+
when :encode then encode_chain(bytes, filters, parms, document)
|
|
27
|
+
else raise ArgumentError, "unknown direction #{direction.inspect}"
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
private
|
|
32
|
+
|
|
33
|
+
def decode_chain(bytes, filters, parms, document)
|
|
34
|
+
filters.each_with_index.reduce(bytes.dup) do |acc, (filter, i)|
|
|
35
|
+
klass = self[filter] or raise Pdfrb::FilterError.new(
|
|
36
|
+
"unknown filter #{filter.inspect}", filter_name: filter.to_s
|
|
37
|
+
)
|
|
38
|
+
klass.decoder(acc, parms[i], document)
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def encode_chain(bytes, filters, _parms, document)
|
|
43
|
+
filters.reverse_each.reduce(bytes.dup) do |acc, filter|
|
|
44
|
+
klass = self[filter] or raise Pdfrb::FilterError.new(
|
|
45
|
+
"unknown filter #{filter.inspect}", filter_name: filter.to_s
|
|
46
|
+
)
|
|
47
|
+
klass.encoder(acc, nil, document)
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# Eager-load filters so register_as calls populate the registry
|
|
55
|
+
# before any stream decode happens. Must be after the Filter module
|
|
56
|
+
# and its singleton methods are fully defined.
|
|
57
|
+
require "pdfrb/filter/base"
|
|
58
|
+
require "pdfrb/filter/flate_decode"
|
|
59
|
+
require "pdfrb/filter/ascii_hex_decode"
|
|
60
|
+
require "pdfrb/filter/ascii_85_decode"
|
|
61
|
+
require "pdfrb/filter/lzw_decode"
|
|
62
|
+
require "pdfrb/filter/run_length_decode"
|
|
63
|
+
require "pdfrb/filter/crypt"
|
|
64
|
+
require "pdfrb/filter/passthrough_filters"
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pdfrb
|
|
4
|
+
module Font
|
|
5
|
+
# AFM (Adobe Font Metrics) parser. Reads the text-based AFM
|
|
6
|
+
# format used by the 14 standard Type1 fonts.
|
|
7
|
+
class AFMParser
|
|
8
|
+
attr_reader :font_name, :full_name, :family_name,
|
|
9
|
+
:encoding_scheme, :bbox, :cap_height, :x_height,
|
|
10
|
+
:ascender, :descender, :char_metrics
|
|
11
|
+
|
|
12
|
+
def initialize
|
|
13
|
+
@char_metrics = {}
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def self.parse(text)
|
|
17
|
+
new.tap { |p| p.parse(text) }
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def self.from_file(path)
|
|
21
|
+
parse(File.read(path, encoding: "UTF-8"))
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def parse(text)
|
|
25
|
+
in_char_metrics = false
|
|
26
|
+
text.each_line do |line|
|
|
27
|
+
line = line.strip
|
|
28
|
+
if line.start_with?("FontName ")
|
|
29
|
+
@font_name = line.split(" ", 2)[1]
|
|
30
|
+
elsif line.start_with?("FullName ")
|
|
31
|
+
@full_name = line.split(" ", 2)[1]
|
|
32
|
+
elsif line.start_with?("FamilyName ")
|
|
33
|
+
@family_name = line.split(" ", 2)[1]
|
|
34
|
+
elsif line.start_with?("EncodingScheme ")
|
|
35
|
+
@encoding_scheme = line.split(" ", 2)[1]
|
|
36
|
+
elsif line.start_with?("FontBBox ")
|
|
37
|
+
@bbox = line.split.drop(1).map(&:to_f)
|
|
38
|
+
elsif line.start_with?("CapHeight ")
|
|
39
|
+
@cap_height = line.split[1].to_f
|
|
40
|
+
elsif line.start_with?("XHeight ")
|
|
41
|
+
@x_height = line.split[1].to_f
|
|
42
|
+
elsif line.start_with?("Ascender ")
|
|
43
|
+
@ascender = line.split[1].to_f
|
|
44
|
+
elsif line.start_with?("Descender ")
|
|
45
|
+
@descender = line.split[1].to_f
|
|
46
|
+
elsif line == "StartCharMetrics" || line.start_with?("StartCharMetrics ")
|
|
47
|
+
in_char_metrics = true
|
|
48
|
+
elsif line == "EndCharMetrics" || line.start_with?("EndCharMetrics")
|
|
49
|
+
in_char_metrics = false
|
|
50
|
+
elsif in_char_metrics && line.start_with?("C ")
|
|
51
|
+
parse_char_metric(line)
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
self
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def width_for(glyph_name_or_code)
|
|
58
|
+
metric = @char_metrics[glyph_name_or_code] ||
|
|
59
|
+
@char_metrics[glyph_name_or_code.to_i]
|
|
60
|
+
metric ? metric[:width] : 0
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
private
|
|
64
|
+
|
|
65
|
+
def parse_char_metric(line)
|
|
66
|
+
parts = line.split(";").map(&:strip)
|
|
67
|
+
code = nil
|
|
68
|
+
width = 0
|
|
69
|
+
name = nil
|
|
70
|
+
parts.each do |part|
|
|
71
|
+
kv = part.split(" ", 2)
|
|
72
|
+
case kv[0]
|
|
73
|
+
when "C" then code = kv[1].to_i
|
|
74
|
+
when "WX" then width = kv[1].to_f
|
|
75
|
+
when "N" then name = kv[1]
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
metric = { code: code, width: width, name: name }
|
|
79
|
+
@char_metrics[code] = metric if code && code >= 0
|
|
80
|
+
@char_metrics[name] = metric if name
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pdfrb
|
|
4
|
+
module Font
|
|
5
|
+
module CMap
|
|
6
|
+
# Minimal CMap text parser. Extracts +begincodespacerange+,
|
|
7
|
+
# +beginbfchar+, +beginbfrange+ sections into a simple Hash
|
|
8
|
+
# mapping source codes to target Unicode strings.
|
|
9
|
+
class Parser
|
|
10
|
+
attr_reader :cmap_name, :system_info, :codespace, :bfchar, :bfrange
|
|
11
|
+
|
|
12
|
+
def initialize
|
|
13
|
+
@codespace = []
|
|
14
|
+
@bfchar = {}
|
|
15
|
+
@bfrange = []
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def self.parse(text)
|
|
19
|
+
new.tap { |p| p.parse(text) }
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def parse(text)
|
|
23
|
+
text.each_line do |line|
|
|
24
|
+
stripped = line.strip
|
|
25
|
+
case stripped
|
|
26
|
+
when /\/CMapName\s+\/(\S+)/ then @cmap_name = Regexp.last_match(1)
|
|
27
|
+
when /\Abegincodespacerange/
|
|
28
|
+
read_section(text, line, :codespacerange)
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
parse_bfchar_sections(text)
|
|
32
|
+
parse_bfrange_sections(text)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def decode(code)
|
|
36
|
+
@bfchar[code]
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
private
|
|
40
|
+
|
|
41
|
+
def read_section(text, start_line, kind)
|
|
42
|
+
# Minimal — a full CMap parser needs state tracking.
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def parse_bfchar_sections(text)
|
|
46
|
+
lines = text.each_line.to_a
|
|
47
|
+
i = 0
|
|
48
|
+
while i < lines.length
|
|
49
|
+
if lines[i].strip =~ /\Abeginbfchar\b/
|
|
50
|
+
i += 1
|
|
51
|
+
until lines[i].strip == "endbfchar"
|
|
52
|
+
pair = lines[i].strip.split(/\s+/)
|
|
53
|
+
if pair.length >= 2
|
|
54
|
+
key = hex_to_int(pair[0])
|
|
55
|
+
val = hex_to_utf16(pair[1])
|
|
56
|
+
@bfchar[key] = val
|
|
57
|
+
end
|
|
58
|
+
i += 1
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
i += 1
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def parse_bfrange_sections(text)
|
|
66
|
+
# Simplified: parse `<start> <end> <target>` lines.
|
|
67
|
+
text.each_line do |line|
|
|
68
|
+
m = line.strip.match(/<([0-9A-Fa-f]+)>\s*<([0-9A-Fa-f]+)>\s*<([0-9A-Fa-f]+)>/)
|
|
69
|
+
next unless m
|
|
70
|
+
|
|
71
|
+
start_code = m[1].to_i(16)
|
|
72
|
+
end_code = m[2].to_i(16)
|
|
73
|
+
target_start = m[3].to_i(16)
|
|
74
|
+
(start_code..end_code).each_with_index do |code, idx|
|
|
75
|
+
cp = target_start + idx
|
|
76
|
+
@bfchar[code] = [cp].pack("U") if cp <= 0x10FFFF
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def hex_to_int(str)
|
|
82
|
+
str.sub(/\A</, "").sub(/>\z/, "").to_i(16)
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def hex_to_utf16(str)
|
|
86
|
+
raw = str.sub(/\A</, "").sub(/>\z/, "")
|
|
87
|
+
if raw.length == 4
|
|
88
|
+
[raw.to_i(16)].pack("U")
|
|
89
|
+
else
|
|
90
|
+
raw.scan(/.{4}/).map { |h| h.to_i(16) }.pack("U*")
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pdfrb
|
|
4
|
+
module Font
|
|
5
|
+
module CMap
|
|
6
|
+
# Writes a CMap text file from a +bfchar+ mapping. Used when
|
|
7
|
+
# embedding CID fonts with a subset of glyphs.
|
|
8
|
+
class Writer
|
|
9
|
+
attr_reader :cmap_name, :cid_system_info, :mapping
|
|
10
|
+
|
|
11
|
+
def initialize(cmap_name:, cid_system_info:, mapping:)
|
|
12
|
+
@cmap_name = cmap_name
|
|
13
|
+
@cid_system_info = cid_system_info
|
|
14
|
+
@mapping = mapping
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def to_s
|
|
18
|
+
buffer = +""
|
|
19
|
+
buffer << "/CIDInit /ProcSet findresource begin\n"
|
|
20
|
+
buffer << "12 dict begin\n"
|
|
21
|
+
buffer << "begincmap\n"
|
|
22
|
+
buffer << "/CIDSystemInfo <<\n"
|
|
23
|
+
buffer << " /Registry (Adobe)\n"
|
|
24
|
+
buffer << " /Ordering (#{@cid_system_info[:ordering]})\n"
|
|
25
|
+
buffer << " /Supplement #{@cid_system_info[:supplement]}\n"
|
|
26
|
+
buffer << ">> def\n"
|
|
27
|
+
buffer << "/CMapName /#{@cmap_name} def\n"
|
|
28
|
+
buffer << "/CMapType 1 def\n"
|
|
29
|
+
buffer << "1 begincodespacerange\n"
|
|
30
|
+
buffer << " <0000> <FFFF>\n"
|
|
31
|
+
buffer << "endcodespacerange\n"
|
|
32
|
+
buffer << "#{@mapping.length} beginbfchar\n"
|
|
33
|
+
@mapping.each do |code, unicode|
|
|
34
|
+
buffer << "<%04X> <%04X>\n" % [code, unicode]
|
|
35
|
+
end
|
|
36
|
+
buffer << "endbfchar\n"
|
|
37
|
+
buffer << "endcmap\n"
|
|
38
|
+
buffer << "CMapName currentdict /CMap defineresource pop\n"
|
|
39
|
+
buffer << "end\n"
|
|
40
|
+
buffer << "end\n"
|
|
41
|
+
buffer.force_encoding(Encoding::BINARY)
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pdfrb
|
|
4
|
+
module Font
|
|
5
|
+
module Encoding
|
|
6
|
+
# MacRomanEncoding (Mac OS Roman, Appendix D.3).
|
|
7
|
+
module MacRomanEncoding
|
|
8
|
+
TABLE = (0..127).each_with_object(Array.new(256, nil)) { |i, a| a[i] = i }
|
|
9
|
+
{ 0x80 => 0x00C4, 0x81 => 0x00C5, 0x82 => 0x00C7, 0x83 => 0x00C9,
|
|
10
|
+
0x84 => 0x00D1, 0x85 => 0x00D6, 0x86 => 0x00DC, 0x87 => 0x00E1,
|
|
11
|
+
0x88 => 0x00E0, 0x89 => 0x00E2, 0x8A => 0x00E4, 0x8B => 0x00E3,
|
|
12
|
+
0x8C => 0x00E5, 0x8D => 0x00E7, 0x8E => 0x00E9, 0x8F => 0x00E8
|
|
13
|
+
}.each { |b, cp| TABLE[b] = cp }
|
|
14
|
+
(0x90..0xFF).each do |b|
|
|
15
|
+
TABLE[b] = TABLE[b] || case b
|
|
16
|
+
when 0xD0..0xFF then b + 0x500
|
|
17
|
+
else b
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
TABLE.map! { |cp| cp || 0x3F }
|
|
21
|
+
TABLE.freeze
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pdfrb
|
|
4
|
+
module Font
|
|
5
|
+
module Encoding
|
|
6
|
+
# PDFDocEncoding table (Appendix D.2). Reuses the StringEncoding
|
|
7
|
+
# table already defined in +Cos::StringEncoding+ to avoid duplication.
|
|
8
|
+
module PDFDocEncoding
|
|
9
|
+
TABLE = Pdfrb::Model::Cos::StringEncoding::PDF_DOC_ENCODING
|
|
10
|
+
.each_with_index.each_with_object(Array.new(256, nil)) do |((cp, byte), _), arr|
|
|
11
|
+
arr[byte] = cp if cp
|
|
12
|
+
end.freeze
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pdfrb
|
|
4
|
+
module Font
|
|
5
|
+
module Encoding
|
|
6
|
+
# StandardEncoding (Adobe Standard, Appendix D.4).
|
|
7
|
+
# Maps glyph names to byte positions.
|
|
8
|
+
module StandardEncoding
|
|
9
|
+
GLYPH_NAMES = {
|
|
10
|
+
0x20 => "space", 0x21 => "exclam", 0x22 => "quotedbl",
|
|
11
|
+
0x23 => "numbersign", 0x24 => "dollar", 0x25 => "percent",
|
|
12
|
+
0x26 => "ampersand", 0x27 => "quoteright", 0x28 => "parenleft",
|
|
13
|
+
0x29 => "parenright", 0x2A => "asterisk", 0x2B => "plus",
|
|
14
|
+
0x2C => "comma", 0x2D => "hyphen", 0x2E => "period",
|
|
15
|
+
0x2F => "slash", (0x30..0x39).map { |d| [d, ("0".ord + d - 0x30).chr] } => nil
|
|
16
|
+
}.freeze
|
|
17
|
+
|
|
18
|
+
TABLE = (0..255).each_with_object(Array.new(256, nil)) do |i, arr|
|
|
19
|
+
arr[i] = i if i < 0x80
|
|
20
|
+
end.freeze
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pdfrb
|
|
4
|
+
module Font
|
|
5
|
+
module Encoding
|
|
6
|
+
# WinAnsiEncoding (Windows Code Page 1252, Appendix D.1).
|
|
7
|
+
module WinAnsiEncoding
|
|
8
|
+
TABLE = (0..255).each_with_object(Array.new(256, nil)) do |i, arr|
|
|
9
|
+
arr[i] = i if i < 0x80
|
|
10
|
+
end
|
|
11
|
+
# High-byte mappings (subset — full table is in Windows-1252 spec).
|
|
12
|
+
{ 0x80 => 0x20AC, 0x82 => 0x201A, 0x83 => 0x0192, 0x84 => 0x201E,
|
|
13
|
+
0x85 => 0x2026, 0x86 => 0x2020, 0x87 => 0x2021, 0x88 => 0x02C6,
|
|
14
|
+
0x89 => 0x2030, 0x8A => 0x0160, 0x8B => 0x2039, 0x8C => 0x0152,
|
|
15
|
+
0x8E => 0x017D, 0x91 => 0x2018, 0x92 => 0x2019, 0x93 => 0x201C,
|
|
16
|
+
0x94 => 0x201D, 0x95 => 0x2022, 0x96 => 0x2013, 0x97 => 0x2014,
|
|
17
|
+
0x98 => 0x02DC, 0x99 => 0x2122, 0x9A => 0x0161, 0x9B => 0x203A,
|
|
18
|
+
0x9C => 0x0153, 0x9E => 0x017E, 0x9F => 0x0178
|
|
19
|
+
}.each { |b, cp| TABLE[b] = cp }
|
|
20
|
+
(0xA0..0xFF).each { |b| TABLE[b] = b }
|
|
21
|
+
TABLE.freeze
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Pdfrb
|
|
4
|
+
module Font
|
|
5
|
+
module Encoding
|
|
6
|
+
# ZapfDingbatsEncoding. Maps byte values to glyph names.
|
|
7
|
+
# Used by the 14th standard font (ZapfDingbats).
|
|
8
|
+
module ZapfDingbatsEncoding
|
|
9
|
+
TABLE = Array.new(256, 0x3F).freeze
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|