2013-02-11 109 views

回答

1

我会在你的情况下使用嵌入字体是独立于用户PC上的字体。

你需要一个* .ttf和一个生成的* .afm文件(在网络中有一些工具可以做到这一点)。

如果你需要与其他字符集文本块也可以是有用的(这里有一个例子如何使用西里尔字母)

enter image description here

<?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> 
0

波兰字符: 编辑文件组织/ alivepdf /pdf/PDF.as和找到的代码行(4776)

buffer.writeMultiByte(content+"\n", "windows-1252"); // jakiś idiota programista wstawił to na sztywno :/ 

变化:

buffer.writeMultiByte(content+"\n", "windows-1250");