PDF格式分析(八十五)——水印注释(Watermark)

        水印注释(PDF1.6及其以上版本),水印可表现为文字、图片、图像,水印大小固定,显示在页面位置固定,而不论打印页的尺寸(注意打印时,可能打印不全哟)。需要注意的是:水印注释没有弹出窗口。

        水印注释字典条目如下表:

条目 类型 说明
Subtype name (必填)本词典所描述的注释类型;必须为Watermark。
FixedPrint dictionary (可选)固定印刷词典(下表所示),指定如何相对于目标介质的尺寸绘制此注释。如果该条目不存在,则在绘制注释时应不特别考虑目标介质的尺寸。
如果在绘图时不知道目标介质的尺寸,则应根据页面的 MediaBox条目指定的尺寸绘图。

        固定印刷词典中的词条如下表:

条目 类型 说明
Type name (必填)必须是FixedPrint。
Matrix array (可选)该矩阵用来缩放或移动注释的矩形。
默认值:单位矩阵【1 0 0 1 0 0】
H number (可选)横向缩放的比例,以目标媒体宽度的百分比表示(如果未知
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
可以使用libharu库来实现为PDF文件添加文本水印类型的注释。以下是一个简单的示例代码: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include <time.h> #include <stdarg.h> #include <ctype.h> #include <setjmp.h> #include <assert.h> #include "hpdf.h" int main(int argc, char **argv) { HPDF_Doc pdf; HPDF_Page page; HPDF_Font font; HPDF_REAL width, height; HPDF_Point pos; const char *text = "Watermark Text"; const char *filename = "output.pdf"; const char *owner_password = NULL; const char *user_password = NULL; HPDF_EncryptMode enc_mode = HPDF_ENCRYPT_R2; HPDF_STATUS status; pdf = HPDF_New(NULL, NULL); if (!pdf) { printf("error: cannot create PDF object\n"); return 1; } /* set encryption mode */ status = HPDF_SetEncryptionMode(pdf, enc_mode, 128); if (status != HPDF_OK) { printf("error: cannot set encryption mode\n"); HPDF_Free(pdf); return 1; } /* set passwords */ status = HPDF_SetPassword(pdf, owner_password, user_password); if (status != HPDF_OK) { printf("error: cannot set passwords\n"); HPDF_Free(pdf); return 1; } /* add a new page */ page = HPDF_AddPage(pdf); if (!page) { printf("error: cannot add new page\n"); HPDF_Free(pdf); return 1; } /* set font and font size */ font = HPDF_GetFont(pdf, "Helvetica", NULL); HPDF_Page_SetFontAndSize(page, font, 24); /* get text width and height */ width = HPDF_Page_TextWidth(page, text); height = HPDF_Page_GetHeight(page); /* set text position */ pos.x = (HPDF_Page_GetWidth(page) - width) / 2; pos.y = (height - 24) / 2; /* set text color */ HPDF_Page_SetRGBFill(page, 0.5, 0.5, 0.5); /* draw text */ HPDF_Page_BeginText(page); HPDF_Page_TextOut(page, pos.x, pos.y, text); HPDF_Page_EndText(page); /* save the document to a file */ status = HPDF_SaveToFile(pdf, filename); if (status != HPDF_OK) { printf("error: cannot save PDF file\n"); HPDF_Free(pdf); return 1; } /* clean up */ HPDF_Free(pdf); return 0; } ``` 这个示例代码使用libharu库创建了一个PDF文档,并在其中添加了一个文本水印。你可以根据自己的需求修改文本内容、字体、字号、颜色、位置等参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋风之刀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值