///|
/// Compress uncompressed streams, and streams using older lossless filters, with
/// `/FlateDecode`.
///
/// Metadata streams and encrypted documents are left unchanged. The source
/// document is copied before mutation, matching the rest of the high-level
/// pdflite editing APIs.
pub fn PdfDocument::recompress(
self : PdfDocument,
) -> PdfDocument raise @core.PdfError {
let document = self.copy()
if !document.is_encrypted() {
document.pdf_squeeze_update_stream_objects(stream => {
document.pdf_squeeze_recompress_stream(stream)
})
}
document
}
///|
/// Compatibility wrapper for `PdfDocument::recompress`.
pub fn recompress_pdf(
document : PdfDocument,
) -> PdfDocument raise @core.PdfError {
document.recompress()
}
///|
/// `pdf_`-prefixed compatibility alias for cpdfsqueeze's `recompress_pdf`.
pub fn pdf_recompress_pdf(
document : PdfDocument,
) -> PdfDocument raise @core.PdfError {
recompress_pdf(document)
}
///|
/// Decode supported filter stages from every parsed stream in the document.
///
/// Encrypted documents are left unchanged. Unsupported filters are preserved
/// with their remaining encoded bytes, matching `pdf_decode_stream_until_unknown`.
pub fn PdfDocument::decompress(
self : PdfDocument,
) -> PdfDocument raise @core.PdfError {
let document = self.copy()
if !document.is_encrypted() {
document.pdf_decode_streams_until_unknown()
}
document
}
///|
/// Compatibility wrapper for `PdfDocument::decompress`.
pub fn decompress_pdf(
document : PdfDocument,
) -> PdfDocument raise @core.PdfError {
document.decompress()
}
///|
/// `pdf_`-prefixed compatibility alias for cpdfsqueeze's `decompress_pdf`.
pub fn pdf_decompress_pdf(
document : PdfDocument,
) -> PdfDocument raise @core.PdfError {
decompress_pdf(document)
}
///|
/// Remove duplicate non-page, non-annotation objects, rewrite references to the
/// first matching object, and recompress eligible streams.
///
/// When `page_data` is true, page content streams and referenced Form XObjects
/// are parsed and serialized into normalized uncompressed streams when doing so
/// will not rewrite shared page content streams.
pub fn PdfDocument::squeeze(
self : PdfDocument,
page_data? : Bool = true,
) -> PdfDocument raise @core.PdfError {
let document = self.copy()
let mut previous_count = -1
while previous_count != document.object_count() {
previous_count = document.object_count()
document.pdf_squeeze_prune_duplicate_objects_once()
}
if page_data {
document.pdf_squeeze_page_data()
}
document.recompress()
}
///|
/// Compatibility wrapper for `PdfDocument::squeeze`.
pub fn squeeze(
document : PdfDocument,
page_data? : Bool = true,
) -> PdfDocument raise @core.PdfError {
document.squeeze(page_data~)
}
///|
/// `pdf_`-prefixed compatibility alias for cpdfsqueeze's `squeeze`.
pub fn pdf_squeeze(
document : PdfDocument,
page_data? : Bool = true,
) -> PdfDocument raise @core.PdfError {
squeeze(document, page_data~)
}