Εξαγωγή περιγράμματος σε αρχείο PDF
Εισαγωγή
Όταν εργάζεστε με αρχεία PDF, η εξαγωγή συγκεκριμένων στοιχείων όπως περιγράμματα ή γραφικά μονοπάτια μπορεί να φαίνεται τρομακτική εργασία. Αλλά με το Aspose.PDF για .NET, μπορείτε εύκολα να εξαγάγετε περιγράμματα ή σχήματα από ένα αρχείο PDF και να τα αποθηκεύσετε ως εικόνα. Σε αυτό το σεμινάριο, θα βουτήξουμε στη διαδικασία εξαγωγής περιγράμματος από ένα PDF και αποθήκευσης ως εικόνας PNG. Ετοιμαστείτε να αναλάβετε τον έλεγχο του γραφικού περιεχομένου του PDF σας!
Προαπαιτούμενα
Πριν βουτήξουμε στον κώδικα, βεβαιωθείτε ότι έχετε ρυθμίσει τα πάντα:
- Aspose.PDF για .NET: Εάν δεν έχετε εγκαταστήσει ακόμα τη βιβλιοθήκη Aspose.PDF, μπορείτε νακατεβάστε το εδώ. Θα χρειαστεί επίσης να εφαρμόσετε την άδεια, είτε μέσω της δωρεάν δοκιμής είτε μέσω μιας άδειας που αγοράσατε.
- Ρύθμιση IDE: Ρυθμίστε ένα έργο C# στο Visual Studio ή σε οποιοδήποτε άλλο .NET IDE. Βεβαιωθείτε ότι έχετε προσθέσει τις απαραίτητες αναφορές στη βιβλιοθήκη Aspose.PDF.
- Εισαγωγή αρχείου PDF: Έχετε έτοιμο ένα αρχείο PDF από το οποίο θα εξαγάγετε τα περιγράμματα. Αυτό το σεμινάριο θα αναφέρεται σε ένα αρχείο με όνομα
input.pdf
.
Εισαγωγή απαιτούμενων πακέτων
Ας ξεκινήσουμε εισάγοντας τους απαιτούμενους χώρους ονομάτων. Αυτά τα πακέτα παρέχουν τα εργαλεία που απαιτούνται για τον χειρισμό του περιεχομένου PDF.
using System.IO;
using System;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.Collections;
using Aspose.Pdf;
using Aspose.Pdf.Annotations;
Τώρα που καλύψαμε τα βασικά, ας περάσουμε στον οδηγό βήμα προς βήμα, όπου θα αναλύσουμε κάθε μέρος του κώδικα για να το εξηγήσουμε λεπτομερώς.
Βήμα 1: Φόρτωση του εγγράφου PDF
Το πρώτο βήμα είναι να φορτώσετε το έγγραφο PDF που περιέχει το περίγραμμα που θέλετε να εξαγάγετε. Σκεφτείτε το σαν να ανοίγετε ένα βιβλίο πριν ξεκινήσετε να διαβάζετε — χρειάζεστε πρόσβαση στο περιεχόμενο!
Θα ξεκινήσουμε καθορίζοντας τον κατάλογο όπου είναι αποθηκευμένο το αρχείο PDF και θα φορτώσουμε το έγγραφο χρησιμοποιώντας τοAspose.Pdf.Document
τάξη.
string dataDir = "YOUR DOCUMENT DIRECTORY";
Document doc = new Document(dataDir + "input.pdf");
Αυτός ο κωδικός φορτώνει τοinput.pdf
αρχείο από τον καθορισμένο κατάλογο σας. Βεβαιωθείτε ότι η διαδρομή του αρχείου είναι σωστή, διαφορετικά ενδέχεται να εμφανιστεί σφάλμα που δεν βρέθηκε.
Βήμα 2: Ρύθμιση γραφικών και Bitmap
Πριν ξεκινήσουμε την εξαγωγή, πρέπει να δημιουργήσουμε έναν καμβά για να σχεδιάσουμε. Στον κόσμο του .NET, αυτό σημαίνει τη δημιουργία αντικειμένων Bitmap και Graphics. Το Bitmap αντιπροσωπεύει την εικόνα και το αντικείμενο Graphics θα μας επιτρέψει να σχεδιάσουμε σχήματα, όπως περιγράμματα, που εξάγονται από το PDF.
System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap((int)doc.Pages[1].PageInfo.Width, (int)doc.Pages[1].PageInfo.Height);
System.Drawing.Drawing2D.GraphicsPath graphicsPath = new System.Drawing.Drawing2D.GraphicsPath();
System.Drawing.Drawing2D.Matrix lastCTM = new System.Drawing.Drawing2D.Matrix(1, 0, 0, -1, 0, 0);
System.Drawing.Drawing2D.Matrix inversionMatrix = new System.Drawing.Drawing2D.Matrix(1, 0, 0, -1, 0, (float)doc.Pages[1].PageInfo.Height);
System.Drawing.PointF lastPoint = new System.Drawing.PointF(0, 0);
System.Drawing.Color fillColor = System.Drawing.Color.FromArgb(0, 0, 0);
System.Drawing.Color strokeColor = System.Drawing.Color.FromArgb(0, 0, 0);
Εδώ είναι μια ανάλυση:
- Δημιουργούμε μια εικόνα bitmap στο μέγεθος της πρώτης σελίδας του PDF.
- Το GraphicsPath χρησιμοποιείται για τον καθορισμό σχημάτων (σε αυτήν την περίπτωση, περιγράμματα).
- Το Matrix καθορίζει πώς θα μετασχηματιστούν τα γραφικά. χρειαζόμαστε έναν πίνακα αντιστροφής επειδή το PDF και το .NET έχουν διαφορετικά συστήματα συντεταγμένων.
Βήμα 3: Επεξεργασία περιεχομένου PDF
Το αρχείο PDF είναι μια σειρά από εντολές σχεδίασης και πρέπει να επεξεργαστούμε καθεμία από αυτές τις εντολές για να αναγνωρίσουμε και να εξαγάγουμε τις πληροφορίες περιγράμματος.
foreach (Operator op in doc.Pages[1].Contents)
{
// Επεξεργασία εντολών όπως αποθήκευση/επαναφορά κατάστασης, σχεδίαση γραμμών, συμπλήρωση σχημάτων κ.λπ.
}
Ο κώδικας περιστρέφεται σε κάθε τελεστή σχεδίασης στη ροή περιεχομένου του PDF. Κάθε τελεστής μπορεί να αντιπροσωπεύει μια γραμμή, ορθογώνιο ή άλλη γραφική οδηγία.
Βήμα 4: Χειρισμός χειριστών PDF
Κάθε χειριστής στο αρχείο PDF ελέγχει μια ενέργεια. Για να εξαγάγουμε το περίγραμμα, πρέπει να αναγνωρίσουμε εντολές όπως “μετακίνηση σε”, “γραμμή σε” και “σχεδιασμός ορθογωνίου”. Οι παρακάτω χειριστές χειρίζονται αυτές τις ενέργειες:
- MoveTo: Μετακινεί τον κέρσορα σε ένα σημείο εκκίνησης.
- LineTo: Σχεδιάζει μια γραμμή από το τρέχον σημείο σε ένα νέο σημείο.
- Re: Σχεδιάζει ένα ορθογώνιο (αυτό θα μπορούσε να είναι μέρος του περιγράμματος).
Aspose.Pdf.Operators.MoveTo opMoveTo = op as Aspose.Pdf.Operators.MoveTo;
Aspose.Pdf.Operators.LineTo opLineTo = op as Aspose.Pdf.Operators.LineTo;
Aspose.Pdf.Operators.Re opRe = op as Aspose.Pdf.Operators.Re;
if (opMoveTo != null)
{
lastPoint = new System.Drawing.PointF((float)opMoveTo.X, (float)opMoveTo.Y);
}
else if (opLineTo != null)
{
System.Drawing.PointF linePoint = new System.Drawing.PointF((float)opLineTo.X, (float)opLineTo.Y);
graphicsPath.AddLine(lastPoint, linePoint);
lastPoint = linePoint;
}
else if (opRe != null)
{
System.Drawing.RectangleF re = new System.Drawing.RectangleF((float)opRe.X, (float)opRe.Y, (float)opRe.Width, (float)opRe.Height);
graphicsPath.AddRectangle(re);
}
Σε αυτό το βήμα:
- Καταγράφουμε τα σημεία για κάθε γραμμή ή σχήμα που σχεδιάζεται.
- Για ορθογώνια (
opRe
), τα προσθέτουμε απευθείας στοgraphicsPath
, το οποίο θα χρησιμοποιήσουμε αργότερα για να σχεδιάσουμε το περίγραμμα.
Βήμα 5: Σχεδίαση του περιγράμματος
Αφού εντοπίσουμε τις γραμμές και τα ορθογώνια που σχηματίζουν το περίγραμμα, πρέπει να τα σχεδιάσουμε στο αντικείμενο Bitmap. Εδώ μπαίνει το αντικείμενο Graphics.
using (System.Drawing.Graphics gr = System.Drawing.Graphics.FromImage(bitmap))
{
gr.SmoothingMode = SmoothingMode.HighQuality;
gr.DrawPath(new System.Drawing.Pen(strokeColor), graphicsPath);
}
- Δημιουργούμε ένα αντικείμενο Graphics με βάση το bitmap.
- Το SmoothingMode.HighQuality διασφαλίζει ότι έχουμε μια ωραία ομαλή εικόνα.
- Τέλος, χρησιμοποιούμε το DrawPath για να σχεδιάσουμε το περίγραμμα.
Βήμα 6: Αποθήκευση του εξαγόμενου περιγράμματος
Τώρα που εξάγαμε το περίγραμμα, ήρθε η ώρα να το αποθηκεύσουμε ως αρχείο εικόνας. Αυτό θα αποθηκεύσει το περίγραμμα ως PNG.
dataDir = dataDir + "ExtractBorder_out.png";
bitmap.Save(dataDir, ImageFormat.Png);
- Το bitmap αποθηκεύεται ως εικόνα PNG.
- Τώρα μπορείτε να ανοίξετε αυτήν την εικόνα για να προβάλετε το εξαγόμενο περίγραμμα.
Σύναψη
Η εξαγωγή περιγραμμάτων από ένα αρχείο PDF χρησιμοποιώντας το Aspose.PDF για .NET μπορεί να φαίνεται δύσκολη στην αρχή, αλλά μόλις το αναλύσετε, γίνεται απλή. Κατανοώντας τους τελεστές σχεδίασης σε ένα PDF και χρησιμοποιώντας τις ισχυρές βιβλιοθήκες .NET, μπορείτε να χειριστείτε και να εξάγετε γραφικό περιεχόμενο αποτελεσματικά. Αυτός ο οδηγός σάς δίνει μια ισχυρή βάση για να ξεκινήσετε με τη χειραγώγηση PDF!
Συχνές ερωτήσεις
Πώς χειρίζομαι πολλές σελίδες στο PDF;
Μπορείτε να κάνετε κύκλο σε κάθε σελίδα του εγγράφου κάνοντας επανάληψηdoc.Pages
αντί για σκληρό κώδικαdoc.Pages[1]
.
Μπορώ να εξαγάγω άλλα στοιχεία, όπως κείμενο, χρησιμοποιώντας την ίδια προσέγγιση;
Ναι, το Aspose.PDF παρέχει πλούσια API για εξαγωγή κειμένου, εικόνων και άλλου περιεχομένου από αρχεία PDF.
Πώς μπορώ να εφαρμόσω μια άδεια για να αποφύγω περιορισμούς;
Μπορείτεεφαρμόσει άδεια φορτώνοντάς το μέσω τουLicense
τάξη που παρέχεται από την Aspose.
Τι γίνεται αν το PDF μου δεν έχει περιθώρια;
Εάν το PDF σας δεν περιέχει ορατά περιγράμματα, η διαδικασία εξαγωγής γραφικών ενδέχεται να μην αποφέρει κανένα αποτέλεσμα. Βεβαιωθείτε ότι το περιεχόμενο PDF περιλαμβάνει περιγράμματα με δυνατότητα σχεδίασης.
Μπορώ να αποθηκεύσω την έξοδο σε άλλες μορφές εκτός από το PNG;
Ναι, απλά αλλάξτε τοImageFormat.Png
σε άλλη υποστηριζόμενη μορφή, όπωςImageFormat.Jpeg
.