如何使用PDFBox在PDF中绘制包含€等字符的文本

时间:2015-05-04 11:05:05

标签: java android pdf pdfbox

我有一个用pdf绘制的文字,比如500 €/hour。我正在使用PdfBox-Android库。

我试图按如下方式写上面的字符串,

pageContentStream.drawString("500 " + Html.fromHtml(getString(R.string.euro)).toString() + "/hour");

其中eurostrings.xml中定义为

<string name="euro">(&#8364;)</string>
<string name="pound">(&#163;)</string>

上面的代码PdfBox-Android正在写一些乱码。

我找到了一个使用pdfbox编写的解决方案here,这是完美的。

我的问题是如何一次性写出符号旁边的文字...?

我是否需要首先编写,然后移动文本旁边的文本然后写下剩余的文本?我认为这不是一个correct解决方案。

2 个答案:

答案 0 :(得分:1)

您需要传递货币符号的HTML代码

Html.fromHtml((String) currency_symbol).toString()

Html.fromHtml((String) "&#8364;").toString() //for euro

Html.fromHtml((String) "&#163;").toString()  //for pound

答案 1 :(得分:1)

通过引用this我设法实现我需要的东西。请参阅以下代码段。

contentStream.beginText();

/*x will act as placeholder here*/
byte[] commands = "(500 x/year**) Tj ".getBytes();

/* commands[index_of_x] = (byte)128, where 128 is decimal value of octal
 * 200. (char code for '€' in WinAnsiEncoding).
 * you may want to refer annex D.2, Latin Character Set and Encodings of 
 * PDF specification ISO 32000-1
 */
commands[5] = (byte) 128;

contentStream.appendRawCommands(commands);
contentStream.endText();
contentStream.close();

PDF规范ISO 32000-1