]> git.donarmstrong.com Git - xournal.git/blobdiff - src/xo-print.c
Release 0.3.2.
[xournal.git] / src / xo-print.c
index 04493c9c010d59f3c4e79ae72173ec3154f557dd..cc2d4c150643a12a2e93f3a1d1618d6821f24f05 100644 (file)
@@ -7,6 +7,7 @@
 #include <libgnomeprint/gnome-print-job.h>
 #include <zlib.h>
 #include <string.h>
+#include <locale.h>
 
 #include "xournal.h"
 #include "xo-misc.h"
@@ -182,7 +183,7 @@ struct PdfObj *parse_pdf_object(char **ptr, char *eof)
   if (q!=p) {
     if (*q == '.') {
       obj->type = PDFTYPE_REAL;
-      obj->realval = strtod(p, ptr);
+      obj->realval = g_ascii_strtod(p, ptr);
       return obj;
     }
     if (ispdfspace(*q)) {
@@ -670,6 +671,7 @@ void pdf_draw_solid_background(struct Page *pg, GString *str)
   g_string_append_printf(str, 
     "%.2f %.2f %.2f rg 0 0 %.2f %.2f re f ",
     RGBA_RGB(pg->bg->color_rgba), pg->width, pg->height);
+  if (!ui.print_ruling) return;
   if (pg->bg->ruling == RULING_NONE) return;
   g_string_append_printf(str,
     "%.2f %.2f %.2f RG %.2f w ",
@@ -820,6 +822,7 @@ gboolean print_to_pdf(char *filename)
   
   f = fopen(filename, "w");
   if (f == NULL) return FALSE;
+  setlocale(LC_NUMERIC, "C");
   annot = FALSE;
   xref.data = NULL;
   uses_pdf = FALSE;
@@ -992,9 +995,15 @@ gboolean print_to_pdf(char *filename)
   g_free(xref.data);
   if (annot) {
     free_pdfobj(pdfinfo.trailerdict);
-    // ...
+    if (pdfinfo.pages!=NULL)
+      for (i=0; i<pdfinfo.npages; i++) {
+        free_pdfobj(pdfinfo.pages[i].resources);
+        free_pdfobj(pdfinfo.pages[i].mediabox);
+        free_pdfobj(pdfinfo.pages[i].contents);
+      }
   }
   
+  setlocale(LC_NUMERIC, "");
   if (fwrite(pdfbuf->str, 1, pdfbuf->len, f) < pdfbuf->len) {
     fclose(f);
     g_string_free(pdfbuf, TRUE);
@@ -1020,6 +1029,7 @@ void print_background(GnomePrintContext *gpc, struct Page *pg, gboolean *abort)
     gnome_print_setrgbcolor(gpc, RGBA_RGB(pg->bg->color_rgba));
     gnome_print_rect_filled(gpc, 0, 0, pg->width, pg->height);
 
+    if (!ui.print_ruling) return;
     if (pg->bg->ruling == RULING_NONE) return;
     gnome_print_setrgbcolor(gpc, RGBA_RGB(RULING_COLOR));
     gnome_print_setlinewidth(gpc, RULING_THICKNESS);