@heripo/pdf-parser 0.2.2 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -705,7 +705,13 @@ var DoclingServer = class _DoclingServer {
705
705
  await _DoclingServer.killProcessOnPort(this.logger, this.port);
706
706
  }
707
707
  const doclingServePath = join(this.venvPath, "bin", "docling-serve");
708
- const args = ["run", "--port", this.port.toString()];
708
+ const args = [
709
+ "run",
710
+ "--host",
711
+ "127.0.0.1",
712
+ "--port",
713
+ this.port.toString()
714
+ ];
709
715
  this.logger.info(
710
716
  "[DoclingEnvironment] Starting docling-serve on port",
711
717
  this.port
@@ -2875,7 +2881,8 @@ var ChunkedPDFConverter = class {
2875
2881
  };
2876
2882
 
2877
2883
  // src/core/docling-conversion-executor.ts
2878
- import { existsSync as existsSync4, rmSync as rmSync3 } from "fs";
2884
+ import { existsSync as existsSync4, mkdtempSync, rmSync as rmSync3 } from "fs";
2885
+ import { tmpdir } from "os";
2879
2886
  import { join as join7 } from "path";
2880
2887
  var DoclingConversionExecutor = class {
2881
2888
  constructor(logger, client, timeout) {
@@ -2905,89 +2912,85 @@ var DoclingConversionExecutor = class {
2905
2912
  this.logger.info(
2906
2913
  "[PDFConverter] Results will be returned as ZIP to avoid memory limits"
2907
2914
  );
2908
- const { httpUrl, server } = await this.resolveUrl(url);
2915
+ const outputDir = join7(process.cwd(), "output", reportId);
2916
+ const workDir = mkdtempSync(join7(tmpdir(), "heripo-docling-"));
2917
+ const zipPath = join7(workDir, "result.zip");
2918
+ const extractDir = join7(workDir, "result_extracted");
2909
2919
  try {
2910
- const task = await this.startConversionTask(httpUrl, conversionOptions);
2911
- await trackTaskProgress(
2912
- task,
2913
- this.timeout,
2914
- this.logger,
2915
- "[PDFConverter]",
2916
- {
2917
- showDetailedProgress: true
2918
- }
2919
- );
2920
- if (abortSignal?.aborted) {
2921
- this.logger.info(
2922
- "[PDFConverter] Conversion aborted after docling completion"
2920
+ const { httpUrl, server } = await this.resolveUrl(url);
2921
+ try {
2922
+ const task = await this.startConversionTask(httpUrl, conversionOptions);
2923
+ await trackTaskProgress(
2924
+ task,
2925
+ this.timeout,
2926
+ this.logger,
2927
+ "[PDFConverter]",
2928
+ {
2929
+ showDetailedProgress: true
2930
+ }
2923
2931
  );
2924
- const error = new Error("PDF conversion was aborted");
2925
- error.name = "AbortError";
2926
- throw error;
2927
- }
2928
- const cwd2 = process.cwd();
2929
- const zipPath2 = join7(cwd2, "result.zip");
2930
- await downloadTaskResult(
2931
- this.client,
2932
- task.taskId,
2933
- zipPath2,
2934
- this.logger,
2935
- "[PDFConverter]"
2936
- );
2937
- } finally {
2938
- if (server) {
2939
- this.logger.info("[PDFConverter] Stopping local file server...");
2940
- await server.stop();
2941
- }
2942
- }
2943
- const cwd = process.cwd();
2944
- const zipPath = join7(cwd, "result.zip");
2945
- const extractDir = join7(cwd, "result_extracted");
2946
- const outputDir = join7(cwd, "output", reportId);
2947
- try {
2948
- await this.processConvertedFiles(zipPath, extractDir, outputDir);
2949
- if (url.startsWith("file://")) {
2950
- await renderAndUpdatePageImages(
2951
- url.slice(7),
2952
- outputDir,
2932
+ if (abortSignal?.aborted) {
2933
+ this.logger.info(
2934
+ "[PDFConverter] Conversion aborted after docling completion"
2935
+ );
2936
+ const error = new Error("PDF conversion was aborted");
2937
+ error.name = "AbortError";
2938
+ throw error;
2939
+ }
2940
+ await downloadTaskResult(
2941
+ this.client,
2942
+ task.taskId,
2943
+ zipPath,
2953
2944
  this.logger,
2954
2945
  "[PDFConverter]"
2955
2946
  );
2956
- } else {
2957
- this.logger.warn(
2958
- "[PDFConverter] Page image rendering skipped: only supported for local files (file:// URLs)"
2959
- );
2947
+ } finally {
2948
+ if (server) {
2949
+ this.logger.info("[PDFConverter] Stopping local file server...");
2950
+ await server.stop();
2951
+ }
2960
2952
  }
2961
- if (abortSignal?.aborted) {
2962
- this.logger.info("[PDFConverter] Conversion aborted before callback");
2963
- const error = new Error("PDF conversion was aborted");
2964
- error.name = "AbortError";
2965
- throw error;
2953
+ try {
2954
+ await this.processConvertedFiles(zipPath, extractDir, outputDir);
2955
+ if (url.startsWith("file://")) {
2956
+ await renderAndUpdatePageImages(
2957
+ url.slice(7),
2958
+ outputDir,
2959
+ this.logger,
2960
+ "[PDFConverter]"
2961
+ );
2962
+ } else {
2963
+ this.logger.warn(
2964
+ "[PDFConverter] Page image rendering skipped: only supported for local files (file:// URLs)"
2965
+ );
2966
+ }
2967
+ if (abortSignal?.aborted) {
2968
+ this.logger.info("[PDFConverter] Conversion aborted before callback");
2969
+ const error = new Error("PDF conversion was aborted");
2970
+ error.name = "AbortError";
2971
+ throw error;
2972
+ }
2973
+ this.logger.info("[PDFConverter] Executing completion callback...");
2974
+ await onComplete(outputDir);
2975
+ const duration = Date.now() - startTime;
2976
+ this.logger.info("[PDFConverter] Conversion completed successfully!");
2977
+ this.logger.info("[PDFConverter] Total time:", duration, "ms");
2978
+ } finally {
2979
+ if (cleanupAfterCallback) {
2980
+ this.logger.info(
2981
+ "[PDFConverter] Cleaning up output directory:",
2982
+ outputDir
2983
+ );
2984
+ if (existsSync4(outputDir)) {
2985
+ rmSync3(outputDir, { recursive: true, force: true });
2986
+ }
2987
+ } else {
2988
+ this.logger.info("[PDFConverter] Output preserved at:", outputDir);
2989
+ }
2966
2990
  }
2967
- this.logger.info("[PDFConverter] Executing completion callback...");
2968
- await onComplete(outputDir);
2969
- const duration = Date.now() - startTime;
2970
- this.logger.info("[PDFConverter] Conversion completed successfully!");
2971
- this.logger.info("[PDFConverter] Total time:", duration, "ms");
2972
2991
  } finally {
2973
2992
  this.logger.info("[PDFConverter] Cleaning up temporary files...");
2974
- if (existsSync4(zipPath)) {
2975
- rmSync3(zipPath, { force: true });
2976
- }
2977
- if (existsSync4(extractDir)) {
2978
- rmSync3(extractDir, { recursive: true, force: true });
2979
- }
2980
- if (cleanupAfterCallback) {
2981
- this.logger.info(
2982
- "[PDFConverter] Cleaning up output directory:",
2983
- outputDir
2984
- );
2985
- if (existsSync4(outputDir)) {
2986
- rmSync3(outputDir, { recursive: true, force: true });
2987
- }
2988
- } else {
2989
- this.logger.info("[PDFConverter] Output preserved at:", outputDir);
2990
- }
2993
+ rmSync3(workDir, { recursive: true, force: true });
2991
2994
  }
2992
2995
  return null;
2993
2996
  }
@@ -3042,7 +3045,7 @@ var DoclingConversionExecutor = class {
3042
3045
 
3043
3046
  // src/core/image-pdf-converter.ts
3044
3047
  import { existsSync as existsSync5, rmSync as rmSync4 } from "fs";
3045
- import { tmpdir } from "os";
3048
+ import { tmpdir as tmpdir2 } from "os";
3046
3049
  import { join as join8 } from "path";
3047
3050
  var ImagePdfConverter = class {
3048
3051
  constructor(logger) {
@@ -3059,7 +3062,7 @@ var ImagePdfConverter = class {
3059
3062
  */
3060
3063
  async convert(pdfUrl, reportId) {
3061
3064
  const timestamp = Date.now();
3062
- const tempDir = tmpdir();
3065
+ const tempDir = tmpdir2();
3063
3066
  const inputPath = join8(tempDir, `${reportId}-${timestamp}-input.pdf`);
3064
3067
  const outputPath = join8(tempDir, `${reportId}-${timestamp}-image.pdf`);
3065
3068
  try {