134 l_float32 scalefactor,
141l_int32 maxsmallset = 25;
143PIX *pixs, *pix1, *pix2;
148 return ERROR_INT(
"sa not defined", __func__, 1);
150 return ERROR_INT(
"fileout not defined", __func__, 1);
151 if (scalefactor <= 0) scalefactor = 1.0;
152 if (scalefactor > 2.0) {
153 L_WARNING(
"scalefactor %f too big; setting to 2.0\n", __func__,
157 if (quality <= 0) quality = 50;
159 L_WARNING(
"quality %d too low; setting to 25\n", __func__, quality);
163 L_WARNING(
"quality %d too high; setting to 95\n", __func__, quality);
166 if ((n = sarrayGetCount(sa)) == 0)
167 return ERROR_INT(
"sa is empty", __func__, 1);
169 if (n <= maxsmallset)
170 pixa1 = pixaCreate(n);
172 pixac1 = pixacompCreate(n);
173 for (i = 0; i < n; i++) {
175 lept_stderr(
"page: ");
176 else if (i % 10 == 0)
177 lept_stderr(
"%d . ", i);
178 fname = sarrayGetString(sa, i,
L_NOCOPY);
179 pixs = pixRead(fname);
182 pixColorFraction(pixs, 40, 224, 80, 4, NULL, &colorfract);
183 if (colorfract > 0.01)
184 pix1 = pixClone(pixs);
186 pix1 = pixConvertTo1(pixs, 180);
188 pix1 = pixConvertTo1(pixs, 180);
191 pix1 = pixClone(pixs);
193 if (scalefactor == 1.0)
194 pix2 = pixClone(pix1);
196 pix2 = pixScale(pix1, scalefactor, scalefactor);
197 if (n <= maxsmallset) {
200 pixacompAddPix(pixac1, pix2, IFF_DEFAULT);
210 lept_stderr(
"\nWrite output to %s\n", fileout);
211 if (n <= maxsmallset)
212 pix1 = pixaGetPix(pixa1, 0,
L_CLONE);
214 pix1 = pixacompGetPix(pixac1, 0);
215 pixInferResolution(pix1, 11.0, &res);
217 if (strcmp(title,
"none") == 0)
219 if (n <= maxsmallset) {
226 pixacompDestroy(&pixac1);
283l_int32 maxsmallset = 200;
289 return ERROR_INT(
"sa not defined", __func__, 1);
291 return ERROR_INT(
"fileout not defined", __func__, 1);
292 if ((n = sarrayGetCount(sa)) == 0)
293 return ERROR_INT(
"sa is empty", __func__, 1);
295 if (n <= maxsmallset)
296 pixa1 = pixaCreate(n);
298 pixac1 = pixacompCreate(n);
299 for (i = 0; i < n; i++) {
301 lept_stderr(
"page: ");
302 else if (i % 10 == 0)
303 lept_stderr(
"%d . ", i);
304 fname = sarrayGetString(sa, i,
L_NOCOPY);
305 pixs = pixRead(fname);
306 pix1 = pixCropImage(pixs, lr_clear, tb_clear, edgeclean,
307 lr_border, tb_border, maxwiden, printwiden,
311 L_ERROR(
"pix1 not made for i = %d\n", __func__, i);
314 if (n <= maxsmallset)
317 pixacompAddPix(pixac1, pix1, IFF_TIFF_G4);
323 lept_stderr(
"\nWrite output to %s\n", fileout);
324 if (n <= maxsmallset)
325 pix1 = pixaGetPix(pixa1, 0,
L_CLONE);
327 pix1 = pixacompGetPix(pixac1, 0);
328 pixInferResolution(pix1, 11.0, &res);
330 if (strcmp(title,
"none") == 0)
332 if (n <= maxsmallset) {
333 pixaConvertToPdf(pixa1, res, 1.0,
L_G4_ENCODE, 0, title, fileout);
336 pixacompConvertToPdf(pixac1, res, 1.0,
L_G4_ENCODE, 0, title, fileout);
337 pixacompDestroy(&pixac1);
394l_int32 maxsmallset = 200;
400 return ERROR_INT(
"sa not defined", __func__, 1);
402 return ERROR_INT(
"fileout not defined", __func__, 1);
403 if (res == 0) res = 300;
404 if (res != 300 && res != 600) {
405 L_ERROR(
"invalid res = %d; res must be in {0, 300, 600}\n",
409 if (contrast < 1 || contrast > 10) {
410 L_ERROR(
"invalid contrast = %d; contrast must be in [1...10]\n",
414 if (rotation < 0 || rotation > 3) {
415 L_ERROR(
"invalid rotation = %d; rotation must be in {0,1,2,3}\n",
420 L_ERROR(
"invalid opensize = %d; opensize must be <= 3\n",
424 scale = (res == 300) ? 1 : 2;
425 if ((n = sarrayGetCount(sa)) == 0)
426 return ERROR_INT(
"sa is empty", __func__, 1);
428 if (n <= maxsmallset)
429 pixa1 = pixaCreate(n);
431 pixac1 = pixacompCreate(n);
432 for (i = 0; i < n; i++) {
434 lept_stderr(
"page: ");
435 else if (i % 10 == 0)
436 lept_stderr(
"%d . ", i);
437 fname = sarrayGetString(sa, i,
L_NOCOPY);
438 if ((pixs = pixRead(fname)) == NULL) {
439 L_ERROR(
"pixs not read from %s\n", __func__, fname);
443 pix1 = pixCleanImage(pixs, contrast, rotation, scale, opensize);
444 if (n <= maxsmallset) {
447 pixacompAddPix(pixac1, pix1, IFF_TIFF_G4);
456 lept_stderr(
"Write output to %s\n", fileout);
457 if (n <= maxsmallset)
458 pix1 = pixaGetPix(pixa1, 0,
L_CLONE);
460 pix1 = pixacompGetPix(pixac1, 0);
461 pixInferResolution(pix1, 11.0, &res);
463 if (strcmp(title,
"none") == 0)
466 if (n <= maxsmallset) {
467 pixaConvertToPdf(pixa1, res, 1.0,
L_G4_ENCODE, 0, title, fileout);
470 pixacompConvertToPdf(pixac1, res, 1.0,
L_G4_ENCODE, 0, title, fileout);
471 pixacompDestroy(&pixac1);
l_ok cropFilesToPdf(SARRAY *sa, l_int32 lr_clear, l_int32 tb_clear, l_int32 edgeclean, l_int32 lr_border, l_int32 tb_border, l_float32 maxwiden, l_int32 printwiden, const char *title, const char *fileout)
cropFilesToPdf()
l_ok cleanTo1bppFilesToPdf(SARRAY *sa, l_int32 res, l_int32 contrast, l_int32 rotation, l_int32 opensize, const char *title, const char *fileout)
cleanTo1bppFilesToPdf()
l_ok compressFilesToPdf(SARRAY *sa, l_int32 onebit, l_int32 savecolor, l_float32 scalefactor, l_int32 quality, const char *title, const char *fileout)
compressFilesToPdf()