PDFDocletをJDK12上で動作させる

2020年4月6日

JavadocをPDF化したいので探してみたが、PDFDocletというのが良いらしい。

基本的にはここに書かれている通りだ。パッチを当てたものは以下。

しかし、問題があり、PDFDoclet内部で使用しているsun.tools.java.ClassPath、sun.tools.java.ClassFileが、もはやJDK12では提供されていない。これはネット上にあるJDK8のソースから拾ってきた。

さらに、もう一つ問題があり、なぜかタグの中の日本語が全く表示されない。

/**
 * <h2>PDFDocletの説明</h2>
 * <p>
 * これこれの説明
 * </p>
 * <ul>
 * <li>Javaによるプログラム
 * </ul>
 */

のようなコメントを書くと、PDFDoclet、Javaという日本語以外の文字しか表示されない。これはHTMLTag.javaに問題があった。パッチを当てたものを以下に置く。

以下の部分が変更箇所である。パッチ前は”body”タグのみ日本語フォントが選択されていた。

        if (java.util.Locale.getDefault().getLanguage().equals(
                java.util.Locale.JAPANESE.getLanguage())) {
            return FontFactory.getFont(
                "HeiseiMin-W3",
                "UniJIS-UCS2-HW-H",
                fontSize,
                style,
                color);