在PDF中以编程方式添加文本水印
Contents
[
Hide
]
使用Java添加文本水印
Aspose.PDF for PHP via Java 提供了 TextStamp 类以在PDF文件中添加文本水印。 TextStamp 类提供了必要的方法来指定戳记对象的字体大小、字体样式和字体颜色等。为了添加文本戳记,首先需要使用所需的方法创建一个 Document 对象和一个 TextStamp 对象。之后,您可以调用 Page 类的 addStamp(..) 方法将戳记添加到 PDF 文档中。
下面的代码片段展示了如何在 PDF 文件中添加文本戳记。
// 打开文档
$document = new Document($inputFile);
$pages = $document->getPages();
$colors = new Color();
// 创建文本戳记
$textStamp = new TextStamp("Sample Stamp");
// 设置戳记是否为背景
$textStamp->setBackground(true);
// 设置起始坐标
$textStamp->setXIndent(100);
$textStamp->setYIndent(100);
// 旋转戳记
$textStamp->setRotate((new Rotation())->On90);
// 设置文本属性
$fontRepository = new FontRepository();
$fontStyles = new FontStyles();
$textStamp->getTextState()->setFont($fontRepository->findFont("Arial"));
$textStamp->getTextState()->setFontSize(14);
$textStamp->getTextState()->setFontStyle($fontStyles->Bold | $fontStyles->Italic);
$textStamp->getTextState()->setForegroundColor($colors->getGreen());
// 将戳记添加到特定页面
$pages->get_Item(1)->addStamp($textStamp);
// 保存输出文档
$document->save($outputFile);
$document->close();
定义 TextStamp 对象的对齐方式
在 PDF 文档中添加水印是经常需要的功能之一,Aspose.PDF for PHP via Java 完全有能力添加图像和文本水印。TextStamp 类提供了在 PDF 文件上添加文本印章的功能。最近有一个需求,需要支持在使用 TextStamp 对象时指定文本对齐的功能。因此,为了满足这个需求,我们在 TextStamp 类中引入了 setTextAlignment(..) 方法。通过使用此方法,您可以指定水平文本对齐方式。
以下代码片段展示了如何加载现有的 PDF 文档并在其上添加 TextStamp 的示例。
// 打开文档
$document = new Document($inputFile);
$pages = $document->getPages();
$colors = new Color();
// 使用示例字符串实例化 FormattedText 对象
$text = new FormattedText("This");
// 向 FormattedText 添加新文本行
$text->addNewLineText("is sample");
$text->addNewLineText("Center Aligned");
$text->addNewLineText("TextStamp");
$text->addNewLineText("Object");
// 创建文本印章
$textStamp = new TextStamp($text);
// 将文本印章的水平对齐方式指定为居中对齐
$textStamp->setHorizontalAlignment((new HorizontalAlignment)->getCenter());
// 将文本印章的垂直对齐方式指定为居中对齐
$textStamp->setVerticalAlignment((new VerticalAlignment())->getCenter);
// 将 TextStamp 的文本水平对齐方式指定为居中对齐
$textStamp->setTextAlignment((new HorizontalAlignment)->getCenter());
// 设置印章对象的上边距
$textStamp->setTopMargin(20);
// 将印章添加到特定页面
$pages->get_Item(1)->addStamp($textStamp);
// 保存输出文档
$document->save($outputFile);
$document->close();
在 PDF 文件中将填充描边文本作为印章
我们已经实现了在文本添加和编辑场景中设置渲染模式。要渲染描边文本,请创建 TextState 对象,并将 RenderingMode 设置为 TextRenderingMode.StrokeText,同时为 StrokingColor 属性选择颜色。之后,使用 bindTextState() 方法将 TextState 绑定到印章。
以下代码片段演示了如何添加填充描边文本:
// 创建 TextState 对象以传输高级属性
$ts = new TextState();
// 设置描边颜色
$ts->setStrokingColor((new Color())->getGray());
// 设置文本渲染模式
$ts->setRenderingMode(TextRenderingMode::$StrokeText);
// 加载输入 PDF 文档
$fileStamp = new PdfFileStamp(new Document($inputFile));
$stamp = new Stamp();
$stamp->bindLogo(
new FormattedText("PAID IN FULL",
(new Color())->getGray(), "Arial",
facades_EncodingType::$WinAnsi,
true, 78));
// 绑定 TextState
$stamp->bindTextState($ts);
// 设置 X,Y 原点
$stamp->setOrigin(100, 100);
$stamp->setOpacity (5);
$stamp->setBlendingSpace(BlendingColorSpace::$DeviceRGB);
$stamp->setRotation (45.0);
$stamp->setBackground(false);
// 添加印章
$fileStamp->addStamp($stamp);
$fileStamp->save($outputFile);
$fileStamp->close();