Android iText 生成pdf

gradle

compile('com.itextpdf:itextg:5.5.10') {
        exclude group: 'com.itextpdf.text.pdf', module: 'fonts'
    }
compile 'org.bouncycastle:bcprov-jdk15on:1.49' //加密
compile 'org.bouncycastle:bcpkix-jdk15on:1.49' //加密

生成pdf

val base = BaseFont.createFont("assets/STSong.TTF",BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED)//中文字體
val pdf = Document(PageSize.A4, 42f, 42f, 50f, 42f)
val writer = PdfWriter.getInstance(pdf, FileOutputStream(file))
pdf.open()
//居中標(biāo)題
val font = Font(base, 14f)
font.style = Font.BOLD
val title = Paragraph("pdf標(biāo)題",font)
title.alignment = Element.ALIGN_CENTER
pdf.add(title)
//創(chuàng)建表格
val table = PdfPTable(2) // columns.  2 列
table.widthPercentage = 96f // Width 100%
table.spacingBefore = 20f // Space before table
table.spacingAfter = 10f // Space after table
table.setWidths(intArrayOf(1,2)) //寬度占比
// 合并兩個(gè)單元格 居中顯示標(biāo)題
val name = PdfPCell(Paragraph("單元格標(biāo)題", font ))
name.backgroundColor =BaseColor.LIGHT_GRAY
name.colspan = 2 //占兩列
name.setPadding(6f)
name.horizontalAlignment = Element.ALIGN_CENTER
table.addCell(name)
// 添加一行數(shù)據(jù)
val cell1= PdfPCell(Paragraph("單元格1", font ))
val cell2= PdfPCell(Paragraph("單元格2", font ))
table.addCell(cell1)
table.addCell(cell2)
// 添加圖片
var img = Image.getInstance(imgurl)
img.scaleToFit(300f,400f) //縮放
pdf.add(img)
//添加空行
pdf.add(Chunk.NEWLINE)
pdf.close()
writer.close()

加密pdf

val OWNERPASSWORD ="123456" 
var reader = PdfReader(sourceFile)
var stamp = PdfStamper(reader, FileOutputStream(encryptedFile))
stamp.setEncryption(null, OWNERPASSWORD.toByteArray(), PdfWriter.ALLOW_PRINTING, false)
stamp.setFormFlattening(true)
stamp.close()
reader.close()

OWNERPASSWORD 是擁有者自定義密碼。
PdfWriter.ALLOW_PRINTING 表示默認(rèn)開(kāi)放的權(quán)限級(jí)別,此處表示默認(rèn)不輸入密碼可以進(jìn)行查看打印,但是修改文檔需要輸入密碼。
PdfWriter.ALLOW_MODIFY_CONTENTS 表示不輸入密碼就可以修改文檔

中文字體支持

assets目錄添加 STSong.TTF字體文件

val base = BaseFont.createFont("assets/STSong.TTF",BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED) //創(chuàng)建字體

每一頁(yè)添加內(nèi)容

每頁(yè)右下角添加logo

// 每頁(yè)右下角添加logo
val pdf = Document(PageSize.A4, 42f, 42f, 50f, 42f)
val file = File(distFile)
val writer = PdfWriter.getInstance(pdf, FileOutputStream(file))
writer.pageEvent = PageFooter(logo)

class PageFooter(logo:Image):PdfPageEventHelper(){
        var logo:Image = logo
        override fun onEndPage(writer: PdfWriter, document: Document) {
            super.onEndPage(writer, document)
            logo.alignment = Element.ALIGN_RIGHT
            logo.setAbsolutePosition(document.right()-10,document.bottom()-22)
            document?.add(logo)
        }
    }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容