PDF-Make
view release on metacpan or search on metacpan
xs/redact.xs view on Meta::CPAN
MODULE = PDF::Make PACKAGE = PDF::Make::Redaction
PROTOTYPES: ENABLE
void
mark(class, page, ...)
char *class
pdfmake_page_t *page
PREINIT:
double x0 = 0, y0 = 0, x1 = 0, y1 = 0;
pdfmake_redact_opts_t opts;
pdfmake_redact_t *r;
int i;
CODE:
PERL_UNUSED_VAR(class);
memset(&opts, 0, sizeof(opts));
opts.overlay_font_size = 10;
for (i = 2; i < items - 1; i += 2) {
const char *key = SvPV_nolen(ST(i));
SV *val = ST(i + 1);
if (strEQ(key, "x0")) x0 = SvNV(val);
else if (strEQ(key, "y0")) y0 = SvNV(val);
else if (strEQ(key, "x1")) x1 = SvNV(val);
else if (strEQ(key, "y1")) y1 = SvNV(val);
else if (strEQ(key, "rect") && SvROK(val) && SvTYPE(SvRV(val)) == SVt_PVAV) {
AV *av = (AV *)SvRV(val);
SV **e;
if ((e = av_fetch(av, 0, 0))) x0 = SvNV(*e);
if ((e = av_fetch(av, 1, 0))) y0 = SvNV(*e);
if ((e = av_fetch(av, 2, 0))) x1 = SvNV(*e);
if ((e = av_fetch(av, 3, 0))) y1 = SvNV(*e);
}
else if (strEQ(key, "overlay_color") && SvROK(val) && SvTYPE(SvRV(val)) == SVt_PVAV) {
AV *av = (AV *)SvRV(val);
SV **e;
if ((e = av_fetch(av, 0, 0))) opts.overlay_color[0] = SvNV(*e);
if ((e = av_fetch(av, 1, 0))) opts.overlay_color[1] = SvNV(*e);
if ((e = av_fetch(av, 2, 0))) opts.overlay_color[2] = SvNV(*e);
}
else if (strEQ(key, "overlay_text")) opts.overlay_text = SvPV_nolen(val);
else if (strEQ(key, "overlay_font_size")) opts.overlay_font_size = SvNV(val);
}
r = pdfmake_page_mark_redaction(page, x0, y0, x1, y1, &opts);
if (!r)
croak("PDF::Make::Redaction: mark failed");
void
apply_page(class, page)
char *class
pdfmake_page_t *page
CODE:
PERL_UNUSED_VAR(class);
if (pdfmake_page_apply_redactions(page) != PDFMAKE_OK)
croak("PDF::Make::Redaction: apply failed");
void
apply_doc(class, doc)
char *class
pdfmake_doc_t *doc
CODE:
PERL_UNUSED_VAR(class);
if (pdfmake_doc_apply_redactions(doc) != PDFMAKE_OK)
croak("PDF::Make::Redaction: apply failed");
void
sanitize(class, doc)
char *class
pdfmake_doc_t *doc
CODE:
PERL_UNUSED_VAR(class);
if (pdfmake_doc_sanitize_metadata(doc) != PDFMAKE_OK)
croak("PDF::Make::Redaction: sanitize failed");
UV
count(class, page)
char *class
pdfmake_page_t *page
CODE:
PERL_UNUSED_VAR(class);
RETVAL = pdfmake_page_redaction_count(page);
OUTPUT:
RETVAL
SV *
rewrite_stream(class, content_sv, rects_sv)
char *class
SV *content_sv
SV *rects_sv
PREINIT:
STRLEN in_len;
const uint8_t *in_bytes;
AV *rects_av;
SSize_t n_rects;
pdfmake_redact_t *rects = NULL;
pdfmake_buf_t out;
pdfmake_err_t err;
CODE:
PERL_UNUSED_VAR(class);
in_bytes = (const uint8_t *)SvPVbyte(content_sv, in_len);
( run in 0.758 second using v1.01-cache-2.11-cpan-600a1bdf6e4 )