Title: Apache(tm) FOP: Config Options

#Apache&trade; FOP: Config Options

### [FopConfParser](configuration.html)

- accessibility element boolean
- base element
- break-indent-inheritance element boolean
- class attribute
- complex-scripts element
- country attribute
- default-page-settings element
- disabled attribute boolean
- extension attribute
- height attribute
- hyp
- hyphenation-base element
- hyphenation-pattern element
- image-loading element
- lang attribute
- penalty element
- prefer-renderer
- simple-line-breaking
- source-resolution element float
- strict-configuration element boolean
- strict-validation element boolean
- table-border-overpaint
- target-resolution element float
- value attribute
- width attribute
- xml

### [DefaultFontConfig](fonts.html#bulk)

- advanced attribute boolean
- auto-detect element
- directory element
- embed-as-type1 attribute boolean
- embed-url attribute
- embed-url-afm attribute
- embed-url-pfm attribute
- embedding-mode attribute
- encoding-mode attribute
- font element
- font-family attribute
- font-triplet element
- fonts element
- kerning attribute boolean
- match element
- metrics-url attribute
- mime attribute
- name attribute
- recursive attribute boolean
- referenced-fonts element
- simulate-style
- style attribute
- sub-font attribute
- svg attribute boolean
- weight attribute

### [PDFEncryptionOption](pdfencryption.html#embedded)

- encrypt-metadata default: true
- encryption-length
- encryption-params
- noaccesscontent default: false
- noannotations default: false
- noassembledoc default: false
- nocopy default: false
- noedit default: false
- nofillinforms default: false
- noprint default: false
- noprinthq
- owner-password
- user-password

### [PDFRendererOption](pdfa.html#fop-xconf)

- disable-srgb-colorspace default: false
- form-xobject default: false
- linearization default: false
- merge-fonts default: false
- output-profile
- pdf-a-mode
- pdf-ua-mode
- pdf-vt-mode
- pdf-x-mode
- version

### [AFPRendererOption](output.html#afp-configuration)

- allow-embedding boolean
- bitmap-encoding-quality float
- default-resource-levels
- dithering-quality float
- fs45 boolean
- goca boolean
- images
- jpeg
- line-width-correction float
- mapping_option
- mode boolean
- native boolean
- pseg boolean
- renderer-resolution integer
- resource-group-file
- shading
- text boolean

### [PSRendererOption](output.html#ps-configuration)

- acrobat-downsample default: false
- auto-rotate-landscape default: false
- dsc-compliant default: true
- language-level
- optimize-resources default: false
- rendering
- safe-set-page-device default: false

### [TxtRendererConfig](output.html#txt)

- encoding

### [PCLRendererOption](output.html#pcl-configuration)

- color boolean
- disable-pjl boolean
- optimize-resources boolean
- rendering
- text-rendering boolean
- transparent-page-background

### [BitmapRendererOption](output.html#bitmap-configuration)

- anti-aliasing default: true
- background-color
- bi-level
- binary
- color-mode
- gray
- quality default: true
- rendering
- rgb
- rgba
- speed
- transparent-page-background default: false

### [TIFFRendererConfig](output.html#bitmap-configuration)

- compression
- endianness
- single-strip boolean

