files()
Lädt die Dateien eines Dokumentobjekts vom Server über std.StoreInCacheById.
Wenn version_guid angegeben wird, werden die Dateien einer bestimmten früheren
Version über std.GetDocVersion abgerufen.
Das Dokument kann als Modell-Instanz oder direkt als numerische ID übergeben werden.
Optional können Dateien vor der Übertragung konvertiert oder Annotationen eingebrannt werden.
1. Signatur
-
Sync
-
Async
ecm.dms.files(
model: ECMDocumentModel | int,
*,
flags: int = 1,
convert: StoreInCacheByIdConversion = StoreInCacheByIdConversion.NONE,
when_cold_then_tiff: bool = False,
add_annotations: bool = False,
version_guid: str | None = None,
) -> list[JobResponseFile]
await ecm.dms.files(
model: ECMDocumentModel | int,
*,
flags: int = 1,
convert: StoreInCacheByIdConversion = StoreInCacheByIdConversion.NONE,
when_cold_then_tiff: bool = False,
add_annotations: bool = False,
version_guid: str | None = None,
) -> list[JobResponseFile]
2. Parameter
| Parameter | Standard | Beschreibung |
|---|---|---|
|
— |
|
|
|
Steuert, welche Dateien übertragen werden:
|
|
|
Optionale Konvertierung vor der Übertragung (
|
|
|
Bei |
|
|
Bei |
|
|
Optionale GUID einer bestimmten Dokumentversion. Wenn angegeben, werden die Dateien dieser Version über |
3. Rückgabewert
Liste von JobResponseFile-Objekten. Kleine Dateien werden als Byte-Array im Speicher gehalten,
größere Dateien werden in eine temporäre Datei auf dem Dateisystem geschrieben.
Eigenschaften und Methoden von JobResponseFile:
| Eigenschaft / Methode | Beschreibung |
|---|---|
|
Dateiname inkl. Endung (z.B. |
|
Dateiendung (z.B. |
|
Dateigröße in Bytes. |
|
Dateiinhalt als |
|
Schreibt die Datei auf den Datenträger. Ohne |
5. Beispiele
5.1. Dateien einer Modell-Instanz laden
-
Sync
-
Async
document = ecm.dms.get(InvoiceDocument, 12345)
for f in ecm.dms.files(document):
print(f.name, f.size())
content = f.bytes()
document = await ecm.dms.get(InvoiceDocument, 12345)
for f in await ecm.dms.files(document):
print(f.name, f.size())
content = f.bytes()
5.2. Dateien per plain ID laden
Ist die Dokument-ID bekannt, muss das Objekt nicht vollständig geladen werden:
-
Sync
-
Async
for f in ecm.dms.files(12345):
print(f.name, f.size())
for f in await ecm.dms.files(12345):
print(f.name, f.size())
5.3. Als PDF laden
Dokumente der Haupttypen 1–4 werden vor der Übertragung serverseitig als PDF konvertiert:
-
Sync
-
Async
from ecmind_blue_client import StoreInCacheByIdConversion
files = ecm.dms.files(12345, convert=StoreInCacheByIdConversion.PDF)
pdf = files[0]
print(pdf.name) # z.B. "rechnung.pdf"
pdf.store("/tmp/rechnung.pdf")
from ecmind_blue_client import StoreInCacheByIdConversion
files = await ecm.dms.files(12345, convert=StoreInCacheByIdConversion.PDF)
pdf = files[0]
pdf.store("/tmp/rechnung.pdf")
5.4. Als mehrseitige TIFF-Datei laden
TIFF-Dokumente (Haupttypen 2 oder 3) werden zu einer einzigen mehrseitigen TIFF-Datei zusammengeführt:
-
Sync
-
Async
from ecmind_blue_client import StoreInCacheByIdConversion
files = ecm.dms.files(12345, convert=StoreInCacheByIdConversion.MULTIPAGE_TIFF)
tiff = files[0]
tiff.store("/tmp/dokument.tiff")
from ecmind_blue_client import StoreInCacheByIdConversion
files = await ecm.dms.files(12345, convert=StoreInCacheByIdConversion.MULTIPAGE_TIFF)
tiff = files[0]
tiff.store("/tmp/dokument.tiff")
5.5. Mit eingebrannten Annotationen laden
-
Sync
-
Async
files = ecm.dms.files(12345, add_annotations=True)
for f in files:
f.store(f"/tmp/{f.name}")
files = await ecm.dms.files(12345, add_annotations=True)
for f in files:
f.store(f"/tmp/{f.name}")
5.6. Dateien einer früheren Version laden
Die version_guid wird aus der Objekthistorie ermittelt. Suchen Sie nach Einträgen
mit der Aktion VERSION_CREATED:
-
Sync
-
Async
from ecmind_blue_client.ecm import ECMHistoryAction
history = ecm.dms.history(12345)
versions = [e for e in history.entries if e.action == ECMHistoryAction.VERSION_CREATED]
if versions:
# Dateien der ältesten Version laden
old_version = versions[-1]
files = ecm.dms.files(12345, version_guid=old_version.guid)
for f in files:
print(f.name, f.size())
from ecmind_blue_client.ecm import ECMHistoryAction
history = await ecm.dms.history(12345)
versions = [e for e in history.entries if e.action == ECMHistoryAction.VERSION_CREATED]
if versions:
old_version = versions[-1]
files = await ecm.dms.files(12345, version_guid=old_version.guid)
for f in files:
print(f.name, f.size())
5.7. Alle Dateien eines Abfrageergebnisses herunterladen
-
Sync
-
Async
import os
output_dir = "/tmp/rechnungen"
os.makedirs(output_dir, exist_ok=True)
for doc in ecm.dms.select(InvoiceDocument).where(InvoiceDocument.Year == 2024).stream():
for f in ecm.dms.files(doc):
f.store(os.path.join(output_dir, f"{doc.system.id}_{f.name}"))
import os
output_dir = "/tmp/rechnungen"
os.makedirs(output_dir, exist_ok=True)
async for doc in ecm.dms.select(InvoiceDocument).where(InvoiceDocument.Year == 2024).stream():
for f in await ecm.dms.files(doc):
f.store(os.path.join(output_dir, f"{doc.system.id}_{f.name}"))