Changes between Version 3 and Version 4 of Docs/825gen2/Dev/Devices/USB/PrintersCUPS


Ignore:
Timestamp:
01/12/24 12:29:53 (10 months ago)
Author:
Don Wilson
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Docs/825gen2/Dev/Devices/USB/PrintersCUPS

    v3 v4  
    114114
    115115cardinal_logo.bmp
     116
     117Printed successfully but rotated and enlarged
     118
     119Found an example of cups printing on stackoverflow.com. After compile the example for the 825 and after making several changing get it to work to programatically print a ticket.
     120
     121{{{
     122#include <stdio.h>
     123#include <cairo.h>
     124#include <cairo-ps.h>
     125#include <cups/cups.h>
     126
     127#include "cairobmp.h"
     128
     129#define WIDTH 320
     130#define HEIGHT 500
     131
     132
     133#define TEST_BMP_FILENAME "/tmp/tkt9.bmp"
     134
     135
     136int main(int argc, char** argv) {
     137
     138  int n;
     139
     140  char tmpFilepath[] = "/tmp/tktprtXXXXXX";
     141
     142  mkstemp(tmpFilepath);
     143 printf("tmpFilename [%s]\n", tmpFilepath);
     144
     145
     146  // cairo_surface_t* surface = cairo_ps_surface_create(tmpfilename, WIDTH, HEIGHT);
     147  cairo_surface_t* surface = cairo_image_surface_create(/*CAIRO_FORMAT_ARGB32*/ /*CAIRO_FORMAT_RGB24*/  CAIRO_FORMAT_A1, WIDTH, HEIGHT);
     148  printf("after surface create %d\n", cairo_surface_get_type(surface));
     149  cairo_t *context = cairo_create(surface);
     150
     151
     152  LoadBMPToSurface("/usr/images/bird.bmp", surface, 0, 0);
     153
     154  // draw some text
     155  cairo_select_font_face(context, "Arial Black", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL);
     156  cairo_set_font_size(context, 30);
     157  int x = 20;
     158  int y = 140;
     159  cairo_move_to(context, x, y);
     160  cairo_show_text(context, "Item 1"); // the text we got as a parameter
     161  y += 30;
     162  cairo_move_to(context, x, y);
     163  cairo_show_text(context, "Item 2"); // the text we got as a parameter
     164  y += 30;
     165  cairo_move_to(context, x, y);
     166  cairo_show_text(context, "Item 3"); // the text we got as a parameter
     167
     168  // draw a dotted box
     169  const double pattern[] = {15.0, 10.0};
     170  cairo_set_dash(context, pattern, 2, 0);
     171  cairo_set_line_width(context, 5);
     172  cairo_rectangle(context, 5, 105, 280, 300);
     173  cairo_stroke(context);
     174
     175  // finish up
     176  cairo_show_page(context);
     177  cairo_destroy(context);
     178  cairo_surface_flush(surface);
     179
     180   CairoSurfaceToBMP(surface, /*"/tmp/tkt9.bmp"*/ tmpFilepath);
     181
     182 // n = cairo_surface_write_to_png (surface, "/tmp/tkt.png");
     183 // printf("write_to_png result %d\n", n);
     184
     185
     186  cairo_surface_destroy(surface);
     187
     188  const char* printerName = cupsGetDefault();
     189  printf("printer [%s]\n", printerName);
     190
     191  // cupsGetDefault is returning NULL
     192  printerName = "STARSK1_311";
     193  n = cupsPrintFile(printerName, tmpFilepath, "cairo PS", 0, NULL);
     194  // return value is job ID
     195  printf("cupsPrintFile result %d\n", n);
     196
     197  //unlink(tmpFilepath);
     198
     199  return 0;
     200}
     201
     202}}}
     203
     204
     205