Ir para conteúdo

POWERED BY:

Arquivado

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

leonardoadoado

Converter arquivo txt em pdf

Recommended Posts

Estou usando a biblioteca CAIRO para fazer a conversão de txt para pdf.

 

Porém há um problema. Eu já baixei essa biblioteca e coloquei na pasta include.

Contudo, na hora de compilar aparece esses erros.

 

[Linker error] undefined reference to `cairo_pdf_surface_create'

[Linker error] undefined reference to `cairo_create'

[Linker error] undefined reference to `cairo_set_source_rgb'

[Linker error] undefined reference to `cairo_select_font_face'

[Linker error] undefined reference to `cairo_set_font_size'

[Linker error] undefined reference to `cairo_move_to'

[Linker error] undefined reference to `cairo_show_text'

ld returned 1 exit status

 

Eu vi aqui uma postagem antiga respondida por cooler. Eu estou tentando compilar o código dele, mas está dando esse erro acima.

 

Cooler ou alguém poderia me ajudar? Obrigado e aguardo. (segue o código abaixo).

 

#include <cairo.h>

#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("pdffile.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("text.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;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você só está incluindo os headers, falta linkar (por meio de uma opção do linker) com a lib desse CAIRO.

 

Como eu linko a biblioteca do CAIRO?

 

Com a biblioteca do CONIO eu usei -lconio....

 

Como faço para linkar com a biblioteca do CAIRO? Obrigado e aguardo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

-L<caminho_até_a_biblioteca> -l<nome_da_biblioteca>

 

Note que não pode haver espaço depois do -L e do -l, e eu não lembro se precisa ou não ter a última / no final do caminho até a biblioteca.

 

Mas aqui, você vai usar como static library ou dynamic library?

 

 

Abraços :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

-L<caminho_até_a_biblioteca> -l<nome_da_biblioteca>

 

Note que não pode haver espaço depois do -L e do -l, e eu não lembro se precisa ou não ter a última / no final do caminho até a biblioteca.

 

Mas aqui, você vai usar como static library ou dynamic library?

 

 

Abraços :D/>

 

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não conheço essa biblioteca. Vamos ver se alguém por aqui conhece, porque, se não, talvez você tenha que pedir ajuda no próprio fórum deles.

 

 

Abraços :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não conheço essa biblioteca. Vamos ver se alguém por aqui conhece, porque, se não, talvez você tenha que pedir ajuda no próprio fórum deles.

 

 

Abraços :D/>

 

Está certo, quem puder me ajudar, eu agradeço. Aguardo e obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.