Java: PDF에 한 줄 또는 여러 줄 텍스트 워터마크 추가
Spire.Pdf.jar를 종속성으로 추가
Maven 프로젝트에서 작업하는 경우 다음을 사용하여 pom.xml 파일에 종속성을 포함할 수 있습니다.
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.pdf</artifactId>
<version>8.8.3</version>
</dependency>
</dependencies>
maven을 사용하지 않는 경우 this location 에서 제공되는 zip 파일에서 필요한 jar 파일을 찾을 수 있습니다. 이 자습서에 제공된 샘플 코드를 실행하려면 모든 jar 파일을 애플리케이션 lib 폴더에 포함합니다.
Java에서 PDF에 한 줄 텍스트 워터마크 추가
다음은 Java용 Spire.PDF를 사용하여 PDF에 한 줄 텍스트 워터마크를 추가하는 단계입니다.
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.PdfBrushes;
import com.spire.pdf.graphics.PdfTrueTypeFont;
import java.awt.*;
import java.awt.geom.Dimension2D;
public class AddOneLineTextWatermark {
public static void main(String[] args) {
//Create a PdfDocument object
PdfDocument pdf = new PdfDocument();
//Load a sample PDF document
pdf.loadFromFile("C:/Users/Administrator/Desktop/Terms of Service.pdf");
//Create a PdfTrueTypeFont object
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", Font.PLAIN,50), true);
//Set the watermark text
String text = "CONFIDENTIAL";
//Measure the text size
Dimension2D textSize = font.measureString(text);
//Calculate the values of two offset variables,
//which will be used to calculate the translation amount of the coordinate system
float offset1 = (float)(textSize.getWidth() * Math.sqrt(2) / 4);
float offset2 = (float)(textSize.getHeight() * Math.sqrt(2) / 4);
//Traverse all the pages in the document
for (int i = 0; i < pdf.getPages().getCount(); i++) {
PdfPageBase page = pdf.getPages().get(i);
//Set the page transparency
page.getCanvas().setTransparency(0.8f);
//Translate the coordinate system by specified coordinates
page.getCanvas().translateTransform(page.getCanvas().getSize().getWidth() / 2 - offset1 - offset2, page.getCanvas().getSize().getHeight() / 2 + offset1 - offset2);
//Rotate the coordinate system 45 degrees counterclockwise
page.getCanvas().rotateTransform(-45);
//Draw watermark text on the page
page.getCanvas().drawString(text, font, PdfBrushes.getDarkGray(), 0, 0);
}
//Save the changes to another file
pdf.saveToFile("output/OneLineTextWatermark.pdf");
}
}
Java에서 PDF에 여러 줄 텍스트 워터마크 추가
다음은 PDF에 다중 라인 텍스트 워터마크를 추가하는 단계입니다.
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.PdfBrushes;
import com.spire.pdf.graphics.PdfTilingBrush;
import com.spire.pdf.graphics.PdfTrueTypeFont;
import java.awt.*;
import java.awt.geom.Dimension2D;
public class AddMultiLineWatermarkToPDF {
public static void main(String[] args) {
//Create a PdfDocument instance
PdfDocument pdf = new PdfDocument();
//Load a sample PDF document
pdf.loadFromFile("C:/Users/Administrator/Desktop/Terms of Service.pdf");
//Create a PdfTrueTypeFont object
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", Font.PLAIN, 20), true);
//Traverse all the pages
for (int i = 0; i < pdf.getPages().getCount(); i++) {
//Call insertMultiLineTextWatermark() method to add text watermarks to the specified page
insertMultiLineTextWatermark(pdf.getPages().get(i), "Internal Use Only", font, 3, 3);
}
//Save the document to another file
pdf.saveToFile("output/MultiLineTextWatermark.pdf");
}
//Create a custom method to insert multi-line text watermarks to a page
static void insertMultiLineTextWatermark(PdfPageBase page, String watermarkText, PdfTrueTypeFont font, int rowNum, int columnNum) {
//Measure the text size
Dimension2D textSize = font.measureString(watermarkText);
//Calculate the values of two offset variables, which will be used to calculate the translation amount of coordinate system
double offset1 = textSize.getWidth() * Math.sqrt(2) / 4;
double offset2 = textSize.getHeight() * Math.sqrt(2) / 4;
//Create a tile brush
PdfTilingBrush brush = new PdfTilingBrush(new Dimension((int) page.getActualSize().getWidth() / columnNum, (int) page.getActualSize().getHeight() / rowNum));
brush.getGraphics().setTransparency(0.3f);
brush.getGraphics().save();
brush.getGraphics().translateTransform(brush.getSize().getWidth() / 2 - offset1 - offset2, brush.getSize().getHeight() / 2 + offset1 - offset2);
brush.getGraphics().rotateTransform(-45);
//Draw watermark text on the tile brush
brush.getGraphics().drawString(watermarkText, font, PdfBrushes.getDarkGray(), 0, 0);
brush.getGraphics().restore();
//Draw a rectangle (that covers the whole page) using the tile brush
page.getCanvas().drawRectangle(brush, 0, 0, page.getActualSize().getWidth(), page.getActualSize().getHeight());
}
}
Reference
이 문제에 관하여(Java: PDF에 한 줄 또는 여러 줄 텍스트 워터마크 추가), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/alexis92/java-add-one-line-or-multi-line-text-watermark-to-pdf-414j텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)