JAVA HTML 转 PDF和增加水印
要将HTML转换为PDF并添加水印,可以使用以下方法:
- 使用iText库来创建PDF,并添加水印。
- 使用Flying Saucer项目将HTML转换为PDF。
以下是一个简单的例子,使用iText 7来生成PDF并添加水印:
import com.itextpdf.html2pdf.HtmlConverter;
import com.itextpdf.kernel.font.PdfFont;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.pdf.*;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.property.TextAlignment;
import java.io.*;
public class HtmlToPdfWithWatermark {
public static void main(String[] args) throws IOException {
String htmlContent = "<html><head></head><body><p>Hello World!</p></body></html>";
String pdfOutputPath = "output.pdf";
PdfWriter writer = new PdfWriter(pdfOutputPath);
PdfDocument pdfDoc = new PdfDocument(writer);
Document doc = new Document(pdfDoc);
// 添加水印
PdfFont font = PdfFontFactory.createFont("Helvetica");
String watermarkText = "CONFIDENTIAL";
for (int i = 1; i <= pdfDoc.getNumberOfPages(); i++) {
Paragraph watermark = new Paragraph(watermarkText)
.setFont(font)
.setFontSize(50)
.setRotationAngle(45)
.setBackgroundColor(new DeviceRgb(200, 200, 200))
.setTextAlignment(TextAlignment.CENTER)
.setFixedPosition(1);
PdfPage page = pdfDoc.getPage(i).getPage();
Rectangle pageSize = page.getPageSize();
PdfCanvas canvas = new PdfCanvas(page.newContentStreamBefore(), page.getResources(), pdfDoc);
canvas.beginText()
.moveText(pageSize.getWidth() / 2 - watermarkText.length() * 10, pageSize.getHeight() / 2)
.showText(watermarkText)
.endText();
canvas.add(watermark);
canvas.release();
}
// 转换HTML到PDF
HtmlConverter.convertToPdf(htmlContent, pdfDoc);
doc.close();
System.out.println("PDF with watermark created successfully.");
}
}
在这个例子中,我们首先创建了一个PdfWriter
和PdfDocument
对象,然后用这些对象初始化了Document
对象。接着,我们通过循环遍历PDF的每一页,并在每一页上绘制水印。最后,我们使用HtmlConverter
将HTML内容转换为PDF。
请注意,这个例子需要iText 7库。你可能需要添加对应的依赖到你的项目中去。
确保在实际环境中处理好异常和资源管理,这里为了简洁性没有包含这些代码。
评论已关闭