|
|
|||||
AlivePDF откуда взять *.AFM?
Привет,
Пытаюсь сгенерить пдф на русском языке. [Embed(source="ARIAL.TTF", mimeType="application/octet-stream")] private var _fontTtf:Class; [Embed(source="arial.afm", mimeType="application/octet-stream")] private var _fontAfm:Class; private var _font:IFont; private var _pdf:PDF; _pdf = new PDF(Orientation.PORTRAIT, Unit.MM, true, Size.A4); _pdf.setDisplayMode(Display.FULL_PAGE, Layout.SINGLE_PAGE); _pdf.setMargins(LM, TM, RM, BM); _font = new EmbeddedFont(new _fontTtf(), new _fontAfm(), CodePage.CP1251); _pdf.setFont(_font, DEFAULT_SIZE); _pdf.addPage(); _pdf.writeText(11, "Съешь этих мягких французских булок да выпей чаю"); var fr:FileReference = new FileReference(); fr.save(_pdf.save(Method.LOCAL), getFilename()); ????? ???? ?????? ??????????? ????? ?? ????? ??? Думаю, что проблема в afm файлике, скачал его в нете, но есть ощущение, что в нем не описаны русские символы. Можно ли как-то генерить эти файлы спецом под свои нужды? Или ошибка в другом месте? (про прокладку не шутите, устал уже)
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
Регистрация: Dec 2009
Сообщений: 41
|
Проблем с afm возникнуть не должно. Если afm некорректен, в созданном pdf будет наблюдаться эффект "пьяных пляшущих символов".
На всякий случай: скачайте вот это - опенсорсная программа для создания afm-описаний шрифтов. Пользоваться так: поместить в один каталог программку и ttf-шрифт (где взять, думаю, сами догадаетесь) и выполнить команду В результате в папке появятся еще два файла, один из них - необходимый arial.afm (PS программка для windows, если пользуетесь другой ОС - поищите свой вариант в гугле). Проблема с выводом русских символов в том, что строку необходимо конвертировать из utf-8 в win-1251. Я делаю это с помощью функции convert: [Embed(source="ARIAL.TTF", mimeType="application/octet-stream")] private var _fontTtf:Class; [Embed(source="arial.afm", mimeType="application/octet-stream")] private var _fontAfm:Class; ... public function convert(data:String):String { var byteDataArray:ByteArray = new ByteArray(); byteDataArray.writeMultiByte(data,"windows-1251"); return byteDataArray.toString(); } ... private function generatePDF():void { var myPDF:PDF = new PDF(); var myFont:EmbeddedFont = new EmbeddedFont(new _fontTtf(), new _fontAfm(), CodePage.CP1251); myPDF.setFont(_font, DEFAULT_SIZE); myPDF.addPage(); myPDF.writeText(11, convert("Съешь этих мягких французских булок да выпей чаю")); //дальше идет сохранение pdf } Помните, что ЛЮБОЙ кириллический текст, вносимый в pdf нужно конвертить (myPDF.writeText, myPDF.addText, myPDF.addCell, myPDF.addGrid() и т.д.). Единственное, что у меня так и не получилось - прописать кириллицу в свойства pdf (myPDF.setTitle(), myPDF.setCreator(), myPDF.setAuthor(), myPDF.setSubject()), если вам это удастся - отпишите ЛС! PS: желательно обявление переменных самого pdf и шрифтов внести в локальную область функции, где непосредственно генерируется, наполняется и сохраняется pdf (как в примере выше), иначе могут возникнуть ошибки с повторным сохранением. Последний раз редактировалось spacecadet; 04.06.2011 в 14:48. |
|
|||||
Спасибо огромное, программку уже нашел, но вот не получалось все.
Исходниками пользуюсь, уже пару багов нашел в Grid ) Вроде все, что есть в либе пишется через addCell. Попробую, отпишусь. Добавлено через 36 часов 10 минут Да все получилось, прадва со шрифтом пока борюсь, Arial почему-то как моноширинный выводится
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
Регистрация: Jul 2010
Сообщений: 110
|
У меня та же проблема с некоторыми шрифтами, например, Arial. Но есть шрифты,котрые отображаются нормально. AFM файлы делал как с помощью ttf2pt1, так и этим сайтом http://onlinefontconverter.com/, результат один.
Возникла другая проблема! PDF хорош как тем, что из него можно копировать текст. А то что получается с помощью AlivePDF копируется как кракозябры. Можно ставить другие кодировки вместо CodePage.CP1251 и соответственно "windows-1251", в PDF все отлично, а кракозябры разные. Пробовал purePDF с юникодом, текст копируется как квадратики юникода. Как же нужно кодировать текст, чтобы копировать его в винде? |
|
|||||
у кого какие шрифты нормально отображаются? у меня Arial и Colibri со смещением.
если не трудно скиньте хоть один который нормально отображается, с .afm файлом. |
|
|||||
Спасибо!
|
|
|||||
Регистрация: Jul 2010
Сообщений: 110
|
|
|
|||||
Регистрация: Jul 2010
Сообщений: 110
|
Проблема с копированием текста из pdf так и не решена.
В исходниках AlivePDF есть *.map файлы с описаниями кодировок. CodePage.CP1251 ссылается на cp1251.map и т.д. Это наводит на мысль, что можно добавить файл с нужной кодировкой. Но какая нужна?! |
Часовой пояс GMT +4, время: 02:48. |
|
« Предыдущая тема | Следующая тема » |
|
|