我正在嘗試使用Alivepdf庫在flex中創建pdf。AlivePdf如何設置字體?
我無法設置字體,可能是因爲網站上的示例錯誤,他們對代碼進行了一些更改。
在http://code.google.com/p/alivepdf/wiki/APINotes有一些例子,如:
pdf.setFont(FontFamily.ARIAL , "", 32);
但文檔時setfont接受的IFont作爲第一個參數英寸
那麼,我該如何設置這個IFont?
我正在嘗試使用Alivepdf庫在flex中創建pdf。AlivePdf如何設置字體?
我無法設置字體,可能是因爲網站上的示例錯誤,他們對代碼進行了一些更改。
在http://code.google.com/p/alivepdf/wiki/APINotes有一些例子,如:
pdf.setFont(FontFamily.ARIAL , "", 32);
但文檔時setfont接受的IFont作爲第一個參數英寸
那麼,我該如何設置這個IFont?
我會在你的情況下使用嵌入字體是獨立於用戶PC上的字體。
你需要一個* .ttf和一個生成的* .afm文件(在網絡中有一些工具可以做到這一點)。
如果你需要與其他字符集文本塊也可以是有用的(這裏有一個例子如何使用西裏爾字母)
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" width="500" height="500">
<fx:Script>
<![CDATA[
import org.alivepdf.colors.RGBColor;
import org.alivepdf.display.Display;
import org.alivepdf.fonts.CodePage;
import org.alivepdf.fonts.EmbeddedFont;
import org.alivepdf.layout.Layout;
import org.alivepdf.layout.Orientation;
import org.alivepdf.layout.Unit;
import org.alivepdf.pages.Page;
import org.alivepdf.pdf.PDF;
import org.alivepdf.saving.Method;
private var myPDF:PDF;
[Embed(source="/assets/fonts/times2.ttf", mimeType="application/octet-stream")]
public var timesRegularTtf:Class;
[Embed(source="/assets/fonts/times2.afm", mimeType="application/octet-stream")]
public var timesRegularAfm:Class;
private var timesRegularFont:EmbeddedFont = new EmbeddedFont(new timesRegularTtf() as ByteArray, new timesRegularAfm() as ByteArray, CodePage.CP1251);
[Embed(source="/assets/fonts/timesbd3.ttf", mimeType="application/octet-stream")]
public var timesBoldTtf:Class;
[Embed(source="/assets/fonts/timesbd3.afm", mimeType="application/octet-stream")]
public var timesBoldAfm:Class;
private var timesBoldFont:EmbeddedFont = new EmbeddedFont(new timesBoldTtf() as ByteArray, new timesBoldAfm() as ByteArray, CodePage.CP1251);
protected function savePDF(e:MouseEvent):void
{
var myPDF:PDF = new PDF(Orientation.PORTRAIT, Unit.MM);
myPDF.setDisplayMode(Display.FULL_PAGE, Layout.SINGLE_PAGE);
var newPage:Page = new Page (Orientation.PORTRAIT, Unit.MM);
myPDF.addPage(newPage);
myPDF.textStyle (new RGBColor (0xff0000));
myPDF.setFont(timesRegularFont, 12);
myPDF.setXY(10, 20);
myPDF.writeText(1, "Hello World!");
myPDF.textStyle (new RGBColor (0x0000ff));
myPDF.setFont(timesBoldFont, 20);
myPDF.setXY(10, 40);
myPDF.writeText(1, "Hello World!");
myPDF.textStyle (new RGBColor (0x00ff00));
myPDF.setFont(timesBoldFont, 24);
myPDF.setXY(10, 60);
myPDF.writeText(1, fromUtf8ToSomeCode("Привет, Мир!", "windows-1251"));
var f:FileReference = new FileReference();
var b:ByteArray = myPDF.save(Method.LOCAL);
f.save(b, "test.pdf");
}
private function fromUtf8ToSomeCode(data:String, code:String):String
{
var b:ByteArray = new ByteArray();
if (data.length > 0)
b.writeMultiByte(data, code);
return b.toString();
}
]]>
</fx:Script>
<s:Button label="Save to PDF" click="savePDF(event)"/>
</s:Application>
波蘭字符: 編輯文件組織/ alivepdf /pdf/PDF.as和找到的代碼行(4776)
buffer.writeMultiByte(content+"\n", "windows-1252"); // jakiś idiota programista wstawił to na sztywno :/
變化:
buffer.writeMultiByte(content+"\n", "windows-1250");