org.apache.pdfbox.pdmodel.common.filespecification

## Class PDComplexFileSpecification

- java.lang.Object
- - org.apache.pdfbox.pdmodel.common.filespecification.PDFileSpecification
  - - org.apache.pdfbox.pdmodel.common.filespecification.PDComplexFileSpecification

All Implemented Interfaces:
  COSObjectable

    public class PDComplexFileSpecification
    extends PDFileSpecification

This represents a file specification.

Author:
  Ben Litchfield

### Constructor Summary

Constructors
Constructor and Description
`PDComplexFileSpecification()` Default Constructor.
`PDComplexFileSpecification(COSDictionary dict)` Constructor.

### Method Summary

All Methods Instance Methods Concrete Methods
`COSDictionary` `getCOSObject()` Convert this standard java object to a COS object.
`PDEmbeddedFile` `getEmbeddedFile()` Get the embedded file.
`PDEmbeddedFile` `getEmbeddedFileDos()` Get the embedded dos file.
`PDEmbeddedFile` `getEmbeddedFileMac()` Get the embedded Mac file.
`PDEmbeddedFile` `getEmbeddedFileUnicode()` Get the embedded unicode file.
`PDEmbeddedFile` `getEmbeddedFileUnix()` Get the embedded Unix file.
`String` `getFile()` This will get the file name.
`String` `getFileDescription()` This will get the description.
`String` `getFileDos()` This will get the name representing a Dos file.
`String` `getFileMac()` This will get the name representing a Mac file.
`String` `getFilename()` Preferred method for getting the filename.
`String` `getFileUnicode()` This will get the unicode file name.
`String` `getFileUnix()` This will get the name representing a Unix file.
`boolean` `isVolatile()` Get if the file is volatile.
`void` `setEmbeddedFile(PDEmbeddedFile file)` Set the embedded file for this spec.
`void` `setEmbeddedFileUnicode(PDEmbeddedFile file)` Set the embedded Unicode file for this spec.
`void` `setFile(String file)` This will set the file name.
`void` `setFileDescription(String description)` Set the file description.
`void` `setFileUnicode(String file)` This will set the unicode file name.
`void` `setVolatile(boolean fileIsVolatile)` Tell if the underlying file is volatile and should not be cached by the reader application.

### Methods inherited from class org.apache.pdfbox.pdmodel.common.filespecification.PDFileSpecification

`createFS`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### PDComplexFileSpecification

    public PDComplexFileSpecification()

Default Constructor.

#### PDComplexFileSpecification

    public PDComplexFileSpecification(COSDictionary dict)

Constructor. Creates empty COSDictionary if dict is null.

Parameters:
  `dict` - The dictionary that fulfils this file specification.

### Method Detail

#### getCOSObject

    public COSDictionary getCOSObject()

Convert this standard java object to a COS object.

Returns:
  The cos object that matches this Java object.

#### getFilename

    public String getFilename()

Preferred method for getting the filename. It will determinate the recommended file name.

First of all we try to get the unicode filename if it exists. If it doesn't exist we take a look at the DOS, MAC UNIX filenames. If no one exist the required F entry will be returned.

Be aware that the filename may contain a directory separator and needs to be sanitized (CWE-22).

Returns:
  The preferred file name.

#### getFileUnicode

    public String getFileUnicode()

This will get the unicode file name. Be aware that the filename may contain a directory separator and needs to be sanitized (CWE-22).

Returns:
  The file name.

#### setFileUnicode

    public void setFileUnicode(String file)

This will set the unicode file name. If you call this, then do not forget to also call `setFile(String)` or the attachment will not be visible on some viewers.

Parameters:
  `file` - The name of the file.

#### getFile

    public String getFile()

This will get the file name. Be aware that the filename may contain a directory separator and needs to be sanitized (CWE-22).

Specified by:
  `getFile` in class `PDFileSpecification`
Returns:
  The file name.

#### setFile

    public void setFile(String file)

This will set the file name. You should also call `setFileUnicode(String)` for cross-platform and cross-language compatibility.

Specified by:
  `setFile` in class `PDFileSpecification`
Parameters:
  `file` - The name of the file.

#### getFileDos

    public String getFileDos()

This will get the name representing a Dos file. Be aware that the filename may contain a directory separator and needs to be sanitized (CWE-22).

Returns:
  The file name.

#### getFileMac

    public String getFileMac()

This will get the name representing a Mac file. Be aware that the filename may contain a directory separator and needs to be sanitized (CWE-22).

Returns:
  The file name.

#### getFileUnix

    public String getFileUnix()

This will get the name representing a Unix file. Be aware that the filename may contain a directory separator and needs to be sanitized (CWE-22).

Returns:
  The file name.

#### setVolatile

    public void setVolatile(boolean fileIsVolatile)

Tell if the underlying file is volatile and should not be cached by the reader application. Default: false

Parameters:
  `fileIsVolatile` - The new value for the volatility of the file.

#### isVolatile

    public boolean isVolatile()

Get if the file is volatile. Default: false

Returns:
  True if the file is volatile attribute is set.

#### getEmbeddedFile

    public PDEmbeddedFile getEmbeddedFile()

Get the embedded file.

Returns:
  The embedded file for this file spec.

#### setEmbeddedFile

    public void setEmbeddedFile(PDEmbeddedFile file)

Set the embedded file for this spec. You should also call `setEmbeddedFileUnicode(PDEmbeddedFile)` for cross-platform and cross-language compatibility.

Parameters:
  `file` - The file to be embedded.

#### getEmbeddedFileDos

    public PDEmbeddedFile getEmbeddedFileDos()

Get the embedded dos file.

Returns:
  The embedded dos file for this file spec.

#### getEmbeddedFileMac

    public PDEmbeddedFile getEmbeddedFileMac()

Get the embedded Mac file.

Returns:
  The embedded Mac file for this file spec.

#### getEmbeddedFileUnix

    public PDEmbeddedFile getEmbeddedFileUnix()

Get the embedded Unix file.

Returns:
  The embedded file for this file spec.

#### getEmbeddedFileUnicode

    public PDEmbeddedFile getEmbeddedFileUnicode()

Get the embedded unicode file.

Returns:
  The embedded unicode file for this file spec.

#### setEmbeddedFileUnicode

    public void setEmbeddedFileUnicode(PDEmbeddedFile file)

Set the embedded Unicode file for this spec. If you call this, then do not forget to also call `setEmbeddedFile(PDEmbeddedFile)` or the attachment will not be visible on some viewers.

Parameters:
  `file` - The Unicode file to be embedded.

#### setFileDescription

    public void setFileDescription(String description)

Set the file description.

Parameters:
  `description` - The file description

#### getFileDescription

    public String getFileDescription()

This will get the description.

Returns:
  The file description.