Module: Pdfrb

Defined in:
lib/pdfrb.rb,
lib/pdfrb/cli.rb,
lib/pdfrb/font.rb,
lib/pdfrb/task.rb,
lib/pdfrb/error.rb,
lib/pdfrb/model.rb,
lib/pdfrb/filter.rb,
lib/pdfrb/source.rb,
lib/pdfrb/writer.rb,
lib/pdfrb/content.rb,
lib/pdfrb/version.rb,
lib/pdfrb/data_dir.rb,
lib/pdfrb/document.rb,
lib/pdfrb/importer.rb,
lib/pdfrb/arlington.rb,
lib/pdfrb/font/cmap.rb,
lib/pdfrb/model/cos.rb,
lib/pdfrb/encryption.rb,
lib/pdfrb/font/type1.rb,
lib/pdfrb/model/date.rb,
lib/pdfrb/model/type.rb,
lib/pdfrb/serializer.rb,
lib/pdfrb/task/merge.rb,
lib/pdfrb/conformance.rb,
lib/pdfrb/filter/base.rb,
lib/pdfrb/font_loader.rb,
lib/pdfrb/filter/crypt.rb,
lib/pdfrb/image_loader.rb,
lib/pdfrb/model/matrix.rb,
lib/pdfrb/model/object.rb,
lib/pdfrb/source/token.rb,
lib/pdfrb/xref_section.rb,
lib/pdfrb/configuration.rb,
lib/pdfrb/font/encoding.rb,
lib/pdfrb/pdf_constants.rb,
lib/pdfrb/source/parser.rb,
lib/pdfrb/task/optimize.rb,
lib/pdfrb/arlington/type.rb,
lib/pdfrb/content/canvas.rb,
lib/pdfrb/content/parser.rb,
lib/pdfrb/document/files.rb,
lib/pdfrb/document/fonts.rb,
lib/pdfrb/document/pages.rb,
lib/pdfrb/encryption/aes.rb,
lib/pdfrb/encryption/rc4.rb,
lib/pdfrb/font/true_type.rb,
lib/pdfrb/source/helpers.rb,
lib/pdfrb/document/images.rb,
lib/pdfrb/font/afm_parser.rb,
lib/pdfrb/font/glyph_list.rb,
lib/pdfrb/model/pdf_array.rb,
lib/pdfrb/model/rectangle.rb,
lib/pdfrb/model/reference.rb,
lib/pdfrb/model/type/font.rb,
lib/pdfrb/model/type/info.rb,
lib/pdfrb/model/type/page.rb,
lib/pdfrb/source/recovery.rb,
lib/pdfrb/arlington/loader.rb,
lib/pdfrb/content/operator.rb,
lib/pdfrb/document/outline.rb,
lib/pdfrb/font/cmap/parser.rb,
lib/pdfrb/font/cmap/writer.rb,
lib/pdfrb/image_loader/pdf.rb,
lib/pdfrb/image_loader/png.rb,
lib/pdfrb/model/cos/fields.rb,
lib/pdfrb/model/cos/stream.rb,
lib/pdfrb/model/type/names.rb,
lib/pdfrb/source/tokenizer.rb,
lib/pdfrb/conformance/pdf_a.rb,
lib/pdfrb/content/processor.rb,
lib/pdfrb/digital_signature.rb,
lib/pdfrb/document/metadata.rb,
lib/pdfrb/filter/lzw_decode.rb,
lib/pdfrb/font_loader/type1.rb,
lib/pdfrb/image_loader/jpeg.rb,
lib/pdfrb/model/type/action.rb,
lib/pdfrb/task/extract_text.rb,
lib/pdfrb/conformance/pdf_ua.rb,
lib/pdfrb/font/true_type/os2.rb,
lib/pdfrb/model/type/catalog.rb,
lib/pdfrb/model/type/outline.rb,
lib/pdfrb/arlington/predicate.rb,
lib/pdfrb/filter/flate_decode.rb,
lib/pdfrb/font/true_type/cmap.rb,
lib/pdfrb/font/true_type/file.rb,
lib/pdfrb/font/true_type/head.rb,
lib/pdfrb/font/true_type/hhea.rb,
lib/pdfrb/font/true_type/hmtx.rb,
lib/pdfrb/model/type/cid_font.rb,
lib/pdfrb/model/type/metadata.rb,
lib/pdfrb/task/extract_images.rb,
lib/pdfrb/document/annotations.rb,
lib/pdfrb/model/cos/dictionary.rb,
lib/pdfrb/model/type/resources.rb,
lib/pdfrb/source/header_reader.rb,
lib/pdfrb/source/object_reader.rb,
lib/pdfrb/arlington/pdf_version.rb,
lib/pdfrb/document/destinations.rb,
lib/pdfrb/font_loader/true_type.rb,
lib/pdfrb/model/type/annotation.rb,
lib/pdfrb/model/type/font_type0.rb,
lib/pdfrb/model/type/font_type1.rb,
lib/pdfrb/model/type/font_type3.rb,
lib/pdfrb/source/trailer_reader.rb,
lib/pdfrb/content/graphic_object.rb,
lib/pdfrb/content/graphics_state.rb,
lib/pdfrb/content/operators/path.rb,
lib/pdfrb/filter/ascii_85_decode.rb,
lib/pdfrb/model/type/struct_elem.rb,
lib/pdfrb/model/type/xref_stream.rb,
lib/pdfrb/arlington/predicate/ast.rb,
lib/pdfrb/content/operators/color.rb,
lib/pdfrb/filter/ascii_hex_decode.rb,
lib/pdfrb/font/type1/font_metrics.rb,
lib/pdfrb/model/cos/name_encoding.rb,
lib/pdfrb/model/type/file_trailer.rb,
lib/pdfrb/model/type/outline_item.rb,
lib/pdfrb/model/type/xobject_form.rb,
lib/pdfrb/filter/run_length_decode.rb,
lib/pdfrb/font/true_type/subsetter.rb,
lib/pdfrb/model/type/embedded_file.rb,
lib/pdfrb/model/type/object_stream.rb,
lib/pdfrb/model/type/output_intent.rb,
lib/pdfrb/model/type/xobject_image.rb,
lib/pdfrb/source/xref_table_reader.rb,
lib/pdfrb/arlington/predicate/lexer.rb,
lib/pdfrb/content/operators/general.rb,
lib/pdfrb/digital_signature/handler.rb,
lib/pdfrb/digital_signature/signing.rb,
lib/pdfrb/model/cos/string_encoding.rb,
lib/pdfrb/model/type/font_true_type.rb,
lib/pdfrb/model/type/page_tree_node.rb,
lib/pdfrb/source/xref_stream_reader.rb,
lib/pdfrb/arlington/field_definition.rb,
lib/pdfrb/arlington/predicate/parser.rb,
lib/pdfrb/content/graphic_object/arc.rb,
lib/pdfrb/content/operators/painting.rb,
lib/pdfrb/filter/passthrough_filters.rb,
lib/pdfrb/model/type/font_descriptor.rb,
lib/pdfrb/arlington/object_definition.rb,
lib/pdfrb/arlington/predicate/context.rb,
lib/pdfrb/encryption/security_handler.rb,
lib/pdfrb/model/type/af_embedded_file.rb,
lib/pdfrb/model/type/interactive_form.rb,
lib/pdfrb/model/type/struct_tree_root.rb,
lib/pdfrb/source/object_stream_reader.rb,
lib/pdfrb/content/graphic_object/curve.rb,
lib/pdfrb/content/operators/text_state.rb,
lib/pdfrb/arlington/predicate/evaluator.rb,
lib/pdfrb/arlington/predicate/functions.rb,
lib/pdfrb/model/type/file_specification.rb,
lib/pdfrb/content/operators/text_showing.rb,
lib/pdfrb/digital_signature/verification.rb,
lib/pdfrb/font/encoding/pdf_doc_encoding.rb,
lib/pdfrb/model/type/encryption_standard.rb,
lib/pdfrb/source/linearization_detection.rb,
lib/pdfrb/content/graphic_object/polyline.rb,
lib/pdfrb/font/encoding/standard_encoding.rb,
lib/pdfrb/font/encoding/win_ansi_encoding.rb,
lib/pdfrb/content/graphic_object/rectangle.rb,
lib/pdfrb/content/operators/marked_content.rb,
lib/pdfrb/encryption/password_verification.rb,
lib/pdfrb/font/encoding/mac_roman_encoding.rb,
lib/pdfrb/model/type/af_file_specification.rb,
lib/pdfrb/model/type/encryption_public_key.rb,
lib/pdfrb/model/type/optional_content_group.rb,
lib/pdfrb/arlington/predicate/functions/file.rb,
lib/pdfrb/content/operators/text_positioning.rb,
lib/pdfrb/model/type/graphics_state_parameter.rb,
lib/pdfrb/encryption/standard_security_handler.rb,
lib/pdfrb/font/encoding/zapf_dingbats_encoding.rb,
lib/pdfrb/arlington/predicate/functions/logical.rb,
lib/pdfrb/arlington/predicate/functions/version.rb,
lib/pdfrb/arlington/predicate/functions/presence.rb,
lib/pdfrb/model/type/optional_content_membership.rb,
lib/pdfrb/model/type/optional_content_properties.rb,
lib/pdfrb/arlington/predicate/functions/reference.rb,
lib/pdfrb/content/operators/graphics_state_params.rb,
lib/pdfrb/arlington/predicate/functions/arithmetic.rb

Overview

Pdfrb — pure-Ruby PDF library.

Two-direction contract:

* "PDF file <=> Model" — parse PDF bytes into a typed Model, serialize
a Model back to PDF bytes. Round-trip is the correctness backbone.
* "API Builder Input => Model" — Document / Canvas build a typed
Model from user intent, which is then serialized.

Pdfrb is deliberately scoped to the PDF byte format. Layout concerns (page templates, flows, line breaking, tables, etc.) live in the sibling arroolio gem.

The PDF object model is sourced directly from the vendored Arlington PDF Model TSVs (data/pdfrb/arlington/*.tsv). Field metadata, version predicates, and validators stay aligned with ISO 32000-2:2020 by data, not by hand-coded mimicry.

Layering (mirrors the sibling postscript gem):

Source      — bytes → tokens → COS graph (read direction)
Model       — typed domain model (COS values + Type::* semantics)
Arlington   — TSV loader + predicate evaluator (drives Model field defs)
Filter      — stream filter pipeline (Flate, ASCII-85, LZW, ...)
Content     — content-stream operators + Canvas drawing API
Serializer  — Model → bytes
Writer      — Document → file (xref + trailer assembly)
Document    — top-level facade

Defined Under Namespace

Modules: Arlington, Conformance, Content, DataDir, DigitalSignature, Encryption, Filter, Font, FontLoader, ImageLoader, Model, PdfConstants, Source, Task Classes: CLI, Configuration, Document, EncryptionError, Error, FilterError, Importer, LexError, MalformedPdfError, ObjectReferenceError, ParseError, SerializeError, Serializer, SyntaxError, UnsupportedVersionError, ValidationError, Writer, XrefSection

Constant Summary collapse

VERSION =
"0.2.0"