PDFページをJavaとorg.Apache.pdfbox
ライブラリ、このエラーが発生します:
PDFBOX:U + 000A( 'controlLF')はこのフォントでは利用できませんHelveticaエンコーディング:WinAnsiEncoding
[問題]表示しようとしている文字列には改行文字が含まれています。
[解決策]文字列を新しいものに置き換え、改行を削除します。
text = text.replace("\n", "").replace("\r", "");
この投稿のために選択された答えは機能します。問題の原因となっているのが\ nまたは\ r文字であることがわかっている場合は、文字列から\ nおよび\ rのすべてのインスタンスを置き換えます。このエラーの原因となるさまざまなキャラクターがたくさんあることを発見しました。これが私が見つけたもののサンプルです:
U+2010 ('hyphentwo') is not available in this font Helvetica encoding: WinAnsiEncoding
U+2033 ('second') is not available in this font Helvetica encoding: WinAnsiEncoding
U+00A0 ('nbspace') is not available in this font Helvetica encoding: WinAnsiEncoding
U+FFFD ('.notdef') is not available in this font Helvetica encoding: WinAnsiEncoding
U+03BC ('mugreek') is not available in this font Helvetica encoding: WinAnsiEncoding
U+039C ('Mu') is not available in this font Helvetica encoding: WinAnsiEncoding
U+2212 ('minus') is not available in this font Helvetica encoding: WinAnsiEncoding
U+0141 ('Lslash') is not available in this font Helvetica encoding: WinAnsiEncoding
U+2103 ('centigrade') is not available in this font Helvetica encoding: WinAnsiEncoding
U+25AA ('H18543') is not available in this font Helvetica encoding: WinAnsiEncoding
私の場合、フォントに含まれていない特殊文字を削除することを選択しました。私はこのページのソリューションを使用しました:
https://cmsdk.com/Java/remove-illegal-characters-from-string-with-pdfbox.html
改行の追加を保持したい場合、つまり実際にテキストを分割して、後の部分を改行で表示したい場合は、単に\ nをHTMLに置き換えますbreakタグ、以下のような。
return text.replace("\n","<br>");
:)
文字列で「\ n」を使用して新しい行を設定しようとしている場合。 PDPageContentStream.newLineAtOffset(x、y)を試して新しい行を追加できます
PDFont font = PDType1Font.HELVETICA ;
PDDocument doc = new PDDocument();
PDPage page = new PDPage();
PDPageContentStream content = new PDPageContentStream(doc, page);
content.beginText();
content.moveTextPositionByAmount(10, 700);
content.setFont(font, 12);
content.drawString("start text ");
content.newLineAtOffset(0, -15);
content.drawString("text in new line ");
content.endText();
content.close();
doc.addPage(page);
doc.save("file.pdf");
次のようなフォントを変更する必要がある場合があります。
PDFont font = PDType0Font.load(document, new File("C:\\Users\\dw\\Desktop\\FZLTXHJW.TTF"));
"FZLTXHJW.TTF"をお持ちのフォントに置き換えます。これにより、テキストエンコーディングがサポートされます。