Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.06.2011, 19:01
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 1  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
По умолчанию AlivePDF откуда взять *.AFM?

Привет,
Пытаюсь сгенерить пдф на русском языке.

Код AS3:
[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, "Съешь этих мягких французских булок да выпей чаю");
И сохраняю
Код AS3:
var fr:FileReference = new FileReference();
fr.save(_pdf.save(Method.LOCAL), getFilename());
Результат в доке:
????? ???? ?????? ??????????? ????? ?? ????? ???

Думаю, что проблема в afm файлике, скачал его в нете, но есть ощущение, что в нем не описаны русские символы. Можно ли как-то генерить эти файлы спецом под свои нужды? Или ошибка в другом месте? (про прокладку не шутите, устал уже)
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 04.06.2011, 14:45
spacecadet вне форума Посмотреть профиль Отправить личное сообщение для spacecadet Найти все сообщения от spacecadet
  № 2  
Ответить с цитированием
spacecadet

Регистрация: Dec 2009
Сообщений: 41
Проблем с afm возникнуть не должно. Если afm некорректен, в созданном pdf будет наблюдаться эффект "пьяных пляшущих символов".
На всякий случай: скачайте вот это - опенсорсная программа для создания afm-описаний шрифтов. Пользоваться так: поместить в один каталог программку и ttf-шрифт (где взять, думаю, сами догадаетесь) и выполнить команду
Код:
ttf2pt1 -a arial.ttf arial
В результате в папке появятся еще два файла, один из них - необходимый arial.afm (PS программка для windows, если пользуетесь другой ОС - поищите свой вариант в гугле).

Проблема с выводом русских символов в том, что строку необходимо конвертировать из utf-8 в win-1251. Я делаю это с помощью функции convert:

Код AS3:
[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
}
Если вы пользуетесь библиотекой alivepdf в виде исходных кодов, думаю можно модифицировать исходники, так, чтобы все функции записи текста при работе сами конвертировали текст, это будет удобнее. Если вы выводите еще и латиницу или цифры - их можно смело пропускать через convert, они будут отображаться корректно.

Помните, что ЛЮБОЙ кириллический текст, вносимый в 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.
Старый 05.06.2011, 01:14
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 3  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Спасибо огромное, программку уже нашел, но вот не получалось все.
Исходниками пользуюсь, уже пару багов нашел в Grid ) Вроде все, что есть в либе пишется через addCell.

Попробую, отпишусь.

Добавлено через 36 часов 10 минут
Да все получилось, прадва со шрифтом пока борюсь, Arial почему-то как моноширинный выводится
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 30.07.2012, 15:50
hartman вне форума Посмотреть профиль Отправить личное сообщение для hartman Найти все сообщения от hartman
  № 4  
Ответить с цитированием
hartman

Регистрация: Jul 2010
Сообщений: 110
У меня та же проблема с некоторыми шрифтами, например, Arial. Но есть шрифты,котрые отображаются нормально. AFM файлы делал как с помощью ttf2pt1, так и этим сайтом http://onlinefontconverter.com/, результат один.
Возникла другая проблема! PDF хорош как тем, что из него можно копировать текст. А то что получается с помощью AlivePDF копируется как кракозябры. Можно ставить другие кодировки вместо CodePage.CP1251 и соответственно "windows-1251", в PDF все отлично, а кракозябры разные.
Пробовал purePDF с юникодом, текст копируется как квадратики юникода.
Как же нужно кодировать текст, чтобы копировать его в винде?

Старый 31.07.2012, 18:35
updart вне форума Посмотреть профиль Отправить личное сообщение для updart Найти все сообщения от updart
  № 5  
Ответить с цитированием
updart
 
Аватар для updart

Регистрация: Jun 2006
Сообщений: 53
Отправить сообщение для updart с помощью ICQ
у кого какие шрифты нормально отображаются? у меня Arial и Colibri со смещением.
Нажмите на изображение для увеличения
Название: Screenshot_1.png
Просмотров: 239
Размер:	11.4 Кб
ID:	28260

если не трудно скиньте хоть один который нормально отображается, с .afm файлом.

Старый 31.07.2012, 19:20
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 6  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
font.zip
Нажмите на изображение для увеличения
Название: font_exp.png
Просмотров: 236
Размер:	31.0 Кб
ID:	28262
Используем такой, но будем искать что-нибудь покруглее :о))
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 01.08.2012, 10:55
updart вне форума Посмотреть профиль Отправить личное сообщение для updart Найти все сообщения от updart
  № 7  
Ответить с цитированием
updart
 
Аватар для updart

Регистрация: Jun 2006
Сообщений: 53
Отправить сообщение для updart с помощью ICQ
Спасибо!

Старый 01.08.2012, 12:06
hartman вне форума Посмотреть профиль Отправить личное сообщение для hartman Найти все сообщения от hartman
  № 8  
Ответить с цитированием
hartman

Регистрация: Jul 2010
Сообщений: 110
Calibri

AFM сделан на http://onlinefontconverter.com/
font
надо пробовать с другими шрифтами
Изображения
 
Вложения
Тип файла: zip fonts.zip (1.12 Мб, 139 просмотров)

Старый 01.08.2012, 12:15
hartman вне форума Посмотреть профиль Отправить личное сообщение для hartman Найти все сообщения от hartman
  № 9  
Ответить с цитированием
hartman

Регистрация: Jul 2010
Сообщений: 110
Проблема с копированием текста из pdf так и не решена.
В исходниках AlivePDF есть *.map файлы с описаниями кодировок. CodePage.CP1251 ссылается на cp1251.map и т.д. Это наводит на мысль, что можно добавить файл с нужной кодировкой. Но какая нужна?!

Старый 01.08.2012, 12:56
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 10  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Цитата:
Проблема с копированием текста из pdf так и не решена.
Угу, причем purePDF тоже этим грешит.

За калибри спасибо, попробую
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Создать новую тему Ответ Часовой пояс GMT +4, время: 02:48.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 02:48.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.