Git Product home page Git Product logo

jasperphp-openboleto's Introduction

JasperPHP - OpenBoleto

Considere doar fundos para nos apoiar

qr-code-plus

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:

"openboleto/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

jasperphp-openboleto's People

Contributors

erickmff avatar rctnet avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jasperphp-openboleto's Issues

O parametro logoPath não funciona

olá colegas estou tentando usar o parâmetro logoPath para por a logo da empresa mas não está funcionando, alguém sabe o que pode ser ?

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 :)

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

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!".

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

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á.

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!

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.

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.

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

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

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?

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?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.