Pergunta

É possível gerar documentos PDF em um aplicativo Adobe AIR sem recorrer a um serviço web de ida e volta para gerar o PDF?Analisei os relatórios Flex iniciais no GoogleCode, mas é necessário uma viagem de ida e volta para gerar o PDF real.

Dado que o AIR deveria ser o desktop final para RIAs, existe uma maneira de conseguir isso?Suspeito que estou negligenciando algo, mas minhas pesquisas na documentação não revelam muito e, dado o alvo do AIR, não posso acreditar que seja apenas algo que eles não incluíram.

Foi útil?

Solução

VivoPDF, que é uma biblioteca de geração de PDF para ActionScript que deve funcionar, foi feita justamente para a situação que você descreve.

Outras dicas

Acabei de adicionar uma demonstração Adobe Air + Javascript + AlivePDF:

Esta demonstração não requer flexibilidade e é bastante simples.

http://www.drybydesign.com/2010/02/26/adobe-air-alivepdf-without-flex/

Uma das outras equipes onde trabalho está trabalhando em um aplicativo de desenho baseado em Flex e ficou totalmente surpreso que o AIR/Flex não tenha criação de PDF integrada.Eles acabaram lançando seu próprio criador de PDF simples baseado na especificação do PDF.

Sim, é muito fácil criar PDF usando AlivePDF, aqui está o código de exemplo, primeiro método crie um pdf e segundo método salve o pdf no disco e retorne o caminho, fique à vontade para fazer qualquer pergunta.

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;
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top