133 l_float32 scalefactor,
140l_int32 maxsmallset = 25;
142PIX *pixs, *pix1, *pix2;
147 return ERROR_INT(
"sa not defined", __func__, 1);
149 return ERROR_INT(
"fileout not defined", __func__, 1);
150 if (scalefactor <= 0) scalefactor = 1.0;
151 if (quality <= 0) quality = 50;
153 L_WARNING(
"quality %d too low; setting to 25\n", __func__, quality);
157 L_WARNING(
"quality %d too high; setting to 95\n", __func__, quality);
160 if ((n = sarrayGetCount(sa)) == 0)
161 return ERROR_INT(
"sa is empty", __func__, 1);
163 if (n <= maxsmallset)
164 pixa1 = pixaCreate(n);
166 pixac1 = pixacompCreate(n);
167 for (i = 0; i < n; i++) {
169 lept_stderr(
"page: ");
170 else if (i % 10 == 0)
171 lept_stderr(
"%d . ", i);
172 fname = sarrayGetString(sa, i,
L_NOCOPY);
173 pixs = pixRead(fname);
176 pixColorFraction(pixs, 40, 224, 80, 4, NULL, &colorfract);
177 if (colorfract > 0.01)
178 pix1 = pixClone(pixs);
180 pix1 = pixConvertTo1(pixs, 180);
182 pix1 = pixConvertTo1(pixs, 180);
185 pix1 = pixClone(pixs);
187 if (scalefactor == 1.0)
188 pix2 = pixClone(pix1);
190 pix2 = pixScale(pix1, scalefactor, scalefactor);
191 if (n <= maxsmallset) {
194 pixacompAddPix(pixac1, pix2, IFF_DEFAULT);
204 lept_stderr(
"\nWrite output to %s\n", fileout);
205 if (n <= maxsmallset)
206 pix1 = pixaGetPix(pixa1, 0,
L_CLONE);
208 pix1 = pixacompGetPix(pixac1, 0);
209 pixInferResolution(pix1, 11.0, &res);
211 if (strcmp(title,
"none") == 0)
213 if (n <= maxsmallset) {
220 pixacompDestroy(&pixac1);
271l_int32 maxsmallset = 200;
277 return ERROR_INT(
"sa not defined", __func__, 1);
279 return ERROR_INT(
"fileout not defined", __func__, 1);
280 if ((n = sarrayGetCount(sa)) == 0)
281 return ERROR_INT(
"sa is empty", __func__, 1);
283 if (n <= maxsmallset)
284 pixa1 = pixaCreate(n);
286 pixac1 = pixacompCreate(n);
287 for (i = 0; i < n; i++) {
289 lept_stderr(
"page: ");
290 else if (i % 10 == 0)
291 lept_stderr(
"%d . ", i);
292 fname = sarrayGetString(sa, i,
L_NOCOPY);
293 pixs = pixRead(fname);
294 pix1 = pixCropImage(pixs, lr_clear, tb_clear, edgeclean,
295 lr_add, tb_add, maxwiden, NULL, NULL);
296 if (n <= maxsmallset)
299 pixacompAddPix(pixac1, pix1, IFF_TIFF_G4);
306 lept_stderr(
"\nWrite output to %s\n", fileout);
307 if (n <= maxsmallset)
308 pix1 = pixaGetPix(pixa1, 0,
L_CLONE);
310 pix1 = pixacompGetPix(pixac1, 0);
311 pixInferResolution(pix1, 11.0, &res);
313 if (strcmp(title,
"none") == 0)
315 if (n <= maxsmallset) {
316 pixaConvertToPdf(pixa1, res, 1.0,
L_G4_ENCODE, 0, title, fileout);
319 pixacompConvertToPdf(pixac1, res, 1.0,
L_G4_ENCODE, 0, title, fileout);
320 pixacompDestroy(&pixac1);
377l_int32 maxsmallset = 200;
383 return ERROR_INT(
"sa not defined", __func__, 1);
385 return ERROR_INT(
"fileout not defined", __func__, 1);
386 if (res == 0) res = 300;
387 if (res != 300 && res != 600) {
388 L_ERROR(
"invalid res = %d; res must be in {0, 300, 600}\n",
392 if (contrast < 1 || contrast > 10) {
393 L_ERROR(
"invalid contrast = %d; contrast must be in [1...10]\n",
397 if (rotation < 0 || rotation > 3) {
398 L_ERROR(
"invalid rotation = %d; rotation must be in {0,1,2,3}\n",
403 L_ERROR(
"invalid opensize = %d; opensize must be <= 3\n",
407 scale = (res == 300) ? 1 : 2;
408 if ((n = sarrayGetCount(sa)) == 0)
409 return ERROR_INT(
"sa is empty", __func__, 1);
411 if (n <= maxsmallset)
412 pixa1 = pixaCreate(n);
414 pixac1 = pixacompCreate(n);
415 for (i = 0; i < n; i++) {
417 lept_stderr(
"page: ");
418 else if (i % 10 == 0)
419 lept_stderr(
"%d . ", i);
420 fname = sarrayGetString(sa, i,
L_NOCOPY);
421 if ((pixs = pixRead(fname)) == NULL) {
422 L_ERROR(
"pixs not read from %s\n", __func__, fname);
426 pix1 = pixCleanImage(pixs, contrast, rotation, scale, opensize);
427 if (n <= maxsmallset) {
430 pixacompAddPix(pixac1, pix1, IFF_TIFF_G4);
439 lept_stderr(
"Write output to %s\n", fileout);
440 if (n <= maxsmallset)
441 pix1 = pixaGetPix(pixa1, 0,
L_CLONE);
443 pix1 = pixacompGetPix(pixac1, 0);
444 pixInferResolution(pix1, 11.0, &res);
446 if (strcmp(title,
"none") == 0)
449 if (n <= maxsmallset) {
450 pixaConvertToPdf(pixa1, res, 1.0,
L_G4_ENCODE, 0, title, fileout);
453 pixacompConvertToPdf(pixac1, res, 1.0,
L_G4_ENCODE, 0, title, fileout);
454 pixacompDestroy(&pixac1);
l_ok cropFilesToPdf(SARRAY *sa, l_int32 lr_clear, l_int32 tb_clear, l_int32 edgeclean, l_int32 lr_add, l_int32 tb_add, l_float32 maxwiden, 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()