springboot给本地pdf文件加上中文水印详细代码
时间: 2024-10-19 11:05:20 浏览: 15
在Spring Boot项目中添加PDF文件中文水印,通常需要用到第三方库如iText、Apache PDFBox等。以下是一个简单的示例,假设我们已经有了一个PDF文档,并希望通过Spring MVC控制器将中文水印添加到每一页:
首先,确保已添加iText的相关依赖。如果你使用的是Maven,可以在pom.xml中添加以下依赖:
```xml
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.13</version>
</dependency>
```
然后创建一个服务类,比如WatermarkService,用于处理水印操作:
```java
import com.itextpdf.text.*;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;
@Service
public class WatermarkService {
public void addWatermarkToPdf(String inputFilePath, String outputFilePath, String watermarkText) {
PdfReader reader = new PdfReader(inputFilePath);
try (PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(outputFilePath))) {
Font font = new Font(Font.FontFamily.TIMES_ROMAN, 14, Font.BOLD); // 设置字体
ColumnText.showTextAligned(stamper.getUnderContent(1), Element.ALIGN_CENTER, new Phrase(watermarkText, font), 0, -60, 0);
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
在这个例子中,`addWatermarkToPdf`方法接收输入PDF路径、输出PDF路径以及要添加的水印文本。它会打开输入PDF,创建一个新的PdfStamper,在PDF的第一页中心位置显示水印。
最后,在Spring MVC控制器中,你可以像这样调用这个服务:
```java
@RestController
@RequestMapping("/watermark")
public class WatermarkController {
@Autowired
private WatermarkService watermarkService;
@PostMapping("/apply")
public ResponseEntity<?> applyWatermark(@RequestParam("inputFile")ultipartFile inputFile,
@RequestParam("outputFile")String outputFile,
@RequestParam("watermarkText")String watermarkText) {
try {
watermarkService.addWatermarkToPdf(inputFile.getFile(), outputFile, watermarkText);
return ResponseEntity.ok().build();
} catch (IOException e) {
return ResponseEntity.badRequest().body(e.getMessage());
}
}
}
```
这个控制器接受POST请求,从上传的multipart file中获取PDF,应用水印并返回输出结果。
阅读全文