Skip to content

Commit e771c74

Browse files
committed
Support custom pdf Metadata entries.
1 parent e85ebb2 commit e771c74

File tree

3 files changed

+9
-1
lines changed

3 files changed

+9
-1
lines changed

CHANGELOG.rst

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ next
55
- Fixed support for macos backend on Matplotlib≥3.6.
66
- Fixed compatibility with wheel≥0.41.
77
- Support pdf MaxVersion up to 1.7 (if the underlying cairo supports it).
8+
- Support custom pdf metadata entries.
89
- `set_options` can now be used as a context manager.
910

1011
v0.5 (2022-08-18)

src/_mplcairo.cpp

+5-1
Original file line numberDiff line numberDiff line change
@@ -536,9 +536,13 @@ void GraphicsContextRenderer::_set_metadata(std::optional<py::dict> metadata)
536536
detail::cairo_pdf_surface_set_metadata(
537537
surface, detail::CAIRO_PDF_METADATA_MOD_DATE,
538538
it.second.attr("isoformat")().cast<std::string>().c_str());
539+
} else if (detail::cairo_pdf_surface_set_custom_metadata) {
540+
detail::cairo_pdf_surface_set_custom_metadata(
541+
surface, key.c_str(), it.second.cast<std::string>().c_str());
539542
} else {
540543
py::module::import("warnings").attr("warn")(
541-
"Unsupported PDF metadata entry: " + key);
544+
"cairo_pdf_surface_set_custom_metadata requires cairo>=1.17.6; "
545+
"unsupported PDF metadata entry: " + key);
542546
}
543547
}
544548
break;

src/_util.h

+3
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ extern cairo_surface_t* (*cairo_pdf_surface_create_for_stream)(
5151
cairo_write_func_t, void*, double, double);
5252
extern void (*cairo_pdf_surface_restrict_to_version)(
5353
cairo_surface_t*, cairo_pdf_version_t);
54+
extern void (*cairo_pdf_surface_set_custom_metadata)(
55+
cairo_surface_t*, char const*, char const*);
5456
extern void (*cairo_pdf_surface_set_metadata)(
5557
cairo_surface_t*, cairo_pdf_metadata_t, char const*);
5658
extern void (*cairo_pdf_surface_set_size)(cairo_surface_t*, double, double);
@@ -81,6 +83,7 @@ extern void (*cairo_svg_surface_restrict_to_version)(
8183
_(cairo_pdf_get_versions) \
8284
_(cairo_pdf_surface_create_for_stream) \
8385
_(cairo_pdf_surface_restrict_to_version) \
86+
_(cairo_pdf_surface_set_custom_metadata) \
8487
_(cairo_pdf_surface_set_metadata) \
8588
_(cairo_pdf_surface_set_size) \
8689
_(cairo_ps_get_levels) \

0 commit comments

Comments
 (0)