Um exemplo de uso de openboleto/openboleto em conjunto com QuilhaSoft/JasperPHP

Overview

JasperPHP - OpenBoleto

Considere doar fundos para nos apoiar Donate

O OpenBoleto é uma biblioteca de código aberto para geração de boletos bancários, um meio de pagamento muito comum no Brasil. O foco é ser simples e ter uma arquitetura compatível com os recursos mais modernos do PHP.

Instalação

Composer

Se você já conhece o Composer (o que é extremamente recomendado), simplesmente adicione a dependência abaixo à diretiva "require" seu composer.json:

"quilhasoft/jasperphp-openboleto": "dev-master"

###PSR-0 autoloader Hoje praticamente qualquer framework utiliza deste padrão, então você deve baixar o OpenBoleto, colocar em uma pasta específica (geralmente lib ou vendor) e procurar na documentação do seu framework para fazer com que o seu autoloader aponte o namespace jasper-php-OpenBoleto para a pasta src do jasperphp-OpenBoleto.

Gerando boletos

// para rodar este exemplo é necessario adicionar no seu composer
// "quilhasoft/jasperphp":"dev-master"
// "openboleto/openboleto":"dev-master"


//require '../autoloader.php';
//require '../../../rctnet/JasperPHP/autoloader.php';
require '../../autoload.php'; // necessario rodar o autoad principal do seu composer para pegar o openboleto, e JasperPHP

use OpenBoleto\Banco\Itau;
use OpenBoleto\Agente;
use JasperPHP\Report;
//use JasperPHP\ado\TTransaction;
//use JasperPHP\ado\TLoggerHTML;

class Boleto
{
    /* Variavel que armazenara os dados do boleto 
    / @var array();
    */
    private $data = array();
    /*
    * método __set()
    * executado sempre que uma propriedade for atribuída.
    */
    public function __set($prop, $value)
    {
        // verifica se existe método set_<propriedade>
        if (method_exists($this, 'set_'.$prop))
        {
            // executa o método set_<propriedade>
            call_user_func(array($this, 'set_'.$prop), $value);
        }
        else
        {
            if ($value === NULL)
            {
                unset($this->data[$prop]);
            }
            else
            {
                // atribui o valor da propriedade
                $this->data[$prop] = $value;
            }
        }
    }
    /*
    * método __get()
    * executado sempre que uma propriedade for requerida
    */
    public function __get($prop)
    {
        // verifica se existe método get_<propriedade>
        if (method_exists($this, 'get_'.$prop))
        {
            // executa o método get_<propriedade>
            return call_user_func(array($this, 'get_'.$prop));
        }
        else
        {
            // retorna o valor da propriedade
            if (isset($this->data[$prop]))
            {
                return ($this->data[$prop]);
            }
        }
    }

    public function __construct($sequencial = null)
    {
        //
        // aqui voce pode acessar sua base de dados e coletar os dados do boleto e preencher os campos abaixo
        //
        
        $sacado = new Agente('Fernando Maia', '023.434.234-34', 'ABC 302 Bloco N', '72000-000', 'Brasília', 'DF');
        $cedente = new Agente('Empresa de cosméticos LTDA', '02.123.123/0001-11', 'CLS 403 Lj 23', '71000-000', 'Brasília', 'DF');

        $boleto = new Itau(array(
            // Parâmetros obrigatórios
            'dataVencimento' => new DateTime('2013-01-24'),
            'valor' => 23.00,
            'sequencial' => 12345678, // 8 dígitos
            'sacado' => $sacado,
            'cedente' => $cedente,
            'agencia' => 1724, // 4 dígitos
            'carteira' => 112, // 3 dígitos
            'conta' => 12345, // 5 dígitos

            // Parâmetro obrigatório somente se a carteira for
            // 107, 122, 142, 143, 196 ou 198
            'codigoCliente' => 12345, // 5 dígitos
            'numeroDocumento' => 1234567, // 7 dígitos

            // Parâmetros recomendáveis
            //'logoPath' => 'http://empresa.com.br/logo.jpg', // Logo da sua empresa
            'contaDv' => 2,
            'agenciaDv' => 1,
            'descricaoDemonstrativo' => array( // Até 5
                'Compra de materiais cosméticos',
                'Compra de alicate',
            ),
            'instrucoes' => array( // Até 8
                'Após o dia 30/11 cobrar 2% de mora e 1% de juros ao dia.',
                'Não receber após o vencimento.',
            ),

            // Parâmetros opcionais
            //'resourcePath' => '../resources',
            //'moeda' => Itau::MOEDA_REAL,
            //'dataDocumento' => new DateTime(),
            //'dataProcessamento' => new DateTime(),
            //'contraApresentacao' => true,
            //'pagamentoMinimo' => 23.00,
            //'aceite' => 'N',
            //'especieDoc' => 'ABC',
            //'usoBanco' => 'Uso banco',
            //'layout' => 'layout.phtml',
            //'logoPath' => 'http://boletophp.com.br/img/opensource-55x48-t.png',
            //'sacadorAvalista' => new Agente('Antônio da Silva', '02.123.123/0001-11'),
            //'descontosAbatimentos' => 123.12,
            //'moraMulta' => 123.12,
            //'outrasDeducoes' => 123.12,
            //'outrosAcrescimos' => 123.12,
            //'valorCobrado' => 123.12,
            //'valorUnitario' => 123.12,
            //'quantidade' => 1,
        ));
        $boleto->getOutput();
        $this->data = array_merge($this->data,$boleto->getData());
    }
    
    /* método para interceptar  a requisição e adicionar o codigo html necessario para correta exibição do demostrativo    */
    public function get_demonstrativo()
    {
        return '<table>
        <tr>

        <td>'.implode('<br>',$this->data['demonstrativo']).
        '</td>
        </tr>
        <table>';
    }
    
    /* método para interceptar  a requisição e adicionar o codigo html necessario para correta exibição das instrucoes    */
    public function get_instrucoes()
    {
        return '<table>
        <tr>

        <td>'.implode('<br>',$this->data['instrucoes']).'
        </td>
        </tr>
        <table>';
    }

    /* este metodo esta aqui para manter compatibilidade do jxml criado para o meu sistema*/
    public function get_carteiras_nome()
    {
        return $this->data['carteira'];
    }

}
// altere aqui para o nome do arquivo de configuração no diretorio config desativado mas pode ser usado por usuarios avançados
//JasperPHP\ado\TTransaction::open('dev'); 
    
// instancição do objeto :1 parametro: caminho do layout do boleto , 2 parametro :  array com os parametros para consulta no banco para localizar o boleto
// pode ser passado como paramtro um array com os numeros dos boletos que serão impressos desde que criado sql dentro do arquivo jrxml(desativado nesse exemplo)

$report =new JasperPHP\Report("bol01Files/boletoA4.jrxml",array());
    
JasperPHP\Instructions::prepare($report);    // prepara o relatorio lendo o arquivo
$report->dbData = array(new Boleto(1),new boleto(2)); // aqui voce pode construir seu array de boletos em qualquer estrutura incluindo 
$report->generate();                // gera o relatorio

$report->out();                     // gera o pdf
$pdf  = JasperPHP\PdfProcessor::get();       // extrai o objeto pdf de dentro do report
$pdf->Output('boleto.pdf',"I");  // metodo do TCPF para gerar saida para o browser

Bancos suportados

Atualmente o JasperPHP-OpenBoleto funciona com os bancos suportados pelo openboleto/openboleto:

Toda contribuição é bem vinda. Se você deseja adaptar o JasperPHP-OpenBoleto a algum outro banco, fique à vontade para explorar o código, veja como é bastante simples integrar qualquer banco à biblioteca.

QuilhaSoft/JasperPHP

Biblioteca que gera boletos em PDF atravez de layouts preconstruidos atravez do editor JasperSoft Studio, biblioteca contruida inteiramente em php sem a necessidade de adicionar um servidor JAVA Um exemplo de utilização esta no arquivo https://github.com/QuilhaSoft/JasperPHP-openboleto/blob/master/samples/itauJasper.php Amostra de pdf Tela do editor

Para editar o layout do boleto instale o JasperSoft Studio e abra os arquivos .xlmr na pasta https://github.com/QuilhaSoft/JasperPHP-OpenBoleto/tree/master/app.jrxml/bol01Files

Homologação

Os layouts produzidos nesse exemplo estão Homologados para os bancos Caixa, Itau, Bradesco.

Para usar instale as duas bibliotecas

Licença

  • MIT License
Comments
  • Erro tentando a impressão do carne

    Erro tentando a impressão do carne

    Estou testando a biblioteca, e o tentar imprimir o carnê, tenho o seguinte erro: simplexml_load_string(): Entity: line 1: parser error : Start tag expected, '<' not found na seguinte linha: $report = new Report("bol01Files/boletoCarne.jrxml", array());

    Estou testando em um projeto laravel sem conectar a um banco de dados, apenas criando os boletos manuais.

    image

    opened by marcoprodata 6
  • Mudar fonte no .jrxml

    Mudar fonte no .jrxml

    Caros, tentei mudar a fonte no .jrxml e recebi o erro: TCPDF ERROR: Could not include font definition file: arial narrow Como posso alterar fontes na impressão do jrxml?

    opened by marcoprodata 5
  • Erro ao testar a plataforma.

    Erro ao testar a plataforma.

    Prezados,

    Fiz as instalações, que ocorreram sem erro. Ao utilizar o código de exemplo na principal do projeto, aparecem os seguintes erros:

    Warning: simplexml_load_string(): Entity: line 1: parser error : Start tag expected, '<' not found in /home/storage/3/b6/ad/antonionetoimovei1/public_html/include/vendor/quilhasoft/jasperphp/src/Report.php on line 42

    Warning: simplexml_load_string(): bol01Files/boletoCarne.jrxml in /home/storage/3/b6/ad/antonionetoimovei1/public_html/include/vendor/quilhasoft/jasperphp/src/Report.php on line 42

    Warning: simplexml_load_string(): ^ in /home/storage/3/b6/ad/antonionetoimovei1/public_html/include/vendor/quilhasoft/jasperphp/src/Report.php on line 42

    Warning: Invalid argument supplied for foreach() in /home/storage/3/b6/ad/antonionetoimovei1/public_html/include/vendor/quilhasoft/jasperphp/src/Report.php on line 55

    Warning: Invalid argument supplied for foreach() in /home/storage/3/b6/ad/antonionetoimovei1/public_html/include/vendor/quilhasoft/jasperphp/src/Report.php on line 58

    Warning: Invalid argument supplied for foreach() in /home/storage/3/b6/ad/antonionetoimovei1/public_html/include/vendor/quilhasoft/jasperphp/src/Report.php on line 114

    Warning: Invalid argument supplied for foreach() in /home/storage/3/b6/ad/antonionetoimovei1/public_html/include/vendor/quilhasoft/jasperphp/src/Report.php on line 133

    Warning: Invalid argument supplied for foreach() in /home/storage/3/b6/ad/antonionetoimovei1/public_html/include/vendor/quilhasoft/jasperphp/src/Pdf.php on line 91 TCPDF ERROR: Some data has already been output, can't send PDF file

    Lembrando que o código está exatamente igual ao exemplo aqui do projeto. A unica coisa que foi mudado é o require com o autoload do composer.

    O que pode estar errado?

    opened by MarkSamp 3
  • Erro Codigo de Barras ITAU

    Erro Codigo de Barras ITAU

    Bom dia. Gerei um boleto pela biblioteca que me gerou um codigo de barras. Porem o nosso numero que passo para o banco no arquivo remessa é 0, o banco que cria. Com isso, o código de barras do boleto gerado com o codigo de barras com o boleto gerado pelo banco ( ja com o nosso numero ) fica diferente.

    Alguem ja passou por isso?

    Codigo de barras gerado pela biblioteca: 34191.12002 00000.840678 22845.440001 7 77240000040000

    Gerado pelo banco: 34191.12804 68586.790674 22845.440001 8 77240000040000

    opened by rafahcardoso 3
  • Adicionar numParcelas na impressão do carne

    Adicionar numParcelas na impressão do carne

    Mestre, como faço para adicionar o número da parcela na impressão do carnê? eu setei a mesma pela propriedade numParcelas, ai ela entra normalmente na linha digitavel e no código de barras, mas não consigo adiciona-la a impressão do carne em campo próprio. Outro detalhe já falado, no caso do sicoob o barcode tem q ser interleaved 2 of 5, aqui mudei no meu e funcionou, mas no do repositório tá o code 128, assim alguns aplicativos de banco não conseguem ler. Desde já agradeço a atenção recebida.

    opened by marcoprodata 2
  • Participar do desenvolvimento em carnê

    Participar do desenvolvimento em carnê

    Olá eu queria ajuda no projeto mas para geração de carnês sinceramente estou perdido no código para gerar o carnê, vi que não é a mesma forma do boleto. vi que no arquivo xml do carnê coloca o query do mysql para fazer um loop. estou tendo o seguinte erro se tiver uma forma de me ajudar por favor: Fatal error: Uncaught exception 'JasperPHP\Exception' with message 'Não há transação ativa!!' in D:\www\1_sistemas\sistema_sapv\vendor\quilhasoft\jasperphp\src\Report.php on line 84

    opened by fazsites 2
  • Problema carteira Sicredi

    Problema carteira Sicredi

    Bom dia Estou tentando gerar boletos do banco Sicredi utilizando a carteira 19. Mas quando tento gerar, recebe o seguinte erro "Carteira não disponível!".

    opened by williandias360 1
  • Erro na instalação da lib no composer.json

    Erro na instalação da lib no composer.json

    Estou tentando executar a lib no meu projeto porém ela dar o seguinte erro ao executar composer update no prompt de comando:

    Problem 1
        - Installation request for quilhasoft/jasperphp-openboleto dev-master -> satisfiable by quilhasoft/jasperphp-openboleto[dev-master].
        - quilhasoft/jasperphp-openboleto dev-master requires quilhasoft/jasperphp dev-master -> satisfiable by quilhasoft/jasperphp[dev-master] but these conflict with your requirements or minimum-stability.
    

    Se alguém tiver uma solução me ajude, de já agradeço :)

    opened by diegolisboadev 1
  • logoPath não funciona?

    logoPath não funciona?

    Olá, tudo bem?

    Estou implementando a biblioteca, porém gostaria de colocar o logo da empresa. Essa variável "logoPath" exige uma url com a imagem. Porém não aparece nada no boleto. Já percorri todo o código mas não achei a solução. Talvez seja algo bem simples que deixei passar.

    De qualquer forma. Obrigado!

    opened by mauriciocarvalho01 0
  • Problema na leitura do código de barras em alguns aplicativos

    Problema na leitura do código de barras em alguns aplicativos

    Olá já tiveram esse problema de leitura do código de barras em alguns aplicativos? será que os pixels das imagens do código de barras não estariam numa qualidade ruim ? tipo o do banco do Brasil não ler, já caixa ler com muito dificuldade. agora Nubank e outros carregam tranquilamente o código. Estranho demais.

    opened by marcelocajaiba 0
  • Problema na geração do pdf

    Problema na geração do pdf

    Boa noite pessoal, tudo bem?

    Sou iniciante em desenvolvimento e estou com um projeto em Laravel que utilizará o JasperPHP-OpenBoleto, porém estou tendo problemas para gerar os pdfs... Recebo a seguinte mensagem ao tentar gerar com o arquivo de exemplo itauJasperA4.php:

    `TypeError: strpos(): Argument #1 ($haystack) must be of type string, array given in file /var/www/vendor/tecnickcom/tcpdf/tcpdf.php on line 12134

    #0 /var/www/vendor/tecnickcom/tcpdf/tcpdf.php(12134): strpos(Array, 'F') #1 /var/www/vendor/tecnickcom/tcpdf/tcpdf.php(12106): TCPDF->RoundedRectXY(21, 47, 555, 352, 4, 4, '1111', Array, Array, Array) #2 /var/www/vendor/quilhasoft/jasperphp/src/PdfProcessor.php(200): TCPDF->RoundedRect(21, 47, 555, 352, 4, '1111', Array) #3 /var/www/vendor/quilhasoft/jasperphp/src/Instructions.php(88): JasperPHP\PdfProcessor->RoundedRect(Array) #4 /var/www/vendor/quilhasoft/jasperphp/src/Report.php(674): JasperPHP\Instructions::runInstructions() #5 /var/www/app/Boleto/Boleto.php(185): JasperPHP\Report->out() #6 /var/www/vendor/composer/ClassLoader.php(571): include('/var/www/app/Bo...') #7 /var/www/vendor/composer/ClassLoader.php(428): Composer\Autoload\includeFile('/var/www/vendor...') #8 /var/www/app/Http/Controllers/API/V1/BoletoController.php(101): Composer\Autoload\ClassLoader->loadClass('App\Boleto\Bole...') #9 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): App\Http\Controllers\API\V1\BoletoController->geraBoleto() #10 /var/www/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(45): Illuminate\Routing\Controller->callAction('geraBoleto', Array) #11 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Route.php(262): Illuminate\Routing\ControllerDispatcher->dispatch(Object(Illuminate\Routing\Route), Object(App\Http\Controllers\API\V1\BoletoController), 'geraBoleto') #12 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Route.php(205): Illuminate\Routing\Route->runController() #13 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php(695): Illuminate\Routing\Route->run() #14 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\Routing\Router->Illuminate\Routing{closure}(Object(Illuminate\Http\Request)) #15 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request)) #16 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Routing\Middleware\SubstituteBindings->handle(Object(Illuminate\Http\Request), Object(Closure)) #17 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php(127): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request)) #18 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php(103): Illuminate\Routing\Middleware\ThrottleRequests->handleRequest(Object(Illuminate\Http\Request), Object(Closure), Array) #19 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php(55): Illuminate\Routing\Middleware\ThrottleRequests->handleRequestUsingNamedLimiter(Object(Illuminate\Http\Request), Object(Closure), 'api', Object(Closure)) #20 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Routing\Middleware\ThrottleRequests->handle(Object(Illuminate\Http\Request), Object(Closure), 'api') #21 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request)) #22 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php(697): Illuminate\Pipeline\Pipeline->then(Object(Closure)) #23 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php(672): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request)) #24 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php(636): Illuminate\Routing\Router->runRoute(Object(Illuminate\Http\Request), Object(Illuminate\Routing\Route)) #25 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Router.php(625): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request)) #26 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(167): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request)) #27 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http{closure}(Object(Illuminate\Http\Request)) #28 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request)) #29 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure)) #30 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull->handle(Object(Illuminate\Http\Request), Object(Closure)) #31 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request)) #32 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(40): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure)) #33 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Foundation\Http\Middleware\TrimStrings->handle(Object(Illuminate\Http\Request), Object(Closure)) #34 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request)) #35 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Foundation\Http\Middleware\ValidatePostSize->handle(Object(Illuminate\Http\Request), Object(Closure)) #36 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(86): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request)) #37 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance->handle(Object(Illuminate\Http\Request), Object(Closure)) #38 /var/www/vendor/fruitcake/laravel-cors/src/HandleCors.php(52): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request)) #39 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Fruitcake\Cors\HandleCors->handle(Object(Illuminate\Http\Request), Object(Closure)) #40 /var/www/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(39): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request)) #41 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\Http\Middleware\TrustProxies->handle(Object(Illuminate\Http\Request), Object(Closure)) #42 /var/www/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline{closure}(Object(Illuminate\Http\Request)) #43 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(142): Illuminate\Pipeline\Pipeline->then(Object(Closure)) #44 /var/www/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(111): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request)) #45 /var/www/public/index.php(52): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request)) #46 {main}`

    Poderiam por gentileza me dar uma luz quanto a instalação, ou com algum vídeo, ou documentação um pouco mais detalhada para eu poder entender melhor?

    Agradeço desde já.

    opened by damiaojr91 1
  • Show PDF in _blank

    Show PDF in _blank

    Utilizo la librería JASPERPHP en un desarrollo de una aplicación web, funciona muy buen, el problema que tengo es que el reporte me aparece en la misma ventana (_self), necesito que salga en una ventana nueva (_blank) para que no interrumpa el proceso de la aplicación.

    Otro punto es que cuando al reporte le agrego un logotipo, al generar el PDF no me aparece el logotipo.

    Talvez sea un tema general, pero agradecería tu ayuda.

    Saludos,

    Omar Noboa

    opened by onoboaits 1
Owner
QuilhaSoft
QuilhaSoft
Um micro sistema de exemplo que usa alguns padrões, mas o destaque para chain of resposibility

Projeto para ilustrar o uso do Chain Of Responsibility O objetivo é apresentar exemplos de aplicação do padrão de projeto Chain of Responsibility. Nes

Alexandre Bezerra Barbosa 2 Sep 15, 2022
Versione non ufficiale del repository ad uso personale

GAzie - Gestione Aziendale Che cos'è GAzie GAzie è un software gestionale (ERP) multiazienda in grado di gestire tanti aspetti dell'azienda, dalla ges

Lab51.org contributes to Opensource Projects 2 Dec 14, 2022
Projeto de locadora de carros, apenas a carater de estudos para praticar o uso de APIs

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

Samuel Nunes de Souza 3 Nov 30, 2021
Sistema web para empresa de diseño "Disema", con operaciones básicas CRUD y uso de html, JQ, JS, php y css

Disema System Sistema web para empresa de diseño "Disema", con operaciones básicas CRUD y uso de html, JQ, JS, php y css Para su correcto uso, deberá

null 1 Jan 12, 2022
Exemplos de uso de algumas API's do site APIBRASIL

Exemplos de uso A ideia desses exemplos é otimizar o tempo de código dos usuários auxiliando na integração com a plataforma. Canais de discussão Obter

APIBrasil 5 May 29, 2023