Skip to content
Fetching contributors…
Cannot retrieve contributors at this time
56 lines (44 sloc) 1.66 KB
###
PDFObject - converts JavaScript types into their corrisponding PDF types.
By Devon Govett
###
class PDFObject
pad = (str, length) ->
(Array(length + 1).join('0') + str).slice(-length)
@convert: (object) ->
if Array.isArray object
items = (PDFObject.convert e for e in object).join(' ')
'[' + items + ']'
else if typeof object is 'string'
'/' + object
else if object?.isString
'(' + object + ')'
else if object instanceof PDFReference
object.toString()
else if object instanceof Date
'(D:' + pad(object.getUTCFullYear(), 4) +
pad(object.getUTCMonth(), 2) +
pad(object.getUTCDate(), 2) +
pad(object.getUTCHours(), 2) +
pad(object.getUTCMinutes(), 2) +
pad(object.getUTCSeconds(), 2) +
'Z)'
else if {}.toString.call(object) is '[object Object]'
out = ['<<']
for key, val of object
out.push '/' + key + ' ' + PDFObject.convert(val)
out.push '>>'
out.join '\n'
else
'' + object
@s: (string) ->
string = string.replace(/\\/g, '\\\\\\\\')
.replace(/\(/g, '\\(')
.replace(/\)/g, '\\)')
.replace(/&lt;/g, '<')
.replace(/&gt;/g, '>')
.replace(/&amp;/g, '&')
isString: yes
toString: -> string
module.exports = PDFObject
PDFReference = require './reference'
Something went wrong with that request. Please try again.