国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SpringBoot實(shí)現(xiàn)pdf添加水印

這篇具有很好參考價(jià)值的文章主要介紹了SpringBoot實(shí)現(xiàn)pdf添加水印。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

在某些情況下,我們需要對(duì) PDF 文件添加水印,以使其更具有辨識(shí)度或者保護(hù)其版權(quán)。本文將介紹幾種方案來(lái)實(shí)現(xiàn)PDF添加水印。

git地址:https://gitee.com/ninesuntec/pdf-add-watermark

1.使用 Apache PDFBox 庫(kù)

PDFBox 是一個(gè)流行的、免費(fèi)的、用 Java 編寫(xiě)的庫(kù),它可以用來(lái)創(chuàng)建、修改和提取 PDF 內(nèi)容。PDFBox 提供了許多 API,包括添加文本水印的功能。

添加 PDFBox 依賴(lài)

<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox</artifactId>
    <version>2.0.24</version>
</dependency>

在添加水印之前,需要讀取原始 PDF 文件:

PDDocument document = PDDocument.load(new File("original.pdf"));

遍歷 PDF 中的所有頁(yè)面,并使用 PDPageContentStream 添加水印:

// 遍歷 PDF 中的所有頁(yè)面
for (int i = 0; i < document.getNumberOfPages(); i++) {
    PDPage page = document.getPage(i);
    PDPageContentStream contentStream = new PDPageContentStream(document, page, PDPageContentStream.AppendMode.APPEND, true, true);

    // 設(shè)置字體和字號(hào)
    contentStream.setFont(PDType1Font.HELVETICA_BOLD, 36);

    // 設(shè)置透明度
    contentStream.setNonStrokingColor(200, 200, 200);

    // 添加文本水印
    contentStream.beginText();
    contentStream.newLineAtOffset(100, 100); // 設(shè)置水印位置
    contentStream.showText("Watermark"); // 設(shè)置水印內(nèi)容
    contentStream.endText();

    contentStream.close();
}

最后,保存修改后的 PDF 文件:

document.save(new File("output.pdf"));
document.close();

示例:

 public static void main(String[] args) throws IOException {
        // 讀取原始 PDF 文件
        PDDocument document = PDDocument.load(new File("original.pdf"));

        // 遍歷 PDF 中的所有頁(yè)面
        for (int i = 0; i < document.getNumberOfPages(); i++) {
            PDPage page = document.getPage(i);
            PDPageContentStream contentStream = new PDPageContentStream(document, page, PDPageContentStream.AppendMode.APPEND, true, true);

            // 設(shè)置字體和字號(hào)
            contentStream.setFont(PDType1Font.HELVETICA_BOLD, 36);

            // 設(shè)置透明度
            contentStream.setNonStrokingColor(200, 200, 200);

            // 添加文本水印
            contentStream.beginText();
            contentStream.newLineAtOffset(100, 100); // 設(shè)置水印位置
            contentStream.showText("Watermark"); // 設(shè)置水印內(nèi)容
            contentStream.endText();

            contentStream.close();
        }

        // 保存修改后的 PDF 文件
        document.save(new File("output.pdf"));
        document.close();
    }

為了使我們的代碼更具備擴(kuò)展性,我們把一些基本的屬性抽取出來(lái)

PdfBoxAttributes:

@Data
@AllArgsConstructor
@NoArgsConstructor
public class PdfBoxAttributes {
    //透明度設(shè)置
    private Integer r = 200;
    private Integer g = 200;
    private Integer b = 200;
    //水印位置
    private float tx = 100;
    private float ty = 100;
    //水印內(nèi)容
    private String showTxt = "PdfBoxWaterMark";
    //水印添加方式(覆蓋、添加、)
    private PDPageContentStream.AppendMode appendMode = PDPageContentStream.AppendMode.APPEND;
    //字體樣式
    private PDType1Font fontStyle = PDType1Font.HELVETICA_BOLD;
    private float fontSize = 36;
}

使用方式如下:

import com.example.demo.po.PdfBoxAttributes;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDType1Font;

import java.io.File;

public class PdfBoxWatermarkUtil {
    public static void addWaterMark(File pdf, String savePath, PdfBoxAttributes pdfBoxAttributes) {

        try {
            System.out.println("--------------開(kāi)始添加水印--------------------");
            // 讀取原始 PDF 文件
            PDDocument document = PDDocument.load(pdf);

            // 遍歷 PDF 中的所有頁(yè)面
            for (int i = 0; i < document.getNumberOfPages(); i++) {
                PDPage page = document.getPage(i);
                PDPageContentStream contentStream = new PDPageContentStream(document, page, pdfBoxAttributes.getAppendMode(), true, true);

                // 設(shè)置字體和字號(hào)
                contentStream.setFont(pdfBoxAttributes.getFontStyle(), pdfBoxAttributes.getFontSize());

                // 設(shè)置透明度
                contentStream.setNonStrokingColor(pdfBoxAttributes.getR(), pdfBoxAttributes.getG(), pdfBoxAttributes.getB());

                // 添加文本水印
                contentStream.beginText();
                contentStream.newLineAtOffset(pdfBoxAttributes.getTx(), pdfBoxAttributes.getTy()); // 設(shè)置水印位置
                contentStream.showText(pdfBoxAttributes.getShowTxt()); // 設(shè)置水印內(nèi)容
                contentStream.endText();
                contentStream.close();
                System.out.println("--------------已完成第"+(i+1)+"頁(yè)的水印添加--------------------");
            }

            // 保存修改后的 PDF 文件
            document.save(new File(savePath));
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            System.out.println("--------------添加水印完成--------------------");
        }

    }

    public static void main(String[] args) {
        File file=new File("/Users/hb24795/Downloads/自動(dòng)控制原理.pdf");
        addWaterMark(file,"/Users/hb24795/Downloads/自動(dòng)控制原理1.pdf",new PdfBoxAttributes());
    }
}

SpringBoot實(shí)現(xiàn)pdf添加水印,springBoot,spring boot,pdf,水印,PdfBox,iText,Free Spire.PDF

2.使用 iText 庫(kù)

iText 是一款流行的 Java PDF 庫(kù),它可以用來(lái)創(chuàng)建、讀取、修改和提取 PDF 內(nèi)容。iText 提供了許多 API,包括添加文本水印的功能。

添加依賴(lài)

       <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.5.13</version>
        </dependency>

在添加水印之前,需要讀取原始 PDF 文件:

PdfReader reader = new PdfReader("original.pdf");
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("output.pdf"));

然后,遍歷 PDF 中的所有頁(yè)面,并使用 PdfContentByte 添加水?。?/p>

// 獲取 PDF 中的頁(yè)數(shù)
int pageCount = reader.getNumberOfPages();

// 添加水印
for (int i = 1; i <= pageCount; i++) {
    PdfContentByte contentByte = stamper.getUnderContent(i); // 或者 getOverContent()
    contentByte.beginText();
    contentByte.setFontAndSize(BaseFont.createFont(), 36f);
    contentByte.setColorFill(BaseColor.LIGHT_GRAY);
    contentByte.showTextAligned(Element.ALIGN_CENTER, "Watermark", 300, 400, 45);
    contentByte.endText();
}

最后,需要保存修改后的 PDF 文件并關(guān)閉文件流:

stamper.close();
reader.close();

示例:

import com.itextpdf.text.*;
import com.itextpdf.text.pdf.*;

import java.io.FileOutputStream;
import java.io.IOException;

public class ItextWatermark {
    public static void main(String[] args) throws IOException, DocumentException {
        // 讀取原始 PDF 文件
        PdfReader reader = new PdfReader("original.pdf");
        PdfStamper stamper = new PdfStamper(reader, new FileOutputStream("output.pdf"));

        // 獲取 PDF 中的頁(yè)數(shù)
        int pageCount = reader.getNumberOfPages();

        // 添加水印
        for (int i = 1; i <= pageCount; i++) {
            PdfContentByte contentByte = stamper.getUnderContent(i); // 或者 getOverContent()
            contentByte.beginText();
            contentByte.setFontAndSize(BaseFont.createFont(), 36f);
            contentByte.setColorFill(BaseColor.LIGHT_GRAY);
            contentByte.showTextAligned(Element.ALIGN_CENTER, "Watermark", 300, 400, 45);
            contentByte.endText();
        }

        // 保存修改后的 PDF 文件并關(guān)閉文件流
        stamper.close();
        reader.close();
    }
}

同樣我們把他抽取成工具類(lèi)

import com.itextpdf.text.BaseColor;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.pdf.BaseFont;
import lombok.Data;

import java.io.IOException;

@Data
public class ITextAttributes {
    //字體樣式
    private BaseFont fontStyle = BaseFont.createFont();
    //字體大小
    private float fontSize = 36f;
    //字體顏色
    private BaseColor fontColor = BaseColor.LIGHT_GRAY;
    //水印位置
    private int location = Element.ALIGN_CENTER;
    //水印內(nèi)容
    private String showTxt = "ITextWaterMark";
    //坐標(biāo)以及旋轉(zhuǎn)角度
    private float x = 300, y = 400, rotation = 45;


    public ITextAttributes() throws DocumentException, IOException {
    }

    public ITextAttributes(BaseFont fontStyle, float fontSize, BaseColor fontColor, int location, String showTxt, float x, float y, float rotation)throws DocumentException, IOException  {
        this.fontStyle = fontStyle;
        this.fontSize = fontSize;
        this.fontColor = fontColor;
        this.location = location;
        this.showTxt = showTxt;
        this.x = x;
        this.y = y;
        this.rotation = rotation;
    }
}

import com.example.demo.po.ITextAttributes;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

public class ItextWatermarkUtil {
    public static void addWaterMark(String pdfPath, String outPath, ITextAttributes attributes) {
        try {
            System.out.println("--------------開(kāi)始添加水印--------------------");
            // 讀取原始 PDF 文件
            PdfReader reader = new PdfReader(pdfPath);
            PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(outPath));
            // 獲取 PDF 中的頁(yè)數(shù)
            int pageCount = reader.getNumberOfPages();

            // 添加水印
            for (int i = 1; i <= pageCount; i++) {
                PdfContentByte contentByte = stamper.getUnderContent(i); // 或者 getOverContent()
                contentByte.beginText();
                contentByte.setFontAndSize(attributes.getFontStyle(), attributes.getFontSize());
                contentByte.setColorFill(attributes.getFontColor());
                contentByte.showTextAligned(attributes.getLocation(), attributes.getShowTxt(), attributes.getX(), attributes.getY(), attributes.getRotation());
                contentByte.endText();
                System.out.println("--------------已完成第" + (i) + "頁(yè)的水印添加--------------------");
            }

            // 保存修改后的 PDF 文件并關(guān)閉文件流
            stamper.close();
            reader.close();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            System.out.println("--------------添加水印完成--------------------");
        }

    }

    public static void main(String[] args) throws DocumentException, IOException {
        addWaterMark("/Users/hb24795/Downloads/自動(dòng)控制原理.pdf", "/Users/hb24795/Downloads/自動(dòng)控制原理1.pdf", new ITextAttributes());
    }
}

SpringBoot實(shí)現(xiàn)pdf添加水印,springBoot,spring boot,pdf,水印,PdfBox,iText,Free Spire.PDF

3.Free Spire.PDF for Java

Free Spire.PDF for Java 是一款免費(fèi)的 Java PDF 庫(kù),它提供了一個(gè)簡(jiǎn)單易用的 API,用于創(chuàng)建、讀取、修改和提取 PDF 內(nèi)容。Free Spire.PDF for Java 也支持添加文本水印以及圖片水印。

官方文檔地址:https://www.e-iceblue.cn/licensing/install-spirepdf-for-java-from-maven-repository.html

添加依賴(lài)

配置maven的settiing.xml中的倉(cāng)庫(kù)路徑
SpringBoot實(shí)現(xiàn)pdf添加水印,springBoot,spring boot,pdf,水印,PdfBox,iText,Free Spire.PDF

	<profile>
     <repositories>
        <repository>
            <id>com.e-iceblue</id>
            <url>http://repo.e-iceblue.cn/repository/maven-public/</url>
        </repository>
    </repositories>
    </profile>

然后再pom文件中添加依賴(lài)

        <dependency>
            <groupId>e-iceblue</groupId>
            <artifactId>spire.pdf.free</artifactId>
            <version>3.11.6</version>
        </dependency>

如果實(shí)在不會(huì)配置,可以把這個(gè)jar包下載下來(lái),下載地址如下:https://repo.e-iceblue.cn/repository/maven-public/e-iceblue/spire.pdf.free/5.1.0/spire.pdf.free-5.1.0.jar
然后在項(xiàng)目中引用該jar包,具體操作可參照:《springBoot引用外部jar包》

在添加水印之前,需要讀取原始 PDF 文件:

PdfDocument pdf = new PdfDocument();
pdf.loadFromFile("original.pdf");

然后,遍歷 PDF 中的所有頁(yè)面,并使用 PdfPageBase 添加水印:

// 遍歷 PDF 中的所有頁(yè)面
for (int i = 0; i < pdf.getPages().getCount(); i++) {
    PdfPageBase page = pdf.getPages().get(i);

    //添加文本水印
   AddTextWatermark(page, bandge);
}

最后,需要保存修改后的 PDF 文件:

pdf.saveToFile("output.pdf");
pdf.close();

示例:

import com.spire.pdf.*;
import com.spire.pdf.annotations.PdfWatermarkAnnotationWidget;
import com.spire.pdf.graphics.*;

import java.awt.*;
import java.awt.geom.Dimension2D;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;

public class FreeSpirePdfWatermarkUtil {
    enum METHOD {
        image,
        text
    }

    /**
     * 使用FreeSpire添加水印
     *
     * @param pdfPath    pdf文件路徑
     * @param bandge
     * @param outputPath
     */
    public static void addWaterMark(String pdfPath, String bandge, METHOD method, String outputPath) {
        try {
            String addMethod = method == METHOD.text ? "文本" : "圖片";
            System.out.println("--------------開(kāi)始添加" + addMethod + "水印--------------------");
            // 讀取原始 PDF 文件
            PdfDocument pdf = new PdfDocument();
            pdf.loadFromFile(pdfPath);

            // 遍歷 PDF 中的所有頁(yè)面
            for (int i = 0; i < pdf.getPages().getCount(); i++) {
                PdfPageBase page = pdf.getPages().get(i);
                switch (method) {
                    case text:
                        //添加文本水印
                        AddTextWatermark(page, bandge);
                        break;
                    case image:
                        // 添加圖片水印
                        AddImageWatermark(page, bandge);
                }
                System.out.println("--------------已完成第" + (i+1) + "頁(yè)的水印添加--------------------");
            }
            // 保存修改后的 PDF 文件
            pdf.saveToFile(outputPath);
            pdf.close();
            System.out.println("--------------已完成文件的水印添加--------------------");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    /**
     * @param page      要添加水印的頁(yè)面
     * @param imageFile 水印圖片路徑
     */
    public static void AddImageWatermark(PdfPageBase page, String imageFile) {
        page.setBackgroundImage(imageFile);
        Rectangle2D rect = new Rectangle2D.Float();
        rect.setFrame(page.getClientSize().getWidth() / 2 - 100, page.getClientSize().getHeight() / 2 - 100, 200, 200);
        page.setBackgroundRegion(rect);
    }

    static void AddTextWatermark(PdfPageBase page, String textWatermark) {
        Dimension2D dimension2D = new Dimension();
        dimension2D.setSize(page.getCanvas().getClientSize().getWidth() / 2, page.getCanvas().getClientSize().getHeight() / 3);
        PdfTilingBrush brush = new PdfTilingBrush(dimension2D);
        brush.getGraphics().setTransparency(0.3F);
        brush.getGraphics().save();
        brush.getGraphics().translateTransform((float) brush.getSize().getWidth() / 2, (float) brush.getSize().getHeight() / 2);
        brush.getGraphics().rotateTransform(-45);
        brush.getGraphics().drawString(textWatermark, new PdfTrueTypeFont(new Font("Arial Unicode MS", Font.PLAIN, 30), true), PdfBrushes.getRed(), 0, 0, new PdfStringFormat(PdfTextAlignment.Center));
        brush.getGraphics().restore();
        brush.getGraphics().setTransparency(1);
        Rectangle2D loRect = new Rectangle2D.Float();
        loRect.setFrame(new Point2D.Float(0, 0), page.getCanvas().getClientSize());
        page.getCanvas().drawRectangle(brush, loRect);
    }


    public static void main(String[] args) {
//        addWaterMark("/Users/hb24795/Downloads/自動(dòng)控制原理.pdf", "FreeSpire", METHOD.text, "/Users/hb24795/Downloads/自動(dòng)控制原理1.pdf");
        addWaterMark("/Users/hb24795/Downloads/自動(dòng)控制原理.pdf", "/Users/hb24795/Downloads/水印模板.png", METHOD.image, "/Users/hb24795/Downloads/自動(dòng)控制原理1.pdf");
    }

}

SpringBoot實(shí)現(xiàn)pdf添加水印,springBoot,spring boot,pdf,水印,PdfBox,iText,Free Spire.PDF

SpringBoot實(shí)現(xiàn)pdf添加水印,springBoot,spring boot,pdf,水印,PdfBox,iText,Free Spire.PDF

當(dāng)然,它的功能遠(yuǎn)不止這么多,自己可以通過(guò)官方文檔去研究一下,因?yàn)楸疚闹饕芯克〉牟僮?,故不在此處進(jìn)行細(xì)化改工具的使用。

4.Aspose.PDF for Java

Aspose.PDF for Java 是一個(gè)強(qiáng)大的 PDF 處理庫(kù),提供了添加水印的功能。

添加maven依賴(lài)

        <dependency>
            <groupId>com.luhuiguo</groupId>
            <artifactId>aspose-pdf</artifactId>
            <version>22.4</version>
        </dependency>

添加文本水印

@PostMapping("/addTextWatermark")
public ResponseEntity<byte[]> addTextWatermark(@RequestParam("file") MultipartFile file) throws IOException {
    // 加載 PDF 文件
    Document pdfDocument = new Document(file.getInputStream());
    TextStamp textStamp = new TextStamp("Watermark");
    textStamp.setWordWrap(true);
    textStamp.setVerticalAlignment(VerticalAlignment.Center);
    textStamp.setHorizontalAlignment(HorizontalAlignment.Center);
    pdfDocument.getPages().get_Item(1).addStamp(textStamp);

    // 保存 PDF 文件
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    pdfDocument.save(outputStream);
    return ResponseEntity.ok()
            .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"watermarked.pdf\"")
            .contentType(MediaType.APPLICATION_PDF)
            .body(outputStream.toByteArray());
}

添加圖片水印

@PostMapping("/addImageWatermark")
public ResponseEntity<byte[]> addImageWatermark(@RequestParam("file") MultipartFile file) throws IOException {
    // 加載 PDF 文件
    Document pdfDocument = new Document(file.getInputStream());
    ImageStamp imageStamp = new ImageStamp("watermark.png");
    imageStamp.setWidth(100);
    imageStamp.setHeight(100);
    imageStamp.setVerticalAlignment(VerticalAlignment.Center);
    imageStamp.setHorizontalAlignment(HorizontalAlignment.Center);
    pdfDocument.getPages().get_Item(1).addStamp(imageStamp);

    // 保存 PDF 文件
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    pdfDocument.save(outputStream);
    return ResponseEntity.ok()
            .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"watermarked.pdf\"")
            .contentType(MediaType.APPLICATION_PDF)
            .body(outputStream.toByteArray());
}

將其抽取為工具類(lèi)

import com.aspose.pdf.*;

import java.io.*;

public class AsposeWatermarkUtil {
    enum METHOD {
        IMAGE,
        TEXT
    }

    public static void addWaterMark(String filePath, METHOD method, String bandge, String outPath) {
        String addMethod = method == METHOD.TEXT ? "文本" : "圖片";
        System.out.println("--------------開(kāi)始添加" + addMethod + "水印--------------------");
        try {
            File pdf = new File(filePath);
            // 加載 PDF 文件
            Document pdfDocument = new Document(new FileInputStream(pdf));
            for (int i = 1; i <= pdfDocument.getPages().size(); i++) {
                Page page = pdfDocument.getPages().get_Item(i);
                if (method == METHOD.IMAGE) {
                    addImageWatermark(bandge, page);
                } else {
                    addTextWatermark(bandge, page);
                }
                System.out.println("--------------已完成第" + (i) + "頁(yè)的水印添加--------------------");
            }
            // 保存 PDF 文件
            OutputStream outputStream = new FileOutputStream(outPath);
            pdfDocument.save(outputStream);
            System.out.println("--------------已完成文件的水印添加--------------------");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void addImageWatermark(String imagePath, Page page) {
        ImageStamp imageStamp = new ImageStamp(imagePath);
        imageStamp.setWidth(100);
        imageStamp.setHeight(100);
        imageStamp.setVerticalAlignment(VerticalAlignment.Center);
        imageStamp.setHorizontalAlignment(HorizontalAlignment.Center);
        imageStamp.setOpacity(0.2);
        page.addStamp(imageStamp);
    }

    public static void addTextWatermark(String text, Page page) {
        TextStamp textStamp = new TextStamp(text);
        textStamp.setWordWrap(true);
        textStamp.setVerticalAlignment(VerticalAlignment.Center);
        textStamp.setHorizontalAlignment(HorizontalAlignment.Center);
        textStamp.setOpacity(0.5);
        textStamp.setRotate(25);

        page.addStamp(textStamp);
    }

    public static void main(String[] args) {
//        addWaterMark("/Users/hb24795/Downloads/自動(dòng)控制原理.pdf", METHOD.TEXT,"Aspose", "/Users/hb24795/Downloads/自動(dòng)控制原理1.pdf");
        addWaterMark("/Users/hb24795/Downloads/自動(dòng)控制原理.pdf", METHOD.IMAGE, "/Users/hb24795/Downloads/水印模板.png", "/Users/hb24795/Downloads/自動(dòng)控制原理1.pdf");
    }
}

上面說(shuō)的四種工具,每一種均可以操作其他類(lèi)型文件,如word,ppt等,且可以去水印等,自己可以去查詢(xún)相關(guān)資料然后去嘗試一下

后面會(huì)給出以上工具對(duì)Pdf的更多操作,如pdf轉(zhuǎn)圖片、合并Pdf、去除水印等。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-538799.html

到了這里,關(guān)于SpringBoot實(shí)現(xiàn)pdf添加水印的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Spring Boot 實(shí)現(xiàn) PDF 水印,實(shí)戰(zhàn)來(lái)了!

    來(lái)源:cnblogs.com/hushaojun/p/16285486.html PDF(Portable Document Format,便攜式文檔格式)是一種流行的文件格式,它可以在多個(gè)操作系統(tǒng)和應(yīng)用程序中進(jìn)行查看和打印。在某些情況下,我們需要對(duì) PDF 文件添加水印,以使其更具有辨識(shí)度或者保護(hù)其版權(quán)。本文將介紹如何使用 Spring Boo

    2024年02月06日
    瀏覽(23)
  • Springboot使用pdfbox提取PDF圖片

    Springboot使用pdfbox提取PDF圖片

    PDFBox是一個(gè)用于創(chuàng)建和處理PDF文檔的Java庫(kù)。它可以使用Java代碼創(chuàng)建、讀取、修改和提取PDF文檔中的內(nèi)容。 PDFBox的功能: Extract Text - 使用PDFBox,您可以從PDF文件中提取Unicode文本。 Split Merge - 使用PDFBox,您可以將單個(gè)PDF文件分成多個(gè)文件,并將它們合并為一個(gè)文件。 Fill Forms

    2024年02月10日
    瀏覽(22)
  • Java實(shí)現(xiàn)自動(dòng)化pdf打水印小項(xiàng)目 使用技術(shù)pdfbox、Documents4j

    Java實(shí)現(xiàn)自動(dòng)化pdf打水印小項(xiàng)目 使用技術(shù)pdfbox、Documents4j

    博主介紹:?目前全網(wǎng)粉絲2W+,csdn博客專(zhuān)家、Java領(lǐng)域優(yōu)質(zhì)創(chuàng)作者,博客之星、阿里云平臺(tái)優(yōu)質(zhì)作者、專(zhuān)注于Java后端技術(shù)領(lǐng)域。 涵蓋技術(shù)內(nèi)容:Java后端、算法、分布式微服務(wù)、中間件、前端、運(yùn)維、ROS等。 博主所有博客文件目錄索引:博客目錄索引(持續(xù)更新) 視頻平臺(tái):

    2024年02月20日
    瀏覽(39)
  • 使用pdfbox 為 PDF 增加水印

    使用pdfbox 為 PDF增加水印 https://www.jylt.cc/#/detail?activityIndex=2id=bd410851b0a72dad3105f9d50787f914 引入依賴(lài) 具體代碼實(shí)現(xiàn)

    2024年01月19日
    瀏覽(28)
  • SpringBoot 實(shí)現(xiàn) PDF 添加水印有哪些方案

    PDF(Portable Document Format,便攜式文檔格式)是一種流行的文件格式,它可以在多個(gè)操作系統(tǒng)和應(yīng)用程序中進(jìn)行查看和打印。在某些情況下,我們需要對(duì) PDF 文件添加水印,以使其更具有辨識(shí)度或者保護(hù)其版權(quán)。本文將介紹如何使用 Spring Boot 來(lái)實(shí)現(xiàn) PDF 添加水印的方式。 PDFBox

    2024年02月16日
    瀏覽(20)
  • SpringBoot 實(shí)現(xiàn) PDF 添加水印有哪些方案?

    SpringBoot 實(shí)現(xiàn) PDF 添加水印有哪些方案?

    PDF(Portable Document Format,便攜式文檔格式)是一種流行的文件格式,它可以在多個(gè)操作系統(tǒng)和應(yīng)用程序中進(jìn)行查看和打印。在某些情況下,我們需要對(duì) PDF 文件添加水印,以使其更具有辨識(shí)度或者保護(hù)其版權(quán)。本文將介紹如何使用 Spring Boot 來(lái)實(shí)現(xiàn) PDF 添加水印的方式。 PDFBox

    2024年02月09日
    瀏覽(22)
  • 【PDFBox】PDFBox操作PDF文檔之添加本地圖片、添加網(wǎng)絡(luò)圖片、圖片寬高自適應(yīng)、圖片水平垂直居中對(duì)齊

    【PDFBox】PDFBox操作PDF文檔之添加本地圖片、添加網(wǎng)絡(luò)圖片、圖片寬高自適應(yīng)、圖片水平垂直居中對(duì)齊

    這篇文章,主要介紹PDFBox操作PDF文檔之添加本地圖片、添加網(wǎng)絡(luò)圖片、圖片寬高自適應(yīng)、圖片水平垂直居中對(duì)齊。 目錄 一、PDFBox操作圖片 1.1、添加本地圖片 (1)案例代碼 (2)運(yùn)行效果 (3)方法介紹 1.2、添加網(wǎng)絡(luò)圖片 (1)案例代碼 (2)運(yùn)行效果 1.3、圖片寬高自適應(yīng)(

    2024年02月16日
    瀏覽(40)
  • java實(shí)現(xiàn)pdf文件添加水印,下載到瀏覽器

    java實(shí)現(xiàn)pdf文件添加水印,下載到瀏覽器

    添加itextpdf依賴(lài) 根據(jù)需求,不需要指定路徑可以刪除對(duì)應(yīng)的輸出流 效果如下:代碼中的相對(duì)路徑在src平級(jí)目錄下,test.pdf是PdfStamper里面fileOutputStream生成的,test1.pdf是fos生成的 瀏覽器下載的如下: 生成的pdf內(nèi)容如下(紅框里面是pdf原來(lái)的內(nèi)容,可以自己調(diào)整代碼中注釋掉的設(shè)

    2024年02月05日
    瀏覽(21)
  • 【Spring Boot】SpringBoot完整實(shí)現(xiàn)社交網(wǎng)站系統(tǒng)

    一個(gè)完整的社交網(wǎng)站系統(tǒng)需要涉及到用戶(hù)登錄、發(fā)布動(dòng)態(tài)、關(guān)注、評(píng)論、私信等各方面。這里提供一個(gè)簡(jiǎn)單的實(shí)現(xiàn)示例,供參考。 前端代碼 前端使用Vue框架,以下是部分代碼示例: 登錄頁(yè): 首頁(yè): 后端代碼 后端使用Spring Boot框架,以下是部分代碼示例: 登錄Controller: U

    2024年02月11日
    瀏覽(21)
  • 【Spring Boot】SpringBoot參數(shù)驗(yàn)證以及實(shí)現(xiàn)原理

    【Spring Boot】SpringBoot參數(shù)驗(yàn)證以及實(shí)現(xiàn)原理

    參數(shù)驗(yàn)證很重要,是平時(shí)開(kāi)發(fā)環(huán)節(jié)中不可少的一部分,但是我想很多后端同事會(huì)偷懶,干脆不做,這樣很可能給系統(tǒng)的穩(wěn)定性和安全性帶來(lái)嚴(yán)重的危害。 那么在Spring Boot應(yīng)用中如何做好參數(shù)校驗(yàn)工作呢,本文提供了小技巧以及驗(yàn)證實(shí)現(xiàn)原理,你知道幾個(gè)呢? Spring Boot 提供了內(nèi)

    2023年04月16日
    瀏覽(39)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包