fixed wrong filename generation through stamp tool #757

This commit is contained in:
mannam 2024-02-09 19:35:34 +05:30
parent 729c8006d2
commit 9da88b7652

View file

@ -48,13 +48,13 @@ public class StampController {
@Operation(
summary = "Add stamp to a PDF file",
description =
"This endpoint adds a stamp to a given PDF file. Users can specify the watermark type (text or image), rotation, opacity, width spacer, and height spacer. Input:PDF Output:PDF Type:SISO")
"This endpoint adds a stamp to a given PDF file. Users can specify the stamp type (text or image), rotation, opacity, width spacer, and height spacer. Input:PDF Output:PDF Type:SISO")
public ResponseEntity<byte[]> addStamp(@ModelAttribute AddStampRequest request)
throws IOException, Exception {
MultipartFile pdfFile = request.getFileInput();
String watermarkType = request.getStampType();
String watermarkText = request.getStampText();
MultipartFile watermarkImage = request.getStampImage();
String stampType = request.getStampType();
String stampText = request.getStampText();
MultipartFile stampImage = request.getStampImage();
String alphabet = request.getAlphabet();
float fontSize = request.getFontSize();
float rotation = request.getRotation();
@ -99,10 +99,10 @@ public class StampController {
graphicsState.setNonStrokingAlphaConstant(opacity);
contentStream.setGraphicsStateParameters(graphicsState);
if ("text".equalsIgnoreCase(watermarkType)) {
if ("text".equalsIgnoreCase(stampType)) {
addTextStamp(
contentStream,
watermarkText,
stampText,
document,
page,
rotation,
@ -113,10 +113,10 @@ public class StampController {
overrideY,
margin,
customColor);
} else if ("image".equalsIgnoreCase(watermarkType)) {
} else if ("image".equalsIgnoreCase(stampType)) {
addImageStamp(
contentStream,
watermarkImage,
stampImage,
document,
page,
rotation,
@ -134,12 +134,12 @@ public class StampController {
document,
Filenames.toSimpleFileName(pdfFile.getOriginalFilename())
.replaceFirst("[.][^.]+$", "")
+ "_watermarked.pdf");
+ "_stamped.pdf");
}
private void addTextStamp(
PDPageContentStream contentStream,
String watermarkText,
String stampText,
PDDocument document,
PDPage page,
float rotation,
@ -208,9 +208,7 @@ public class StampController {
x = overrideX;
y = overrideY;
} else {
x =
calculatePositionX(
pageSize, position, fontSize, font, fontSize, watermarkText, margin);
x = calculatePositionX(pageSize, position, fontSize, font, fontSize, stampText, margin);
y =
calculatePositionY(
pageSize, position, calculateTextCapHeight(font, fontSize), margin);
@ -218,13 +216,13 @@ public class StampController {
contentStream.beginText();
contentStream.setTextMatrix(Matrix.getRotateInstance(Math.toRadians(rotation), x, y));
contentStream.showText(watermarkText);
contentStream.showText(stampText);
contentStream.endText();
}
private void addImageStamp(
PDPageContentStream contentStream,
MultipartFile watermarkImage,
MultipartFile stampImage,
PDDocument document,
PDPage page,
float rotation,
@ -235,8 +233,8 @@ public class StampController {
float margin)
throws IOException {
// Load the watermark image
BufferedImage image = ImageIO.read(watermarkImage.getInputStream());
// Load the stamp image
BufferedImage image = ImageIO.read(stampImage.getInputStream());
// Compute width based on original aspect ratio
float aspectRatio = (float) image.getWidth() / (float) image.getHeight();