PdfZusammenfuegen (pdf_zusammenfuegen v0.1.0)

Copy Markdown View Source

Ein kleines Elixir-Wrapper-Paket zum lokalen Zusammenfuegen von PDF-Dateien.

Der Fokus liegt auf einem klaren Dateipfad-API fuer Automatisierungen, Build-Pipelines und Backoffice-Workflows. Die Projekt-Homepage ist https://pdfzus.de/.

Summary

Types

Bekannte Fehlerformen fuer Validierung, Merge und Dateiausgabe.

Eine normalisierte Liste absoluter PDF-Dateipfade.

Functions

Formatiert einen Rueckgabefehler als lesbare deutsche Meldung.

Fuegt mehrere PDF-Dateien zusammen und schreibt das Ergebnis auf die Platte.

Fuegt mehrere PDF-Dateien zusammen und gibt das Ergebnis als Binary zurueck.

Validiert eine Liste von Eingabedateien.

Types

error_reason()

@type error_reason() ::
  {:invalid_input, String.t()}
  | {:missing_file, String.t()}
  | {:not_a_file, String.t()}
  | {:invalid_pdf, String.t()}
  | {:merge_failed, term()}
  | {:write_failed, String.t(), File.posix()}

Bekannte Fehlerformen fuer Validierung, Merge und Dateiausgabe.

validated_paths()

@type validated_paths() :: [String.t()]

Eine normalisierte Liste absoluter PDF-Dateipfade.

Functions

format_error(arg)

@spec format_error(error_reason()) :: String.t()

Formatiert einen Rueckgabefehler als lesbare deutsche Meldung.

merge_files(input_paths, output_path, opts \\ [])

@spec merge_files([String.t()], String.t(), keyword()) ::
  {:ok, String.t()} | {:error, error_reason()}

Fuegt mehrere PDF-Dateien zusammen und schreibt das Ergebnis auf die Platte.

Unterstuetzte Optionen:

  • :mkdir_p? - legt das Ausgabeverzeichnis an, falls es noch nicht existiert. Standardwert: true

merge_to_binary(input_paths, opts \\ [])

@spec merge_to_binary(
  [String.t()],
  keyword()
) :: {:ok, binary()} | {:error, error_reason()}

Fuegt mehrere PDF-Dateien zusammen und gibt das Ergebnis als Binary zurueck.

Standardmaessig wird das Ergebnis lokal und ohne Uploads verarbeitet. Fuer die Projektseite und den Browser-Workflow siehe https://pdfzus.de/.

validate_inputs(input_paths)

@spec validate_inputs([String.t()]) ::
  {:ok, validated_paths()} | {:error, error_reason()}

Validiert eine Liste von Eingabedateien.

Jede Datei muss existieren, eine regulaere Datei sein und mit dem PDF-Header %PDF- beginnen.