前提
ProcessingでPDFファイルを扱うために、PDFBoxを使おうとしています。
フォントに「YuGothM.ttf」(13742180バイト)を指定しようとしたところ、以下のエラーメッセージが発生しました。
サイズの大きなフォントは使用できないのでしょうか。
実現したいこと
- 「YuGothM.ttf」を使えるようにする
発生している問題・エラーメッセージ
警告: Skip table ' ' which goes past the file size; offset: 1146308935, size: 8580, font size: 13742180
TN8001が👍を押しています
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答1件
0
ベストアンサー
フォントに「YuGothM.ttf」(13742180バイト)を指定しようとした
游ゴシックだと思いますけど、本当に.ttf
ですか?
うち(Windows10)では、YuGothM.ttc
しかありませんでした。
以下のエラーメッセージが発生しました。
それはただの警告で、エラーはその次の行からではありませんか?
.ttc
だとして手元で試したところ、↓と同じエラーになりました。
PDFBOXを利用して日本語を出力したい。
フォント名は↓で出たものでOKでした。
【Java】PDFBoxでPDF出力 | Oqiita Memo
Processing
1// [Java ライブラリ Apache PDFBox で PDF を操作しよう (第2回:文字の表示) |](https://weblabo.oscasierra.net/java-pdfbox-2/) 2 3import org.apache.pdfbox.pdmodel.PDDocument; 4import org.apache.pdfbox.pdmodel.PDPage; 5import org.apache.pdfbox.pdmodel.PDPageContentStream; 6import org.apache.pdfbox.pdmodel.font.PDFont; 7import org.apache.pdfbox.pdmodel.font.PDType0Font; 8import org.apache.fontbox.ttf.TrueTypeCollection; 9import org.apache.fontbox.ttf.TrueTypeFont; 10 11 12// [PDFBOXを利用して日本語を出力したい。](https://teratail.com/questions/301141) 13try (TrueTypeCollection ttc = new TrueTypeCollection(new File("C:\\Windows\\Fonts\\YuGothM.ttc"))) { 14 15 // [【Java】PDFBoxでPDF出力 | Oqiita Memo](https://www.oqiita.com/?p=2524#TTC) 16 //java.awt.Font[] fonts = java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts(); 17 //for (int i = 0; i < fonts.length; i++) { 18 // System.out.println(fonts[i].getPSName() + ":" + fonts[i].getName() + ":" + fonts[i].getFamily()); 19 //} 20 21 PDDocument document = new PDDocument(); 22 PDPage page = new PDPage(); 23 document.addPage(page); 24 25 // java.io.IOException: 'head' table is mandatory 26 //PDFont f = PDType0Font.load(document, new File("C:\\Windows\\Fonts\\YuGothM.ttc")); 27 28 TrueTypeFont ttf = ttc.getFontByName("YuGothic-Medium"); 29 PDFont font = PDType0Font.load(document, ttf, true); 30 31 PDPageContentStream contentStream = new PDPageContentStream(document, page); 32 contentStream.beginText(); 33 contentStream.setFont(font, 12); 34 contentStream.newLineAtOffset(200f, 500f); 35 contentStream.showText( "ハローワールド!" ); 36 contentStream.endText(); 37 contentStream.close(); 38 39 document.save(savePath("helloworld.pdf")); 40 document.close(); 41} 42catch (IOException e) { 43 e.printStackTrace(); 44}
警告は何か出ていますが、とりあえずPDFファイルはできました。
投稿2022/12/07 16:23
総合スコア10022
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2022/12/07 23:49
退会済みユーザー
2022/12/08 00:27
2022/12/08 03:12