diff --git a/utils/pdftoppm.1 b/utils/pdftoppm.1 index 2321d6d..7f88b6d 100644 --- a/utils/pdftoppm.1 +++ b/utils/pdftoppm.1 @@ -102,6 +102,18 @@ Specifies the TIFF compression type. This defaults to "none". Enable or disable FreeType (a TrueType / Type 1 font rasterizer). This defaults to "yes". .TP +.BI \-thinlinemode " none | solid | shape" +Specifies the thin line mode. This defaults to "none". +.TP +"solid": +adjust lines with a width less than one pixel to pixel boundary +and paint it with a width of one pixel. +.TP +"shape": +adjust lines with a width less than one pixel to pixel boundary +and paint it with a width of one pixel but with a shape in proportion +to its width. +.TP .BI \-aa " yes | no" Enable or disable font anti-aliasing. This defaults to "yes". .TP diff --git a/utils/pdftoppm.cc b/utils/pdftoppm.cc index 73f337c..a3d4d10 100644 --- a/utils/pdftoppm.cc +++ b/utils/pdftoppm.cc @@ -94,6 +94,8 @@ static char vectorAntialiasStr[16] = ""; static char ownerPassword[33] = ""; static char userPassword[33] = ""; static char TiffCompressionStr[16] = ""; +static char thinLineModeStr[8] = ""; +static SplashThinLineMode thinLineMode = splashThinLineDefault; #ifdef UTILS_USE_PTHREADS static int numberOfJobs = 1; #endif // UTILS_USE_PTHREADS @@ -169,6 +171,8 @@ static const ArgDesc argDesc[] = { {"-freetype", argString, enableFreeTypeStr, sizeof(enableFreeTypeStr), "enable FreeType font rasterizer: yes, no"}, #endif + {"-thinlinemode", argString, thinLineModeStr, sizeof(thinLineModeStr), + "set thin line mode: none, solid, shape. Default: none"}, {"-aa", argString, antialiasStr, sizeof(antialiasStr), "enable font anti-aliasing: yes, no"}, @@ -283,7 +287,7 @@ static void processPageJobs() { #if SPLASH_CMYK (jpegcmyk || overprint) ? splashModeDeviceN8 : #endif - splashModeRGB8, 4, gFalse, *pageJob.paperColor); + splashModeRGB8, 4, gFalse, *pageJob.paperColor, gTrue, gTrue, thinLineMode); splashOut->startDoc(pageJob.doc); savePageSlice(pageJob.doc, splashOut, pageJob.pg, x, y, w, h, pageJob.pg_w, pageJob.pg_h, pageJob.ppmFile); @@ -368,6 +372,15 @@ int main(int argc, char *argv[]) { fprintf(stderr, "Bad '-aaVector' value on command line\n"); } } + if (thinLineModeStr[0]) { + if (strcmp(thinLineModeStr, "solid") == 0) { + thinLineMode = splashThinLineSolid; + } else if (strcmp(thinLineModeStr, "shape") == 0) { + thinLineMode = splashThinLineShape; + } else if (strcmp(thinLineModeStr, "none") != 0) { + fprintf(stderr, "Bad '-thinlinemode' value on command line\n"); + } + } if (quiet) { globalParams->setErrQuiet(quiet); } @@ -444,7 +457,7 @@ int main(int argc, char *argv[]) { (jpegcmyk || overprint) ? splashModeDeviceN8 : #endif splashModeRGB8, 4, - gFalse, paperColor); + gFalse, paperColor, gTrue, gTrue, thinLineMode); splashOut->startDoc(doc); #endif // UTILS_USE_PTHREADS