Печать в Adobe AIR - Автономное создание PDF-файлов
Вопрос
Можно ли создавать PDF-документы в приложении Adobe AIR, не прибегая к веб-сервису для создания PDF-файла в оба конца?Я просмотрел первоначальные отчеты Flex в GoogleCode, но для создания фактического PDF-файла требуется цикл туда и обратно.
Учитывая, что AIR должен быть рабочим столом для RIAs, есть ли способ добиться этого?Я подозреваю, что я что-то упускаю из виду, но мои поиски в документации не раскрывают слишком многого, и, учитывая цель AIR, я не могу поверить, что это просто что-то, чего они не включили.
Решение
Там есть AlivePDF ( Живой ), которая представляет собой библиотеку генерации PDF-файлов для ActionScript, которая должна работать, она была создана именно для той ситуации, которую вы описываете.
Другие советы
Только что добавлена демо-версия Adobe Air + Javascript + AlivePDF:
Эта демо-версия не делает требует гибкости и довольно прямолинейен.
http://www.drybydesign.com/2010/02/26/adobe-air-alivepdf-without-flex/
Одна из других команд, в которой я работаю, работает над приложением для рисования на основе Flex, и они были очень удивлены, что AIR / Flex не имеет встроенной программы для создания PDF-файлов.В итоге они создали свой собственный simple PDF creator на основе спецификации PDF.
Да, создать PDF-файл с помощью AlivePDF очень просто, вот пример кода, первый метод создает PDF-файл, а второй метод сохраняет PDF-файл на диск и возвращает путь, не стесняйтесь задавать любые вопросы.
public function createFlexPdf() : String
{
pdf = new PDF();
pdf.setDisplayMode (Display.FULL_WIDTH,Layout.ONE_COLUMN,Mode.FIT_TO_PAGE,0.96);
pdf.setViewerPreferences(ToolBar.SHOW,MenuBar.HIDE,WindowUI.SHOW,FitWindow.RESIZED,CenterWindow.CENTERED);
pdf.addPage();
var myFontStyle:IFont = new CoreFont ( FontFamily.COURIER );
pdf.setFont(myFontStyle,10);
pdf.addText('Kamran Aslam',10,20);//String, X-Coord, Y-Coord
return savePDF();
}
private function savePDF():String
{
var fileStream:FileStream = new FileStream();
var file:File = File.createTempDirectory();
file = file.resolvePath("temp.pdf");
fileStream.open(file, FileMode.WRITE);
var bytes:ByteArray = pdf.save(Method.LOCAL);
fileStream.writeBytes(bytes);
fileStream.close();
return file.url;
}