使用C++为PDF添加水印
水印是一个半透明的图像,通常包含一个徽标或印章,用于识别谁创建了该文档或图像。
**Aspose.PDF for C++**允许使用Artifact类向PDF文档添加水印。请查看本文以解决您的任务。
使用Adobe Acrobat创建的水印被称为工件(如PDF规范的14.8.2.2真实内容和工件中所述)。为了处理工件,Aspose.PDF有两个类:Artifact和ArtifactCollection。
为了获取特定页面上的所有工件,Page类拥有Artifacts属性。 这个主题解释了如何处理PDF文件中的工件。
处理工件
Artifact 类包含以下属性:
Artifact.Type – 获取工件类型(支持 Artifact.ArtifactType 枚举的值,其中包括 Background, Layout, Page, Pagination 和 Undefined)。 Artifact.Subtype – 获取工件子类型(支持 Artifact.ArtifactSubtype 枚举的值,其中包括 Background, Footer, Header, Undefined, Watermark)。
Artifact.Contents – 获取工件内部操作符的集合。其支持的类型是 System.Collections.ICollection。 Artifact.Form – 获取工件的 XForm(如果使用了 XForm)。水印、页眉和页脚工件包含显示所有工件内容的 XForm。
Artifact.Image – 获取工件的图像(如果图像存在,否则为 null)。Artifact.Text – 获取工件的文本。
Artifact.Rectangle – 获取工件在页面上的位置。
Artifact.Rotation – 获取工件的旋转角度(以度为单位,正值表示逆时针旋转)。
Artifact.Opacity – 获取工件的不透明度。可能的值范围是0到1,其中1是完全不透明。
编程示例:如何在PDF文件上添加水印
以下代码片段展示了如何使用C++在PDF文件的第一页获取每个水印。
void GettingWatermarks() {
String _dataDir("C:\\Samples\\");
String inputFileName("watermark.pdf");
String outputFileName("watermark_out.pdf");
auto document = MakeObject<Document>(_dataDir + inputFileName);
auto artifact = MakeObject<WatermarkArtifact>();
auto textState = MakeObject<TextState>();
textState->set_FontSize(72);
textState->set_ForegroundColor(Color::get_Blue());
textState->set_Font(FontRepository::FindFont(u"Courier"));
artifact->SetTextAndState(u"WATERMARK", textState);
artifact->set_ArtifactHorizontalAlignment (HorizontalAlignment::Center);
artifact->set_ArtifactVerticalAlignment (VerticalAlignment::Center);
artifact->set_Rotation(45);
artifact->set_Opacity(0.5);
artifact->set_IsBackground(true);
document->get_Pages()->idx_get(1)->get_Artifacts()->Add(artifact);
document->Save(_dataDir + outputFileName);
}