Ir ao conteúdo
  • Cadastre-se

DEV-C++ e gcc = ERROR


leonardoadoado

Posts recomendados

Eu vi um tutorial aqui sobre como instalar a biblioteca CAIRO. Então,eu fiz isso, gravei os arquivos nas pastas corretas. E na opção de link eu coloquei -lcairo.dll. O algorítimo compilou sem erro algum e gerou o executável.

Contudo, creio que há algum problema com o algorítimo. Uma vez que se tem um arquivo txt para ser convertido, o executável está fazendo tudo certo, somente está dando erro na parte final que contêm os comandos:

cairo_show_page(cr);

cairo_surface_destroy(surface);

cairo_destroy(cr);

Eu testei colocando uma pausa nesses comandos. Os três dão erro no programa.

Sendo assim, o arquivo pdf é até gerado, mas é gerado corrompido. O que poderia ser? Obrigado e aguardo.

Abaixo está o algorítimo.


#include <cairo-pdf.h>
#include<stdio.h>
#include<conio.h>
#include<conio2.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>




int main(int argc, char **argv) {


//definindo vars, ponteiro surface e cr
float position;
char str[200];

FILE *fp;

cairo_surface_t *surface;
cairo_t *cr;
//definindo nome do arquivo
surface = cairo_pdf_surface_create("Inventário.pdf", 504, 648);
//defindo a função create do cairo
cr = cairo_create(surface);
//definindo cor da fonte,aqui usado padrão RGB(red,green,blue) definimos o "blue" setamos para 255
cairo_set_source_rgb(cr, 0, 0, 0);
//definindo tipo da fonte
cairo_select_font_face (cr, "Sans", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL);
//definindo tamanho da fonte
cairo_set_font_size (cr, 5.0);
//definindo posição inicial da fonte
position=50.0;
//abrir file ler linha por linha e escrever no PDF
fp = fopen("arquivo.txt", "r");
if(!fp) return 1;
while(fgets(str,sizeof(str),fp) != NULL) {
int len = strlen(str)-1;
if(str[len] == '\n') str[len] = 0;
printf("\x0a %s", str);
cairo_move_to(cr, 8.0, position);
cairo_show_text(cr, str);
//variavel position sempre atribui o tamanho da fonte inicial no caso 20
//assim temos uma lógica simples fazendo pular a linha
position+=8;
}
fclose(fp);

cairo_show_page(cr);
//destruindo ponteiros definidos
cairo_surface_destroy(surface);
cairo_destroy(cr);

return 0;
}
#include <cairo.h>

Link para o comentário
Compartilhar em outros sites

Verificando aqui o algorítimo novamente, o problema não é nos comandos cairo_show_page(cr); cairo_surface_destroy(surface);cairo_destroy(cr);

O problema está na rotina que inseri os dados no documento pdf.

Quando eu retiro essa parte do algorítimo, o documento pdf é gerado correto, contudo, com a página em branco. Sendo assim, eu suponho que o erro está nessa parte do algorítimo.

Não estou conseguindo corrigir o erro. Quem puder me ajudar, eu agradeço.Abaixo está a parte do código que acho que está com erro, e na mensagem anterior está o código completo.


for(i=0; i<7; i++)
{
cairo_move_to(cr, 10.0, position);
cairo_show_text(cr, banner[i]);
//variavel position sempre atribui o tamanho da fonte inicial no caso 20
//assim temos uma lógica simples fazendo pular a linha
position+=20;
}

Link para o comentário
Compartilhar em outros sites

Está certo. Estava tentando escrever um algorítimo que convertesse um arquivo txt para pdf.

Então, para isso, deve-se instalar a biblioteca CAIRO. Eu uso o DEC-C++ e o CODE:BLOCKS.

Para que seja possível escrever qualquer coisa em pdf usando C++ baixe a biblioteca CAIRO e outros arquivos no site http://www.gtk.org/download/win32.php - No site, clique no link RUN-TIME das opções....

ZLIB

CAIRO

LIBPNG

FREETYPE

FONTCONFIG

EXPAT

GETTEXT-RUNTIME

Após baixar, entra na pasta bin de cada um e extraia os aquivos dll contidos lá e grave-os ou na pasta bin de seu compilador ou na pasta C:\Windows\system do seu windows.

Após isso, faça o download do link DEV de CAIRO. Salve todos os dados lá em uma pasta e faça seu compilador encontrar a pasta include e a pasta lib dessa pasta.

Feito isso, na opcao LINKER do compilador digite -lcairo.dll para fazer o compilador encontrar esse caminho.

Pronto. Feito isso, é possível inserir dados e criar arquivo pdf, converter txt para pdf e etc usando C++.

Eis um exemplo de código que usa essa biblioteca e inseri dados num arquivo pdf usando C++



#include <cairo-pdf.h>
#include <cairo.h>

int main(int argc, char **argv) {

float position;

cairo_surface_t *surface;
cairo_t *cr;

surface = cairo_pdf_surface_create("line.pdf", 504, 648);

cr = cairo_create(surface);

position=50.0;

cairo_move_to(cr, 8.0, position);
cairo_show_text(cr, "This is line 1");

cairo_show_page(cr);

cairo_surface_destroy(surface);
cairo_destroy(cr);

}

valeu, qualquer dúvida. É só postar.

Pergunto aos moderadores se não seria melhor remover essa minha explicação daqui e colocar lá no tópico que eu criei e que fala sobre a conversão de arquivo txt em pdf usando c++???

Não seria melhor remover essa explicação que dei e colocá-la lá no outro tópico que criei que aborda sobre conversão de aquivo txt em pdf???

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!