001: /*
002: * Copyright (c) 2007, intarsys consulting GmbH
003: *
004: * Redistribution and use in source and binary forms, with or without
005: * modification, are permitted provided that the following conditions are met:
006: *
007: * - Redistributions of source code must retain the above copyright notice,
008: * this list of conditions and the following disclaimer.
009: *
010: * - Redistributions in binary form must reproduce the above copyright notice,
011: * this list of conditions and the following disclaimer in the documentation
012: * and/or other materials provided with the distribution.
013: *
014: * - Neither the name of intarsys nor the names of its contributors may be used
015: * to endorse or promote products derived from this software without specific
016: * prior written permission.
017: *
018: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
019: * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
020: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
021: * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
022: * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
023: * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
024: * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
025: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
026: * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
027: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
028: * POSSIBILITY OF SUCH DAMAGE.
029: */
030: package de.intarsys.pdf.pd;
031:
032: import de.intarsys.pdf.cos.COSDictionary;
033: import de.intarsys.pdf.cos.COSName;
034: import de.intarsys.pdf.cos.COSObject;
035: import de.intarsys.pdf.cos.COSStream;
036: import de.intarsys.pdf.filter.Filter;
037:
038: /**
039: * An embedding of another file (and optional content) within the PDF.
040: *
041: */
042: public class PDEmbeddedFile extends PDObject {
043: /**
044: * The meta class implementation
045: */
046: static public class MetaClass extends PDObject.MetaClass {
047: protected MetaClass(Class instanceClass) {
048: super (instanceClass);
049: }
050:
051: protected COSObject doCreateCOSObject() {
052: return COSStream.create(null);
053: }
054: }
055:
056: /** The meta class instance */
057: static public final MetaClass META = new MetaClass(MetaClass.class
058: .getDeclaringClass());
059:
060: static public final COSName CN_Type_EmbeddedFile = COSName
061: .constant("EmbeddedFile"); //
062:
063: protected PDEmbeddedFile(COSObject object) {
064: super (object);
065: }
066:
067: /*
068: * (non-Javadoc)
069: *
070: * @see de.intarsys.pdf.pd.PDObject#cosGetExpectedType()
071: */
072: protected COSName cosGetExpectedType() {
073: return CN_Type_EmbeddedFile;
074: }
075:
076: /*
077: * (non-Javadoc)
078: *
079: * @see de.intarsys.pdf.cos.COSBasedObject#cosGetDict()
080: */
081: public COSDictionary cosGetDict() {
082: return cosGetStream().getDict();
083: }
084:
085: /**
086: * get the data representing the XObject
087: *
088: * @return get the data representing the XObject
089: */
090: public byte[] getBytes() {
091: return cosGetStream().getDecodedBytes();
092: }
093:
094: /**
095: * set the data representing the XObject
096: *
097: * @param bytes
098: * the data representing the XObject
099: */
100: public void setBytes(byte[] bytes) {
101: cosGetStream().setDecodedBytes(bytes);
102: }
103:
104: /*
105: * (non-Javadoc)
106: *
107: * @see de.intarsys.pdf.pd.PDSubtypedObject#initializeFromScratch()
108: */
109: protected void initializeFromScratch() {
110: super.initializeFromScratch();
111: cosGetStream().addFilter(Filter.CN_Filter_FlateDecode);
112: }
113: }
|