当前位置:首页 > Java

java水印如何换行

2026-03-20 20:59:14Java

在Java中实现水印换行的方法

使用Graphics2D绘制多行文本 通过设置字体和计算每行位置,使用drawString逐行绘制水印文本:

java水印如何换行

Graphics2D g2d = (Graphics2D) image.getGraphics();
g2d.setFont(new Font("Arial", Font.BOLD, 30));
g2d.setColor(new Color(255, 255, 255, 128));

String[] lines = {"第一行水印", "第二行水印"};
int yOffset = 50;
for (String line : lines) {
    g2d.drawString(line, 50, yOffset);
    yOffset += g2d.getFontMetrics().getHeight();
}

使用TextLayout处理自动换行 当需要根据宽度自动换行时,可用TextLayout

java水印如何换行

Font font = new Font("Serif", Font.PLAIN, 24);
FontRenderContext frc = g2d.getFontRenderContext();
String text = "这是一个会自动换行的长水印文本";
AttributedString attributedText = new AttributedString(text);
attributedText.addAttribute(TextAttribute.FONT, font);

float maxWidth = 200; // 最大行宽
float y = 50;
for (String line : text.split("\n")) {
    TextLayout layout = new TextLayout(line, font, frc);
    if (layout.getAdvance() > maxWidth) {
        // 处理自动换行逻辑
    }
    layout.draw(g2d, 50, y);
    y += layout.getAscent() + layout.getDescent() + layout.getLeading();
}

使用Apache PDFBox处理PDF水印换行 对于PDF文件的水印换行:

PDDocument document = PDDocument.load(new File("input.pdf"));
PDPage page = document.getPage(0);
PDPageContentStream contentStream = new PDPageContentStream(
    document, page, PDPageContentStream.AppendMode.APPEND, true);

contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12);
contentStream.beginText();
contentStream.newLineAtOffset(100, 700);
contentStream.showText("第一行水印");
contentStream.newLineAtOffset(0, -15); // 下移15单位
contentStream.showText("第二行水印");
contentStream.endText();
contentStream.close();

注意事项

  • 透明效果通过new Color(r,g,b,alpha)设置,alpha值范围0-255
  • 计算文本高度时应包含getAscent() + getDescent() + getLeading()
  • 对于图像处理,完成绘制后需调用g2d.dispose()释放资源

标签: 水印换行
分享给朋友:

相关文章

vue实现水印组件

vue实现水印组件

Vue 水印组件的实现方法 使用Canvas绘制水印 在Vue组件中通过Canvas动态生成水印图案,将其作为背景添加到目标元素上。 <template> <div ref="…

css怎样制作水印

css怎样制作水印

使用伪元素添加水印 通过 ::after 或 ::before 伪元素在目标元素上叠加水印,适合局部区域水印: .watermark { position: relative; } .water…

php实现换行

php实现换行

PHP实现换行的方法 在PHP中实现换行可以通过多种方式,具体取决于输出环境(如HTML页面、纯文本或命令行)。以下是几种常见的方法: 使用HTML换行标签 在HTML输出中,可以使用<br&…

php实现水印

php实现水印

添加水印的基本方法 使用 PHP 的 GD 库或 Imagick 扩展可以为图片添加水印。GD 库是 PHP 默认支持的图像处理库,而 Imagick 提供了更强大的功能。 使用 GD 库添加文字水…

js 实现图片水印

js 实现图片水印

使用Canvas实现图片水印 通过Canvas绘制水印并叠加到原图上,适用于前端动态生成水印场景。 function addWatermark(imageUrl, text, options = {…

js水印实现

js水印实现

基础水印实现 使用Canvas绘制水印并覆盖在页面上是最常见的方法。以下代码创建了一个半透明文字水印: function createWatermark(text) { const canvas…