/**
* 獲取統一字體
*
* **/
public static PdfFont getPdfFont(){
PdfFont pdfFont = null;
try {
pdfFont = PdfFontFactory.createFont(path, PdfEncodings.IDENTITY_H);
} catch (IOException e) {
e.printStackTrace();
}
return pdfFont;
}
/**
* 生成簡單PDF
* 涂聚文 Geovin Du
*
* */
public static void duPdf(){
//語法糖
try (PdfWriter writer = new PdfWriter(new File("src/geoivndu4.pdf"));
PdfDocument pdf = new PdfDocument(writer);
Document document = new Document(pdf, PageSize.A4.rotate());
){
//設定檔案屬性
pdf.getDocumentInfo().setAuthor("涂聚文");
pdf.getDocumentInfo().setTitle("IText測驗PDF");
pdf.getDocumentInfo().setSubject("涂聚文公司");
pdf.getDocumentInfo().setMoreInfo("涂聚文","111");
pdf.getDocumentInfo().setCreator("geovindu");
pdf.getDocumentInfo().setKeywords("IText涂聚文");
//注冊事件監聽
pdf.addEventHandler(PdfDocumentEvent.END_PAGE, new DuEventHandler());
//設定字體
document.setFont(getPdfFont());
//頁邊距
document.setMargins(20, 20, 20, 20);
//簡單文字
document.add(new Paragraph("簡單文字"));
document.add(new Paragraph("Hello Word!").add(new Tab()).add(new Text("你好!").addStyle(new Style().setFontSize(24))));
//簡單圖片
document.add(new Paragraph("簡單圖片"));
document.add(new Image(ImageDataFactory.create("src/resource/geovindulogo.jpg")));
//簡單表格
document.add(new Paragraph("簡單表格"));
Table table = new Table(new float[]{3, 3, 4});
PdfFont font = getPdfFont();
//標題、內容
process(table, "姓名;年齡;電話號碼", font, true);
for (int i = 0; i < 5; i++) {
process(table, "涂聚文"+i+";"+(18+i)+";1500000000"+i, font, false);
}
document.add(table);
//超鏈接
document.add(new Paragraph("超鏈接"));
PdfLinkAnnotation annotation = new PdfLinkAnnotation(new Rectangle(0, 0));
annotation.setAction(PdfAction.createURI("https://itextpdf.com/"));
Paragraph p = new Paragraph("更多精彩內容,猛戳:").add(new Link("這里", annotation));
document.add(p);
pdf.addNewPage();
//換一頁
document.add(new AreaBreak(AreaBreakType.NEXT_PAGE));
pdf.addNewPage();
document.close();
System.out.println("操作完成!");
} catch (IOException e) {
e.printStackTrace();
System.err.println("操作例外...");
}
}
//import com.itextpdf.html2pdf.ConverterProperties;
//import com.itextpdf.html2pdf.HtmlConverter;
/**
* 著作權所有 2022 涂聚文有限公司
* 許可資訊查看:
* 描述:
*
* 資料庫:Ms SQL server 2019
* IDE: Eclipse IDE for Enterprise Java and Web Developers - 2021-09
* OS: Windows 10 x64
* IDE: Eclipse IDE for Enterprise Java and Web Developers - 2021-09
* 歷史版本: JDK 14.0.2
* 2022-1-12 創建者 geovindu
* 2022-1-15 添加 Lambda
* 2022-1-15 修改:date
* 介面類 mssql-jdbc-9.4.1.jre16.jar.
* 資料庫:MSSQL Server 2019
* 2022-1-25 修改者:Geovin Du
* 生成API幫助檔案的指令:
*javadoc - -encoding Utf-8 -d apidoc iTextPdfHelper.java
*https://www.microsoft.com/en-us/software-download/windows10
*https://github.com/PaddlePaddle/PaddleOCR
*https://docs.microsoft.com/es-es/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server?view=sql-server-ver15
*https://github.com/microsoft/mssql-jdbc/blob/main/README.md
*oracle.jdbc.driver.OracleDriver
*
*/
import com.itextpdf.io.font.PdfEncodings;
import com.itextpdf.io.image.ImageDataFactory;
import com.itextpdf.kernel.colors.Color;
import com.itextpdf.kernel.colors.DeviceRgb;
import com.itextpdf.kernel.events.Event;
import com.itextpdf.kernel.events.IEventHandler;
import com.itextpdf.kernel.events.PdfDocumentEvent;
import com.itextpdf.kernel.font.PdfFont;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.geom.PageSize;
import com.itextpdf.kernel.geom.Rectangle;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfPage;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.action.PdfAction;
import com.itextpdf.kernel.pdf.annot.PdfLinkAnnotation;
import com.itextpdf.kernel.pdf.canvas.PdfCanvas;
import com.itextpdf.layout.Canvas;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.Style;
import com.itextpdf.layout.element.*;
import com.itextpdf.layout.font.FontProvider;
import com.itextpdf.layout.properties.*;
import com.itextpdf.layout.properties.VerticalAlignment;
import com.itextpdf.kernel.pdf.canvas.*;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
/**
* itext 7.2.1
* log4j 1.2.16
* slf4j api 1.7.33
* slf4j-log4j 12-1.7.33
*
* */
public class DuEventHandler implements IEventHandler {
private static final String FONT = "C:/Windows/Fonts/simhei.ttf";
private String markString="涂聚文 Geovin Du";
private String headString="涂聚文人事系統分析論文";
public DuEventHandler()
{}
/**
*
*
* **/
public DuEventHandler(String markString,String headstring)
{
this.headString=headstring;
this.markString=markString;
}
@Override
public void handleEvent(Event event) {
try
{
PdfDocumentEvent docEvent = (PdfDocumentEvent) event;
PdfDocument pdfDoc = docEvent.getDocument();
PdfPage page = docEvent.getPage();
int pageNumber = pdfDoc.getPageNumber(page);
int pageTotal=pdfDoc.getNumberOfPages();
Rectangle pageSize = page.getPageSize();
PdfCanvas pdfCanvas = new PdfCanvas(page.newContentStreamBefore(), page.getResources(), pdfDoc);
//背景顏色
Color backgroundColor = new DeviceRgb(245, 245, 245);;
pdfCanvas.saveState()
.setFillColor(backgroundColor)
.rectangle(pageSize.getLeft(), pageSize.getBottom(),pageSize.getWidth(), pageSize.getHeight())
.fill().restoreState();
//頁腳頁眉
PdfFont pdfFont = getPdfFont();
String header = headString;
String footer = "第 "+pageNumber+" 頁 共 "+pageTotal +"頁";
pdfCanvas.beginText()
.setFontAndSize(pdfFont, 9)
.moveText((pageSize.getWidth() / 2) - (pdfFont.getWidth(header) / 200), pageSize.getTop() - 20)
.showText(header)
.moveText((pdfFont.getWidth(header) / 200) - (pdfFont.getWidth(footer) / 200), -pageSize.getTop() + 30)
.showText(footer)
.endText();
Rectangle rectangle = new Rectangle(36, 650, 100, 100);
//文字水印
Canvas canvas = new Canvas(pdfCanvas,rectangle);
canvas.setFontColor(new DeviceRgb(200, 200, 200));
canvas.setProperty(20, 20);
canvas.setFont(pdfFont);
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
canvas.showTextAligned(new Paragraph(markString).setOpacity(0.8f),(150 + i * 300), (160 + j * 150), pdfDoc.getPageNumber(page), TextAlignment.CENTER, VerticalAlignment.MIDDLE, 45);
}
}
pdfCanvas.release();
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
//獲取統一字體
public static PdfFont getPdfFont(){
PdfFont pdfFont = null;
try {
pdfFont = PdfFontFactory.createFont(FONT, PdfEncodings.IDENTITY_H);
} catch (IOException e) {
e.printStackTrace();
}
return pdfFont;
}
}

哲學管理(學)人生, 文學藝術生活, 自動(計算機學)物理(學)作業, 生物(學)化學逆境, 歷史(學)測繪(學)時間, 經濟(學)數學金錢(理財), 心理(學)醫學情緒, 詩詞美容情感, 美學建筑(學)家園, 解構建構(分析)整合學習, 智商情商(IQ、EQ)運籌(學)成功.---Geovin Du(涂聚文)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/421329.html
標籤:其他
上一篇:百度圖片下載器2.0
