java生成pdf加密_java使用iText 生成PDF全攻略(表格,加密)
java使用iText 生成PDF全攻略,包括創建文檔,設置字體,添加表格(PdfPTable),創建新頁(newPage),設置布局,加密
主要使用的jar包: itextpdf-5.4.2.jar,itext-pdfa-5.4.2.jar,itext-xtra-5.4.2.jar,如果用到中文,需要CJK字體的擴展包:itext-asian.jar
如果用到特殊符號的,需要另一個擴展包:itext-hyph-xml.jar。所有這些使用的jar包都可以在itext 5.4.2 官方下載地址:itext-5.4.2.zip
運行環境: java version 1.6.0_18 + iText 5.4.2
創建文檔
package com.pdf;
import java.io.FileOutputStream;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Chunk;
import com.itextpdf.text.Document;
import com.itextpdf.text.Font;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfWriter;
public class ItextHelloword {
public static void test() {
// 常用頁面大小 PageSize.A4;
Document doc = new Document(PageSize.A4);
try {
// 定義輸出位置并把文檔對象裝入輸出對象中
PdfWriter.getInstance(doc,
new FileOutputStream("f:/hello.pdf"));
// 打開文檔對象
doc.open();
// 加入文字"HelloWorld"
doc.add(new Paragraph("HelloWorld"));
// 關閉文檔對象,釋放資源
doc.close(); } catch (Exception e) { e.printStackTrace(); } } }
設置字體
亞洲國家的字體你可以從http://itext.sourceforge.net/downloads/iTextAsian.jar下載這個包。然后把它直接放到你的ClassPath中就可以了
BaseFont bfChinese = BaseFont.createFont("STSong-Light"
, "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
Font FontChinese = new Font(bfChinese, 12, Font.NORMAL);
表格
package com.pdf;
import java.io.FileOutputStream;
import org.apache.poi.ss.usermodel.Cell;
import com.EnumTypeExampe.Color;
import com.itextpdf.awt.geom.Rectangle;
import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Chunk;
import com.itextpdf.text.Document;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;
public class ItextHelloword {
/**
* @param args
*/
public static void main(String[] args)
throws Exception {
test() ;
}
public static void test() {
// 常用頁面大小 PageSize.A4;
Document doc = new Document(PageSize.A4);
try {
// 定義輸出位置并把文檔對象裝入輸出對象中
PdfWriter writer=PdfWriter.getInstance(doc,
new FileOutputStream("f:/hello.pdf"));
// 定義中文字體
BaseFont bfChinese = BaseFont.createFont("STSong-Light",
"UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
Font fontCN = new Font(bfChinese, 12,
Font.NORMAL);
// 打開文檔對象
doc.open();
// 加入文字"HelloWorld"
doc.add(new Paragraph("HelloWorld"));
//定義一個表格 創建一個有3列的表格
PdfPTable table = new PdfPTable(3);
// 定義一個表格單元
PdfPCell cell = new PdfPCell(
new Paragraph("some text"));
// cell.setBorder(1);
// 把單元加到表格中
table.addCell(cell);
// 把下面這9項順次的加入到表格中,當一行充滿時候自動折行到下一行
table.addCell("1.1");
table.addCell("2.1");
table.addCell("3.1");
table.addCell("1.2");
table.addCell("2.2");
table.addCell("3.2");
table.addCell("1.3");
table.addCell("2.3");
table.addCell("3.3");
// 增加到文檔中
doc.add(table);
doc.add(new Paragraph("居右 50%", fontCN));
// 設置表格大小為可用空白區域的50%
table.setWidthPercentage(50);
// 設置水平對齊方式為 居右
table.setHorizontalAlignment(Element.ALIGN_RIGHT);
doc.add(new Paragraph("居左 50%", fontCN));
// 增加到文檔中3
doc.add(table);
// 設置水平對齊方式為 居左
table.setHorizontalAlignment(Element.ALIGN_LEFT);
doc.add(table);
// 關閉文檔對象,釋放資源
doc.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
創建新頁
// 創建第2的頁面
document.newPage();
document.add(new Paragraph("Hello Earth"));
document.resetHeader();
// 創建第3的頁面
document.newPage();
document.add(new Paragraph("Hello Sun"));
document.add(new Paragraph("Remark: the header has vanished!"));
document.resetPageCount();
加密
public static void test() {
// 常用頁面大小 PageSize.A4;
Document doc = new Document(PageSize.A4);
try {
// 定義輸出位置并把文檔對象裝入輸出對象中
PdfWriter writer=PdfWriter.getInstance(doc,
new FileOutputStream("f:/hello.pdf"));
// 打開文檔對象
doc.open();
// 加入文字"HelloWorld"
doc.add(new Paragraph("HelloWorld"));
// setEncryption方法中可以設置如下內容(這樣打開pdf時需要輸入口令)
// PdfWriter.STRENGTH128BITS, "userpass", "ownerpass",
// PdfWriter.AllowCopy | PdfWriter.AllowPrinting
writer.setEncryption("userpassword".getBytes()
, "ownerPassword".getBytes(), PdfWriter.ALLOW_COPY
, PdfWriter.EMBEDDED_FILES_ONLY);
// writer.setEncryption(PdfWriter.STRENGTH40BITS,
//"", "", PdfWriter.AllowCopy);
// 關閉文檔對象,釋放資源
doc.close();
} catch (Exception e) {
e.printStackTrace();
}
}
以下圖片是上面代碼中生成的表格:
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的java生成pdf加密_java使用iText 生成PDF全攻略(表格,加密)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 酒厂选址(codevs 1507)
- 下一篇: 软件与软件工程的概念