Open1

Pdfboxのメモ

eichisandeneichisanden

Hello World

object HelloWorld {
    @Throws(Exception::class)
    @JvmStatic
    fun main(args: Array<String>) {
        PDDocument().use { doc ->
            val page = PDPage(PDRectangle.A4)
            PDPageContentStream(doc, page).use { stream ->
                val type0Font = loadFont(doc)
                stream.beginText()
                stream.setFont(type0Font, 24f)
                stream.newLineAtOffset(50f, 600f)
                stream.showText("Hello 東京!")
                stream.endText()
            }
            doc.addPage(page)
            doc.save("/tmp/HelloWorld.pdf")
        }
    }

    @Throws(IOException::class)
    private fun loadFont(doc: PDDocument): PDType0Font {
        val classLoader = Thread.currentThread().getContextClassLoader()
        val url = classLoader.getResource("font/NotoSansJP-Regular.ttf") ?: error("font not found")
        return RandomAccessReadBufferedFile(File(url.path)).use {buff ->
            TTFParser().parse(buff).use {ttf ->
                PDType0Font.load(doc, ttf, true)
            }
        }
    }
}