当前位置:首页 > 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中实现文本换行可以通过多种方式实现,具体取决于使用场景和需求。 使用CSS样式控制 通过CSS的white-space属性可以控制文本的换行行为: .text-cont…

vue页面实现水印

vue页面实现水印

实现Vue页面水印的方法 使用CSS背景图实现水印 在Vue组件中通过CSS添加重复水印背景,适合静态水印。 <template> <div class="watermark-…

vue实现canvas照片水印

vue实现canvas照片水印

实现思路 在Vue中实现Canvas照片水印,核心是通过Canvas API绘制图片和水印文字,最终导出为新的图片。主要分为加载图片、绘制水印、导出结果三个关键步骤。 基础实现代码 以下是一个完整的…

如何实现一个react水印组件

如何实现一个react水印组件

实现React水印组件的方法 使用Canvas绘制水印 通过Canvas动态生成水印图案,可以灵活控制水印的样式和位置。 import React, { useEffect, useRef…

css制作水印

css制作水印

使用CSS制作水印 通过CSS可以轻松为网页或图片添加水印效果,以下是几种常见方法: 使用伪元素添加文字水印 通过::after或::before伪元素在目标元素上叠加半透明文字: .wa…

css怎样制作水印

css怎样制作水印

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