Module | Prawn::Document::Internals
In: | lib/prawn/document/internals.rb

This module exposes a few low-level PDF features for those who want to extend Prawn‘s core functionality. If you are not comfortable with low level PDF functionality as defined by Adobe‘s specification, chances are you won‘t need anything you find here.

### Methods

add_content before_render names names? on_page_create ref ref!

### Public Instance methods

add_content(str)

Appends a raw string to the current page content.

     # Raw line drawing example:
     x1,y1,x2,y2 = 100,500,300,550
     pdf.add_content("%.3f %.3f m" % [ x1, y1 ])  # move
     pdf.add_content("%.3f %.3f l" % [ x2, y2 ])  # draw path
     pdf.add_content("S") # stroke

before_render(&block)

Defines a block to be called just before the document is rendered.

names()

The Name dictionary (PDF spec 3.6.3) for this document. It is lazily initialized, so that documents that do not need a name dictionary do not incur the additional overhead.

names?()

Returns true if the Names dictionary is in use for this document.

on_page_create(&block)

Defines a block to be called just before a new page is started.

ref(data)

Creates a new Prawn::Reference and adds it to the Document‘s object list. The `data` argument is anything that Prawn::PdfObject() can convert.

Returns the identifier which points to the reference in the ObjectStore

ref!(data)

Like ref, but returns the actual reference instead of its identifier.

While you can use this to build up nested references within the object tree, it is recommended to persist only identifiers, and them provide helper methods to look up the actual references in the ObjectStore if needed. If you take this approach, Prawn::Document::Snapshot will probably work with your extension

[Validate]