summaryrefslogtreecommitdiff
path: root/include/mupdf/pdf
diff options
context:
space:
mode:
authorTor Andersson <tor.andersson@artifex.com>2018-03-15 22:42:15 +0100
committerTor Andersson <tor.andersson@artifex.com>2018-06-22 17:05:04 +0200
commit8fc19912a4898ca6993a2acf92116e621d140f7a (patch)
tree5f85f35767de47bcd7b7a3e32ce4fb867f7735db /include/mupdf/pdf
parent7d2407571d8c8851b67af5ddd0429467c7048b16 (diff)
downloadmupdf-8fc19912a4898ca6993a2acf92116e621d140f7a.tar.xz
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
Diffstat (limited to 'include/mupdf/pdf')
-rw-r--r--include/mupdf/pdf/annot.h11
-rw-r--r--include/mupdf/pdf/appearance.h43
-rw-r--r--include/mupdf/pdf/name-table.h16
-rw-r--r--include/mupdf/pdf/object.h1
4 files changed, 23 insertions, 48 deletions
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);