Εξαγωγή αρχείων PDF από ZIP σε .NET
Χρησιμοποιήστε το Aspose.ZIP for .NET για να ελέγξετε ένα ZIP archive και να επαναφέρετε μόνο τα αρχεία PDF που χρειάζεται η C# εφαρμογή σας. Σε αυτή τη σελίδα, extraction σημαίνει επιλογή των κατάλληλων αρχείων από ZIP container και εγγραφή τους σε ελεγχόμενο destination directory. Το Aspose.ZIP δεν ερμηνεύει ούτε μετατρέπει το εσωτερικό περιεχόμενο του αρχείου.
Η selective extraction ταιριάζει σε document ingestion, records processing, office automation, conversion queues και uploaded business packages. Η εφαρμογή μπορεί να αγνοεί μη σχετικά entries, να επιβάλλει output και resource policies και να περνά approved files στο επόμενο service χωρίς να αποσυμπιέζει ολόκληρο το archive.
Εξαγωγή αρχείων PDF από ZIP με C#
Εγκαταστήστε το
Aspose.ZIP package for .NET
και εισαγάγετε το namespace Aspose.Zip. Τα archive metadata είναι διαθέσιμα πριν γραφτεί οτιδήποτε, ώστε η εφαρμογή να αξιολογεί ArchiveEntry.Name, ArchiveEntry.IsDirectory και ArchiveEntry.UncompressedSize ως μέρος της acceptance policy.
Package Manager Console Command
PM> Install-Package Aspose.Zip
Ανοίξτε το ZIP με Archive, διατρέξτε το Archive.Entries, επιλέξτε entries με την επέκταση .pdf και καλέστε ArchiveEntry.Extract για κάθε εγκεκριμένο destination. Το παράδειγμα μειώνει τα archived paths στο τελικό filename, ώστε τα entries να μην μπορούν να βγουν από το target directory.
Βήματα για επαναφορά αρχείων PDF σε C#
- Επιλύστε το source ZIP path και δημιουργήστε isolated output directory.
- Ανοίξτε το package με την class
Archive. - Διατρέξτε το
Archive.Entriesαντί να επεκτείνετε κάθε item. - Επιλέξτε entries των οποίων το τελικό filename χρησιμοποιεί την επέκταση .pdf.
- Δημιουργήστε destination path που παραμένει κάτω από το approved output root.
- Απορρίψτε entries που υπερβαίνουν το configured expanded-size limit.
- Αποθηκεύστε κάθε accepted item με
ArchiveEntry.Extract.
Απαιτήσεις συστήματος
Πριν εκτελέσετε το παράδειγμα, βεβαιωθείτε ότι το περιβάλλον περιλαμβάνει:
- Υποστηριζόμενο .NET runtime σε Windows, Linux ή macOS.
- Visual Studio, JetBrains Rider, Visual Studio Code ή άλλο C# development environment.
- Aspose.ZIP for .NET εγκατεστημένο μέσω NuGet ή referenced ως assembly.
- Read access στο source archive και write access στο destination directory.
- Storage και execution limits κατάλληλα για μη αξιόπιστη compressed input.
Παράδειγμα C#: επιλογή αρχείων PDF μέσα σε ZIP archive
Ο κώδικας ανοίγει ένα ZIP package, φιλτράρει non-directory entries με βάση την approved extension και γράφει τα matching files σε ένα output directory. Το flattening των archived paths κρατά το παράδειγμα σύντομο και αποτρέπει parent-directory segments από το να ελέγξουν το destination. Ο production κώδικας πρέπει επίσης να ορίζει deterministic policy για duplicate output names.
Εξαγωγή αρχείων PDF από ZIP - C#
using Aspose.Zip;
using System;
using System.IO;
string archivePath = Path.GetFullPath("package.zip");
string outputDirectory = Path.GetFullPath("extracted-pdf");
string[] allowedExtensions = { ".pdf" };
const ulong MaxEntrySize = 100UL * 1024 * 1024;
Directory.CreateDirectory(outputDirectory);
using (var archive = new Archive(archivePath))
{
foreach (ArchiveEntry entry in archive.Entries)
{
if (entry.IsDirectory) continue;
string fileName = Path.GetFileName(entry.Name);
if (string.IsNullOrWhiteSpace(fileName)) continue;
string extension = Path.GetExtension(fileName);
if (!Array.Exists(
allowedExtensions,
value => string.Equals(value, extension, StringComparison.OrdinalIgnoreCase)))
{
continue;
}
if (entry.UncompressedSize > MaxEntrySize)
{
throw new InvalidDataException(
$"Το entry '{fileName}' υπερβαίνει το όριο εξαγωγής των 100 MB.");
}
string destinationPath = Path.Combine(outputDirectory, fileName);
entry.Extract(destinationPath);
}
}
Σημειώσεις υλοποίησης για PDF packages
Η σωστή επέκταση δεν αποδεικνύει ότι το έγγραφο είναι αναγνώσιμο ή ότι συμμορφώνεται με την αναμενόμενη παραλλαγή. Επικυρώστε το επαναφερόμενο αρχείο με το document-processing component του επόμενου βήματος.Το παράδειγμα μειώνει τα archived paths σε απλά ονόματα αρχείων. Αν δύο αποδεκτά entries έχουν το ίδιο τελικό όνομα, το ArchiveEntry.Extract μπορεί να αντικαταστήσει υπάρχον output file. Ορίστε ξεκάθαρο κανόνα σύγκρουσης: απόρριψη duplicates, δημιουργία μοναδικών ονομάτων ή διατήρηση validated relative folder structure. Χρησιμοποιήστε ξεχωριστό destination για κάθε job, ώστε παράλληλα requests να μη μπερδεύουν αποτελέσματα.
Ζητήματα ασφάλειας και απορρήτου
Αντιμετωπίστε archive names και payloads ως μη αξιόπιστα. Μην προσθέτετε ποτέ το ArchiveEntry.Name απευθείας στο destination path, επειδή absolute paths και parent-directory segments μπορούν να γράψουν έξω από τον προβλεπόμενο φάκελο. Το standard παράδειγμα χρησιμοποιεί Path.GetFileName; workflows που διατηρούν directories πρέπει να επιλύουν το full path και να επιβεβαιώνουν ότι παραμένει κάτω από το approved root.
Ορίστε limits για compressed input size, per-entry και total expanded size, entry count, processing time και concurrent jobs. Εξαγάγετε σε restricted temporary storage, καθαρίστε partial output μετά από failures, σαρώστε αρχεία όταν το απαιτεί η εφαρμογή και αποφύγετε να γράφετε σε logs private filenames ή file contents.
FAQ εξαγωγής PDF
Πώς εξάγω μόνο αρχεία PDF από ZIP archive σε C#;
Ανοίξτε το ZIP με Archive, διατρέξτε το Archive.Entries, φιλτράρετε matching entries με βάση την επέκταση .pdf και καλέστε Extract για κάθε accepted destination path.
Επικυρώνει το Aspose.ZIP το περιεχόμενο ενός εξαγμένου αρχείου PDF;
Όχι. Η επέκταση είναι μόνο ένα πρώτο φίλτρο. Επικυρώστε το επαναφερόμενο αρχείο με component που κατανοεί περιεχόμενο PDF.
Μπορεί το ίδιο selection pattern να χρησιμοποιηθεί με 7Z, RAR ή TAR containers;
Ναι, αλλά κάθε container πρέπει να ανοίγει με την αντίστοιχη Aspose.ZIP archive class. Οι entry types και οι διαθέσιμες extraction methods μπορεί να διαφέρουν ανά archive format.
Πώς πρέπει να χειρίζονται τα duplicate PDF filenames;
Ορίστε τον κανόνα πριν από την extraction: απόρριψη duplicates, δημιουργία μοναδικών ονομάτων ή διατήρηση validated relative folder structure.
Σχετικοί οδηγοί εξαγωγής αρχείων εγγράφων
Περιηγηθείτε σε σελίδες C# για Office, fixed-layout και publishing έγγραφα μέσα σε ZIP πακέτα.