///|
fn pdf_portfolio_stream(
entry : @portfolio.PdfPortfolioEntry,
mod_date : @core.PdfBytes,
) -> @syntax.PdfObject {
@syntax.pdf_stream(
PdfDictionary([
(
pdf_portfolio_params_key(),
PdfDictionary([
(pdf_portfolio_mod_date_key(), PdfString(mod_date)),
(pdf_portfolio_size_key(), PdfInteger(entry.data.length())),
]),
),
(pdf_portfolio_length_key(), PdfInteger(entry.data.length())),
]),
StreamGot(entry.data),
)
}
///|
fn PdfDocument::pdf_portfolio_file_spec(
self : PdfDocument,
entry : @portfolio.PdfPortfolioEntry,
mod_date : @core.PdfBytes,
) -> @syntax.PdfObject {
let basename = pdf_portfolio_basename(entry.filename)
let basename_bytes = @utf8.encode(basename)
let contents = self.add_object(pdf_portfolio_stream(entry, mod_date))
PdfDictionary([
(pdf_portfolio_type_key(), PdfNameObject(pdf_portfolio_file_spec())),
(
pdf_portfolio_desc_key(),
PdfString(@utf8.encode(pdf_portfolio_description(entry, basename))),
),
(pdf_portfolio_f_key(), PdfString(basename_bytes)),
(pdf_portfolio_uf_key(), PdfString(basename_bytes)),
(
pdf_portfolio_af_relationship_key(),
PdfNameObject(pdf_portfolio_relationship_name(entry.relationship)),
),
(
pdf_portfolio_ef_key(),
PdfDictionary([
(pdf_portfolio_f_key(), PdfIndirect(contents)),
(pdf_portfolio_uf_key(), PdfIndirect(contents)),
]),
),
])
}
///|
fn PdfDocument::pdf_portfolio_name_tree_entries(
self : PdfDocument,
entries : ArrayView[@portfolio.PdfPortfolioEntry],
mod_date : @core.PdfBytes,
) -> Array[(@core.PdfBytes, @syntax.PdfObject)] {
[
for index, entry in entries => {
let key = @utf8.encode(index.to_string() + "/" + entry.filename)
let file_spec = self.add_object(
self.pdf_portfolio_file_spec(entry, mod_date),
)
(key, PdfIndirect(file_spec))
}
]
}
///|
fn pdf_portfolio_collection() -> @syntax.PdfObject {
PdfDictionary([
(pdf_portfolio_view_key(), PdfNameObject(pdf_portfolio_table_view())),
])
}