class PDFWalker::Walker::Properties

Public Class Methods

new(parent, pdf) click to toggle source
Calls superclass method
# File lib/pdfwalker/properties.rb, line 45
def initialize(parent, pdf)
    super("Document properties", parent, Dialog::MODAL, [Stock::CLOSE, Dialog::RESPONSE_NONE])

    file_frame = create_file_frame(parent)
    pdf_frame = create_document_frame(pdf)

    vbox.add(file_frame)
    vbox.add(pdf_frame)

    signal_connect('response') { destroy }

    show_all
end

Private Instance Methods

boolean_text(value) click to toggle source
# File lib/pdfwalker/properties.rb, line 120
def boolean_text(value)
    value ? 'yes' : 'no'
end
create_document_frame(pdf) click to toggle source
# File lib/pdfwalker/properties.rb, line 78
def create_document_frame(pdf)
    pdf_frame = Frame.new(" PDF properties ")

    pdf_version = pdf.header.to_f
    if pdf_version >= 1.0 and pdf_version <= 1.7
        acrobat_version = @@acrobat_versions[pdf_version]
    else
        acrobat_version = "unknown version"
    end

    labels =
    [
        [ "Version:",                    "#{pdf_version} (Acrobat #{acrobat_version})" ],
        [ "Number of revisions:",        "#{pdf.revisions.size}" ],
        [ "Number of indirect objects:", "#{pdf.indirect_objects.size}" ],
        [ "Number of pages:",            "#{pdf.pages.count}" ],
        [ "Linearized:",           boolean_text(pdf.linearized?) ],
        [ "Encrypted:",            boolean_text(pdf.encrypted?) ],
        [ "Signed:",               boolean_text(pdf.signed?) ],
        [ "Has usage rights:",     boolean_text(pdf.usage_rights?) ],
        [ "Form:",                 boolean_text(pdf.form?) ],
        [ "XFA form:",             boolean_text(pdf.xfa_form?) ],
        [ "Document information:", boolean_text(pdf.document_info?) ],
        [ "Metadata:",             boolean_text(pdf.metadata?) ]
    ]

    create_table(pdf_frame, labels)
end
create_file_frame(parent) click to toggle source
# File lib/pdfwalker/properties.rb, line 61
def create_file_frame(parent)
    file_frame = Frame.new(" File properties ")
    stat = File.stat(parent.filename)

    labels =
    [
        [ "Filename:", parent.filename ],
        [ "File size:", "#{File.size(parent.filename)} bytes" ],
        [ "MD5:", Digest::MD5.file(parent.filename).hexdigest ],
        [ "Read-only:", "#{not stat.writable?}" ],
        [ "Creation date:", stat.ctime.to_s ],
        [ "Last modified:", stat.mtime.to_s ]
    ]

    create_table(file_frame, labels)
end
create_table(frame, labels) click to toggle source
# File lib/pdfwalker/properties.rb, line 107
def create_table(frame, labels)
    table = Table.new(labels.size + 1, 3)

    labels.each_with_index do |label, row|
        table.attach(Label.new(label[0]).set_alignment(1,0), 0, 1, row, row + 1, Gtk::FILL,  Gtk::SHRINK, 4, 4)
        table.attach(Label.new(label[1]).set_alignment(0,0), 1, 2, row, row + 1, Gtk::EXPAND | Gtk::FILL, Gtk::SHRINK, 4, 4)
    end

    frame.border_width = 5
    frame.shadow_type = Gtk::SHADOW_IN
    frame.add(table)
end