1 Clazz.declarePackage ("javajs.export");
\r
2 Clazz.load (["javajs.util.SB"], "javajs.export.PDFObject", ["java.io.ByteArrayOutputStream", "java.util.Hashtable", "$.Map", "java.util.zip.Deflater", "$.DeflaterOutputStream"], function () {
\r
3 c$ = Clazz.decorateAsClass (function () {
\r
4 this.dictionary = null;
\r
10 Clazz.instantialize (this, arguments);
\r
11 }, javajs["export"], "PDFObject", javajs.util.SB);
\r
12 Clazz.makeConstructor (c$,
\r
14 Clazz.superConstructor (this, javajs["export"].PDFObject, []);
\r
17 Clazz.defineMethod (c$, "getRef",
\r
19 return this.index + " 0 R";
\r
21 Clazz.defineMethod (c$, "getID",
\r
23 return this.type.substring (0, 1) + this.index;
\r
25 Clazz.defineMethod (c$, "isFont",
\r
27 return "Font".equals (this.type);
\r
29 Clazz.defineMethod (c$, "setStream",
\r
31 this.stream = stream;
\r
33 Clazz.defineMethod (c$, "getDef",
\r
35 return this.dictionary.get (key);
\r
37 Clazz.defineMethod (c$, "addDef",
\r
38 function (key, value) {
\r
39 if (this.dictionary == null) this.dictionary = new java.util.Hashtable ();
\r
40 this.dictionary.put (key, value);
\r
41 if (key.equals ("Type")) this.type = (value).substring (1);
\r
43 Clazz.defineMethod (c$, "setAsStream",
\r
45 this.stream = this.toBytes (0, -1);
\r
48 Clazz.defineMethod (c$, "output",
\r
50 if (this.index > 0) {
\r
51 var s = this.index + " 0 obj\n";
\r
52 this.write (os, s.getBytes (), 0);
\r
54 if (this.dictionary != null) {
\r
55 if (this.dictionary.containsKey ("Length")) {
\r
56 if (this.stream == null) this.setAsStream ();
\r
57 streamLen = this.stream.length;
\r
58 var doDeflate = (streamLen > 1000);
\r
60 var deflater = new java.util.zip.Deflater (9);
\r
61 var outBytes = new java.io.ByteArrayOutputStream (1024);
\r
62 var compBytes = new java.util.zip.DeflaterOutputStream (outBytes, deflater);
\r
63 compBytes.write (this.stream, 0, streamLen);
\r
64 compBytes.finish ();
\r
65 this.stream = outBytes.toByteArray ();
\r
66 this.dictionary.put ("Filter", "/FlateDecode");
\r
67 streamLen = this.stream.length;
\r
68 }this.dictionary.put ("Length", "" + streamLen);
\r
69 }this.write (os, this.getDictionaryText (this.dictionary, "\n").getBytes (), 0);
\r
70 }if (this.length () > 0) this.write (os, this.toString ().getBytes (), 0);
\r
71 if (this.stream != null) {
\r
72 this.write (os, "stream\r\n".getBytes (), 0);
\r
73 this.write (os, this.stream, streamLen);
\r
74 this.write (os, "\r\nendstream\r\n".getBytes (), 0);
\r
75 }if (this.index > 0) this.write (os, "endobj\n".getBytes (), 0);
\r
77 }, "java.io.OutputStream");
\r
78 Clazz.defineMethod (c$, "write",
\r
79 ($fz = function (os, bytes, nBytes) {
\r
80 if (nBytes == 0) nBytes = bytes.length;
\r
82 os.write (bytes, 0, nBytes);
\r
83 }, $fz.isPrivate = true, $fz), "java.io.OutputStream,~A,~N");
\r
84 Clazz.defineMethod (c$, "getDictionaryText",
\r
85 ($fz = function (d, nl) {
\r
86 var sb = new javajs.util.SB ();
\r
88 if (d.containsKey ("Type")) sb.append ("/Type").appendO (d.get ("Type"));
\r
89 for (var e, $e = d.entrySet ().iterator (); $e.hasNext () && ((e = $e.next ()) || true);) {
\r
90 var s = e.getKey ();
\r
91 if (s.equals ("Type") || s.startsWith ("!")) continue;
\r
92 sb.append ("/" + s);
\r
93 var o = e.getValue ();
\r
94 if (Clazz.instanceOf (o, java.util.Map)) {
\r
95 sb.append ((this.getDictionaryText (o, "")));
\r
98 if (!s.startsWith ("/")) sb.append (" ");
\r
101 return (sb.length () > 3 ? sb.append (">>").append (nl).toString () : "");
\r
102 }, $fz.isPrivate = true, $fz), "java.util.Map,~S");
\r
103 Clazz.defineMethod (c$, "createSubdict",
\r
104 ($fz = function (d0, dict) {
\r
105 var d = d0.get (dict);
\r
106 if (d == null) d0.put (dict, d = new java.util.Hashtable ());
\r
108 }, $fz.isPrivate = true, $fz), "java.util.Map,~S");
\r
109 Clazz.defineMethod (c$, "addResource",
\r
110 function (type, key, value) {
\r
111 var r = this.createSubdict (this.dictionary, "Resources");
\r
112 if (type != null) r = this.createSubdict (r, type);
\r
113 r.put (key, value);
\r