Java: PDF에 한 줄 또는 여러 줄 텍스트 워터마크 추가

20647 단어 javapdftextwatermark
PDF 워터마크는 내용 아래 또는 앞에 텍스트나 이미지를 배치하여 소유권을 식별하거나 기밀성을 나타내거나 PDF 파일의 상태를 표시하는 수단으로 사용됩니다. 이 문서에서는 Java에서 PDF에 한 줄 또는 여러 줄 텍스트 워터마크를 추가하는 방법과 Spire.PDF for Java을 사용하여 워터마크의 위치, 불투명도, 크기 및 각도를 설정하는 방법을 보여줍니다.
  • Add a One-Line Text Watermark to PDF in Java
  • Add a Multi-Line Text Watermark to PDF in Java

  • 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에 한 줄 텍스트 워터마크를 추가하는 단계입니다.
  • PdfDocument 개체를 만듭니다.
  • PdfDocument.loadFromFile() 메서드를 사용하여 PDF 파일을 로드합니다.
  • 워터마크 텍스트 및 글꼴을 지정합니다.
  • 페이지의 좌표계를 적절한 위치로 이동합니다.
  • 지정된 위치에 텍스트 워터마크를 그립니다.
  • PdfDocument.saveToFile() 메서드를 사용하여 문서를 다른 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에 다중 라인 텍스트 워터마크를 추가하는 단계입니다.
  • PdfDocument 객체 생성
  • PdfDocument.loadFromFile() 메서드를 사용하여 샘플 PDF 문서를 로드합니다.
  • 사용자 정의 메소드 insertMultiLineTextWatermark(PdfPageBase page, String watermarkText, PdfTrueTypeFont font, int rowNum, int columnNum)를 만들어 여러 줄 텍스트 워터마크를 PDF 페이지에 추가합니다. 매개변수 rowNum 및 columnNum은 타일 워터마크의 행 및 열 번호를 지정합니다.
  • 문서의 모든 페이지를 탐색하고 사용자 정의 메서드 insertMultiLineTextWatermark()를 호출하여 각 페이지에 워터마크를 적용합니다.
  • PdfDocument.saveToFile() 메서드를 사용하여 문서를 다른 파일에 저장합니다.

  • 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());
        }
    }
    
    


    좋은 웹페이지 즐겨찾기