Программа рендерит ps и pdf. В pdf текст выбрать и скопировать можно, в ps почему-то нет. Внутри видно, что текст растеризуется и ниже растра еще раз пишется. Просматриваю файлы в Evince. Как заставить cairo не растеризовать текст?
// gcc -Wall -o cairo_print cairo_print.c `pkg-config --cflags --libs cairo`
#include <stdio.h>
#include <cairo.h>
#include <cairo-ps.h>
#include <cairo-pdf.h>
// A4 width, height in points, from GhostView manual:
// http://www.gnu.org/software/gv/manual/html_node/Paper-Keywords-and-paper-size-in-points.html
#define WIDTH 595
#define HEIGHT 842
void draw(cairo_t *context, char** argv) {
cairo_select_font_face(context, "Liberation Serif", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL);
cairo_set_font_size(context, 30);
cairo_move_to(context, WIDTH/2, HEIGHT/2);
cairo_show_text(context, argv[1]);
}
void end(cairo_surface_t* surface, cairo_t *context) {
cairo_show_page(context);
cairo_destroy(context);
cairo_surface_flush(surface);
cairo_surface_destroy(surface);
}
int main(int argc, char** argv) {
if (argc!= 2){
fprintf (stderr, "usage: %s word\n", argv[0]);
return 1;
}
cairo_surface_t* surface;
cairo_t *context;
surface = cairo_ps_surface_create("out.ps", WIDTH, HEIGHT);
context = cairo_create(surface);
draw(context, argv);
end(surface, context);
surface = cairo_pdf_surface_create("out.pdf", WIDTH, HEIGHT);
context = cairo_create(surface);
draw(context, argv);
end(surface, context);
return 0;
}