From 8fc19912a4898ca6993a2acf92116e621d140f7a Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Thu, 15 Mar 2018 22:42:15 +0100 Subject: Create appearance streams for annotations. Now handles more annotation types, and does not use the pdf-write device. Handles many of the usual annotation properties, such as border width, color, interior color, line ending styles. * Ink * Highlight, Underline, Strike-Out, Squiggly * Line (with arrow-heads) * Polygon * PolyLine * Square * Circle * Caret * Text (needs better icons) * FileAttachment (needs better icons) * Sound (needs better icons) * Stamp * FreeText Partially complete: * Widget (treats everything like a plain text field) Not done, but on the to-do list: * /BS style (solid/dashed/bevel/inset/underline) * /BS dash pattern Not done and not on the list: * Movie * Screen * Printer's Mark * Trap Network * Watermark * /Border corner radii (ignored by acrobat) * /BE cloudy border effect --- include/mupdf/pdf.h | 1 - include/mupdf/pdf/annot.h | 11 ++++++----- include/mupdf/pdf/appearance.h | 43 ------------------------------------------ include/mupdf/pdf/name-table.h | 16 ++++++++++++++++ include/mupdf/pdf/object.h | 1 + 5 files changed, 23 insertions(+), 49 deletions(-) delete mode 100644 include/mupdf/pdf/appearance.h (limited to 'include') diff --git a/include/mupdf/pdf.h b/include/mupdf/pdf.h index 1458d477..5be1e73f 100644 --- a/include/mupdf/pdf.h +++ b/include/mupdf/pdf.h @@ -22,7 +22,6 @@ extern "C" { #include "mupdf/pdf/annot.h" #include "mupdf/pdf/field.h" #include "mupdf/pdf/widget.h" -#include "mupdf/pdf/appearance.h" #include "mupdf/pdf/event.h" #include "mupdf/pdf/javascript.h" diff --git a/include/mupdf/pdf/annot.h b/include/mupdf/pdf/annot.h index 94a8f33f..e9b91da9 100644 --- a/include/mupdf/pdf/annot.h +++ b/include/mupdf/pdf/annot.h @@ -249,11 +249,10 @@ int64_t pdf_annot_modification_date(fz_context *ctx, pdf_annot *annot); */ void pdf_set_annot_modification_date(fz_context *ctx, pdf_annot *annot, int64_t time); -/* - pdf_set_free_text_details: set the position, text, font and color for a free text annotation. - Only base 14 fonts are supported and are specified by name. -*/ -void pdf_set_free_text_details(fz_context *ctx, pdf_annot *annot, fz_point *pos, char *text, char *font_name, float font_size, float color[3]); +void pdf_parse_default_appearance(fz_context *ctx, const char *da, const char **font, float *size, float color[3]); +void pdf_print_default_appearance(fz_context *ctx, char *buf, int nbuf, const char *font, float size, const float color[3]); +void pdf_annot_default_appearance(fz_context *ctx, pdf_annot *annot, const char **font, float *size, float color[3]); +void pdf_set_annot_default_appearance(fz_context *ctx, pdf_annot *annot, const char *font, float size, const float color[3]); /* pdf_new_annot: Internal function for creating a new pdf annotation. @@ -263,4 +262,6 @@ pdf_annot *pdf_new_annot(fz_context *ctx, pdf_page *page, pdf_obj *obj); void pdf_update_appearance(fz_context *ctx, pdf_annot *annot); void pdf_dirty_annot(fz_context *ctx, pdf_annot *annot); +void pdf_update_signature_appearance(fz_context *ctx, pdf_annot *annot, const char *name, const char *text, const char *date); + #endif diff --git a/include/mupdf/pdf/appearance.h b/include/mupdf/pdf/appearance.h deleted file mode 100644 index 7aa5058a..00000000 --- a/include/mupdf/pdf/appearance.h +++ /dev/null @@ -1,43 +0,0 @@ -#ifndef MUPDF_PDF_APPEARANCE_H -#define MUPDF_PDF_APPEARANCE_H - -typedef struct pdf_da_info_s -{ - char *font_name; - int font_size; - float col[4]; - int col_size; -} pdf_da_info; - -void pdf_da_info_fin(fz_context *ctx, pdf_da_info *di); -void pdf_parse_da(fz_context *ctx, char *da, pdf_da_info *di); -void pdf_fzbuf_print_da(fz_context *ctx, fz_buffer *fzbuf, pdf_da_info *di); - -void pdf_update_text_appearance(fz_context *ctx, pdf_document *doc, pdf_obj *obj, char *eventValue); -void pdf_update_combobox_appearance(fz_context *ctx, pdf_document *doc, pdf_obj *obj); -void pdf_update_listbox_appearance(fz_context *ctx, pdf_document *doc, pdf_obj *obj); -void pdf_update_pushbutton_appearance(fz_context *ctx, pdf_document *doc, pdf_obj *obj); -void pdf_update_text_markup_appearance(fz_context *ctx, pdf_document *doc, pdf_annot *annot, enum pdf_annot_type type); -void pdf_update_ink_appearance(fz_context *ctx, pdf_document *doc, pdf_annot *annot); -void pdf_update_text_annot_appearance(fz_context *ctx, pdf_document *doc, pdf_annot *annot); -/* - pdf_update_free_text_annot_appearance: update the appearance stream for a free text - annotation, basing it on the annotation's rectangle and contents. -*/ -void pdf_update_free_text_annot_appearance(fz_context *ctx, pdf_document *doc, pdf_annot *annot); - -/* - pdf_set_annot_appearance: update the appearance of an annotation based - on a display list. -*/ -void pdf_set_annot_appearance(fz_context *ctx, pdf_document *doc, pdf_annot *annot, fz_rect *rect, fz_display_list *disp_list); - -/* - fz_set_markup_appearance: set the appearance stream of a text markup annotations, basing it on - its QuadPoints array -*/ -void pdf_set_markup_appearance(fz_context *ctx, pdf_document *doc, pdf_annot *annot, float color[3], float alpha, float line_thickness, float line_height); - -void pdf_set_signature_appearance(fz_context *ctx, pdf_document *doc, pdf_annot *annot, char *name, const char *dn, char *date); - -#endif diff --git a/include/mupdf/pdf/name-table.h b/include/mupdf/pdf/name-table.h index 2db15827..cffd08cf 100644 --- a/include/mupdf/pdf/name-table.h +++ b/include/mupdf/pdf/name-table.h @@ -20,7 +20,9 @@ PDF_MAKE_NAME("Alternate", Alternate) PDF_MAKE_NAME("Annot", Annot) PDF_MAKE_NAME("Annots", Annots) PDF_MAKE_NAME("AnyOff", AnyOff) +PDF_MAKE_NAME("Approved", Approved) PDF_MAKE_NAME("ArtBox", ArtBox) +PDF_MAKE_NAME("AsIs", AsIs) PDF_MAKE_NAME("Ascent", Ascent) PDF_MAKE_NAME("B", B) PDF_MAKE_NAME("BBox", BBox) @@ -81,6 +83,7 @@ PDF_MAKE_NAME("ColorTransform", ColorTransform) PDF_MAKE_NAME("Colorants", Colorants) PDF_MAKE_NAME("Colors", Colors) PDF_MAKE_NAME("Columns", Columns) +PDF_MAKE_NAME("Confidential", Confidential) PDF_MAKE_NAME("Configs", Configs) PDF_MAKE_NAME("Contents", Contents) PDF_MAKE_NAME("Coords", Coords) @@ -109,6 +112,7 @@ PDF_MAKE_NAME("Default", Default) PDF_MAKE_NAME("DefaultCMYK", DefaultCMYK) PDF_MAKE_NAME("DefaultGray", DefaultGray) PDF_MAKE_NAME("DefaultRGB", DefaultRGB) +PDF_MAKE_NAME("Departmental", Departmental) PDF_MAKE_NAME("Desc", Desc) PDF_MAKE_NAME("DescendantFonts", DescendantFonts) PDF_MAKE_NAME("Descent", Descent) @@ -126,6 +130,7 @@ PDF_MAKE_NAME("Differences", Differences) PDF_MAKE_NAME("Dissolve", Dissolve) PDF_MAKE_NAME("Dm", Dm) PDF_MAKE_NAME("Domain", Domain) +PDF_MAKE_NAME("Draft", Draft) PDF_MAKE_NAME("Dur", Dur) PDF_MAKE_NAME("E", E) PDF_MAKE_NAME("EF", EF) @@ -139,6 +144,8 @@ PDF_MAKE_NAME("EncryptMetadata", EncryptMetadata) PDF_MAKE_NAME("EndOfBlock", EndOfBlock) PDF_MAKE_NAME("EndOfLine", EndOfLine) PDF_MAKE_NAME("Exclude", Exclude) +PDF_MAKE_NAME("Experimental", Experimental) +PDF_MAKE_NAME("Expired", Expired) PDF_MAKE_NAME("ExtGState", ExtGState) PDF_MAKE_NAME("Extend", Extend) PDF_MAKE_NAME("F", F) @@ -152,6 +159,7 @@ PDF_MAKE_NAME("Fields", Fields) PDF_MAKE_NAME("FileAttachment", FileAttachment) PDF_MAKE_NAME("Filespec", Filespec) PDF_MAKE_NAME("Filter", Filter) +PDF_MAKE_NAME("Final", Final) PDF_MAKE_NAME("First", First) PDF_MAKE_NAME("FirstChar", FirstChar) PDF_MAKE_NAME("FirstPage", FirstPage) @@ -174,6 +182,8 @@ PDF_MAKE_NAME("FontFile2", FontFile2) PDF_MAKE_NAME("FontFile3", FontFile3) PDF_MAKE_NAME("FontMatrix", FontMatrix) PDF_MAKE_NAME("FontName", FontName) +PDF_MAKE_NAME("ForComment", ForComment) +PDF_MAKE_NAME("ForPublicRelease", ForPublicRelease) PDF_MAKE_NAME("Form", Form) PDF_MAKE_NAME("FormType", FormType) PDF_MAKE_NAME("FreeText", FreeText) @@ -188,6 +198,7 @@ PDF_MAKE_NAME("GoToR", GoToR) PDF_MAKE_NAME("Group", Group) PDF_MAKE_NAME("H", H) PDF_MAKE_NAME("Height", Height) +PDF_MAKE_NAME("Helv", Helv) PDF_MAKE_NAME("Highlight", Highlight) PDF_MAKE_NAME("I", I) PDF_MAKE_NAME("IC", IC) @@ -253,6 +264,7 @@ PDF_MAKE_NAME("Metadata", Metadata) PDF_MAKE_NAME("MissingWidth", MissingWidth) PDF_MAKE_NAME("ModDate", ModDate) PDF_MAKE_NAME("Movie", Movie) +PDF_MAKE_NAME("Multiply", Multiply) PDF_MAKE_NAME("N", N) PDF_MAKE_NAME("Name", Name) PDF_MAKE_NAME("Named", Named) @@ -262,6 +274,8 @@ PDF_MAKE_NAME("Next", Next) PDF_MAKE_NAME("NextPage", NextPage) PDF_MAKE_NAME("None", None) PDF_MAKE_NAME("Normal", Normal) +PDF_MAKE_NAME("NotApproved", NotApproved) +PDF_MAKE_NAME("NotForPublicRelease", NotForPublicRelease) PDF_MAKE_NAME("O", O) PDF_MAKE_NAME("OC", OC) PDF_MAKE_NAME("OCG", OCG) @@ -360,8 +374,10 @@ PDF_MAKE_NAME("TR", TR) PDF_MAKE_NAME("TR2", TR2) PDF_MAKE_NAME("Text", Text) PDF_MAKE_NAME("TilingType", TilingType) +PDF_MAKE_NAME("Times", Times) PDF_MAKE_NAME("Title", Title) PDF_MAKE_NAME("ToUnicode", ToUnicode) +PDF_MAKE_NAME("TopSecret", TopSecret) PDF_MAKE_NAME("Trans", Trans) PDF_MAKE_NAME("Transparency", Transparency) PDF_MAKE_NAME("TrapNet", TrapNet) diff --git a/include/mupdf/pdf/object.h b/include/mupdf/pdf/object.h index b188e5aa..4bb368ea 100644 --- a/include/mupdf/pdf/object.h +++ b/include/mupdf/pdf/object.h @@ -105,6 +105,7 @@ pdf_obj *pdf_dict_getl(fz_context *ctx, pdf_obj *dict, ...); pdf_obj *pdf_dict_geta(fz_context *ctx, pdf_obj *dict, pdf_obj *key, pdf_obj *abbrev); pdf_obj *pdf_dict_gets(fz_context *ctx, pdf_obj *dict, const char *key); pdf_obj *pdf_dict_getsa(fz_context *ctx, pdf_obj *dict, const char *key, const char *abbrev); +pdf_obj *pdf_dict_get_inheritable(fz_context *ctx, pdf_obj *dict, pdf_obj *key); void pdf_dict_put(fz_context *ctx, pdf_obj *dict, pdf_obj *key, pdf_obj *val); void pdf_dict_put_drop(fz_context *ctx, pdf_obj *dict, pdf_obj *key, pdf_obj *val); void pdf_dict_get_put_drop(fz_context *ctx, pdf_obj *dict, pdf_obj *key, pdf_obj *val, pdf_obj **old_val); -- cgit v1.2.3