Δοκίμιο για τη δημιουργία αρχείων PDF. Δοκίμιο για τη δημιουργία PDF Διαβάζοντας pdf delphi

Σε αυτό το άρθρο, θα δούμε πώς να δημιουργήσετε το δικό σας pdf-έγγραφα και στο επόμενο άρθρο θα εξετάσουμε πώς μπορείτε να προβάλετε pdf-έγγραφα στα έργα τους, καθώς και περιεχόμενο εκτύπωσης, πλοήγηση στο έγγραφο και ούτω καθεξής.

Για αυτό χρειαζόμαστε στοιχεία από την καρτέλα Ουρλιάζω... Ας εγκαταστήσουμε τα στοιχεία που χρειαζόμαστε για να δουλέψουμε και αυτά είναι:

  • TRvNDRWriter
  • TRvRenderPdf
  • TButton

Συστατικό TRvNDRWriterπροορίζεται για εγγραφή σε pdf- πληροφορίες αρχείου (κείμενο, γραφικό) μέσω ροής.

Συστατικό TRvRenderPdfπροορίζεται για τη δημιουργία, την απόδοση πληροφοριών (κείμενο, γραφικό κ.λπ.). Λοιπόν, πατώντας το κουμπί, θα εισάγουμε κάτι στο δικό μας pdf-αρχείο.

Δεν θα γράψουμε πολλά από τη θεωρία, αλλά θα περάσουμε αμέσως στον προγραμματισμό, αλλά πρέπει πρώτα να δημιουργήσουμε ένα συνηθισμένο κενό pdf-αρχείο και βάλτε το στη ρίζα του προγράμματος. Σε συνέχεια της εκδήλωσης Στο κλικθα γράψουμε τον παρακάτω κώδικα για το κουμπί μας:

διαδικασία TForm1. Button1Click (Αποστολέας: TObject); var Ροές: TMemoryStream; start Streams: = TMemoryStream. δημιουργώ; RvNDrWriter1. Ρεύμα: = Ρεύματα; RvNDRWriter1. Εκτέλεση; RvRenderPdf1. PrintRender (Ροές, "test.pdf"); ShellExecute (Handle, μηδέν, "test.pdf", "", "", SW_SHOW); FreeAndNil (Ροές); τέλος;

Δημιουργούμε μια ροή στην οποία θα αντλήσουμε όλες τις πληροφορίες, μετά ξεκινάμε την απόδοση, καθορίζουμε το αρχείο στο οποίο θα αποδοθούν τα δεδομένα και στο τέλος καταστρέφουμε τη ροή.

Τώρα χρειαζόμαστε ένα συμβάν που συμβαίνει κατά την κατάρτιση δεδομένων, στο οποίο θα εμφανίζουμε όλες τις πληροφορίες μας. Επιλογή του στοιχείου TRvNDRWriterκαι διαβάστε τη λίστα συμβάντων αυτού του στοιχείου, μετά από την οποία βρίσκουμε το συμβάν OnPrintκαι σε αυτή την περίπτωση γράφουμε τον ακόλουθο κώδικα:

διαδικασία TForm1. Εκτύπωση (Αποστολέας: TObject); έναρξη bmp: = TBitmap. Δημιουργώ; bmp. LoadFromFile ("test.bmp"); με το RvNDRWriter1 ξεκινάμε το SetFont ("Arial", 16). Χρώμα γραμματοσειράς: = clGreen; Εκτύπωση ("Κείμενο δοκιμής"); PrintHeader ("Begin PDF File", pjCenter); PrintFooter ("Τέλος αρχείου PDF", pjCenter); LineTo (10, 10); PrintBitmap (1, 1, 1, 1, bmp); τέλος; FreeAndNil (bmp); τέλος;

Λοιπόν, πρώτα ανεβάζουμε μια φωτογραφία * .bmpφυσικά μεταβλητή bmp, έχουμε ένα αντικείμενο κλάσης TBitmap... Φορτώνουμε για να το σύρουμε μετά στο δικό μας pdf-έγγραφο.

Και μετά, νομίζω ότι όλα είναι ξεκάθαρα, η διαδικασία PrintHeader- εμφανίζει μια επιγραφή στον τίτλο του εγγράφου (σελίδα), διαδικασία PrintFooter- εμφανίζει μια επιγραφή στο τέλος του εγγράφου (σελίδα). Διαδικασία PrintBitmap- εμφανίζει την εικόνα στο έγγραφο, διαδικασία SetFont- ορίζει τη γραμματοσειρά του εγγράφου, τη διαδικασία FontColor- ορίζει το χρώμα της γραμματοσειράς του εγγράφου.

Υπάρχουν δύο κύριοι τρόποι οργάνωσης της προβολής εγγράφων PDF σε ένα πρόγραμμα.

  • Χρήση τεχνολογίας ActiveX.
  • Χρήση ειδικών εξαρτημάτων.

Τα στοιχεία για εργασία με PDF δεν είναι διαθέσιμα σε όλες τις εκδόσεις Delphi και τις περισσότερες φορές χρειάζεται να αναζητηθούν και να εγκατασταθούν επιπλέον. Ταυτόχρονα, για να χρησιμοποιήσετε το ActiveX, χρειάζεται μόνο να έχετε το κατάλληλο λογισμικό... V σε αυτήν την περίπτωση Adobe Acrobat Reader (δωρεάν) ή Adobe Acrobat.

Η εργασία με το ActiveX μπορεί χονδρικά να χωριστεί σε δύο στάδια.

  • Εισαγωγή βιβλιοθήκης τύπων ή στοιχείων.
  • Στην πραγματικότητα, η χρήση εισαγόμενων κεφαλαίων στην εφαρμογή.
Εισαγωγή εξαρτημάτωνActiveX

Για να εισαγάγετε στοιχεία, χρησιμοποιήστε την εντολή "Component" - "Import Component" στο κύριο μενού των Delphi. Η ίδια η διαδικασία εισαγωγής υλοποιείται ως οδηγός.

Στην πρώτη σελίδα του οδηγού, επιλέξτε "Import ActiveX Control".

Μετά από αυτό, πρέπει να αποφασίσετε τι να κάνετε με τα εισαγόμενα εξαρτήματα. Εφόσον σχεδιάζεται η χρήση τους με τη μορφή στοιχείων Delphi, επιλέγουμε «Εγκατάσταση σε νέο πακέτο».

Τώρα το μόνο που μένει είναι να καθορίσετε το όνομα του πακέτου που δημιουργήθηκε πρόσφατα.

Αφού κάνετε κλικ στο κουμπί "Τέλος", τα στοιχεία ActiveX προβολής PDF θα εισαχθούν στο Delphi.

ΘέαPDF στην εφαρμογή

Για να δημιουργήσετε αρχεία PDF προβολής σε μια εφαρμογή χρησιμοποιώντας το ActiveX, απαιτείται το στοιχείο TAcroPDF. Η διαδικασία εισαγωγής περιγράφεται αναλυτικά παραπάνω.

Ας δημιουργήσουμε την παρακάτω εφαρμογή ως παράδειγμα. Τοποθετήστε τα στοιχεία TAcroPDF, TOpenDialog και TButton στη φόρμα όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης.

Όταν κάνετε κλικ στο κουμπί, καλούμε το παράθυρο διαλόγου ανοιχτού αρχείου για να επιλέξετε ένα αρχείο PDF για προβολή.


ημερομηνία δημοσίευσης 23/09/2005 07:00 Δοκίμιο για τη δημιουργία αρχείων PDF

V Πρόσφαταστο Διαδίκτυο υπάρχουν πολλοί μετατροπείς PDF, αναγνώστες και γράφουν "s. Και η συντριπτική πλειοψηφία τους προσφέρονται για χρήματα. Το ίδιο το πρόγραμμα είναι από $ 10 έως $ 300. Και ο πηγαίος κώδικας για πολύ περισσότερα χρήματα, η τιμή ξεκινά από 200 $ και σε ένα μέρος (με ενδιαφέρον για αυτό, ανέβηκα στο Διαδίκτυο) έως και 900 ευρώ.

Με ενδιέφερε αυτό το πρόβλημα όσον αφορά τον προγραμματισμό, και φέρνω στην προσοχή σας τα αποτελέσματα. (Αυτά τα αποτελέσματα λήφθηκαν από εμένα κατά τη μελέτη του εσωτερικού αρχείο PDFαλλά όταν το ανοίγεις μέσα ολοκληρωτικός διοικητήςμέσω F3)

Ένα κανονικό αρχείο PDF αποτελείται από τέσσερα μέρη :=

Τι είναι

? Αυτή είναι μια κοινή αναφορά της έκδοσης προδιαγραφών PDF. Το οποίο υπάρχει στην πρώτη γραμμή του αρχείου PDF. Για παράδειγμα, "% PDF-1.3" Στην έβδομη έκδοση του ακροβάτη, η οποία κυκλοφόρησε κάποια στιγμή στις αρχές αυτού του καλοκαιριού, αυτός ο αριθμός είναι "% PDF-1.7", αλλά αυτή δεν είναι μια έκδοση του προϊόντος, αυτή είναι την έκδοση της προδιαγραφής. Η δεύτερη γραμμή του PDF είναι ένα μικρό abrokadabra (προφανώς προορίζεται για περαιτέρω χρήση) "% vgpu"

Όλοι τακτοποίησαν το πρώτο μέρος του PDF.

Πώς λέγεται το δεύτερο μέρος ?

Η απάντηση είναι πολύ απλή: είναι μια ακολουθία αντικειμένων, η περιγραφή των οποίων, όπως και η κεφαλίδα, παρουσιάζεται σε μορφή κειμένου.

Κάθε αντικείμενο είναι ένα τμήμα κειμένου με έναν σειριακό αριθμό στο όνομα, για παράδειγμα "4 0 obj"

  • 4 αυτός είναι ο σειριακός αριθμός του αντικειμένου
  • 0 αυτός είναι ο αριθμός (εκ νέου) δημιουργίας του αρχείου, δηλαδή όταν το αρχείο ενημερώνεται (επεξεργάζεται) τότε δεδομένου αριθμούαυξάνει
  • αντικαυτή είναι μια κωδική λέξη που σημαίνει ότι συναντήσαμε ένα αντικείμενο στο σώμα του εγγράφου

Όλα τα αντικείμενα χωρίζονται σε έμμεσα και άμεσα. Όλα τα έμμεσα, και τα περισσότερα, μετά τη λέξη αντικέχουν ένα διαχωριστικό στο σώμα τους»<<", означающее начало данных объекта. И в конце данных закрывающий делиметер ">> "και η κωδική λέξη endobj

Τα άμεσα αντικείμενα δεν πρέπει να έχουν οριοθέτες ανοίγματος και κλεισίματος στο σώμα τους.<<", ">> "Όλα τα έμμεσα αντικείμενα είναι προσβάσιμα μέσω πίνακας διασταύρωσης... Παρουσιάζει συνδέσμους με τη μορφή μετατόπισης από την αρχή του αρχείου έως την αρχή του αντικειμένου (Τα δεδομένα (γραμμές) στο αντικείμενο διαχωρίζονται #13#10 ή #13 )

Ο τύπος του "πιο σημαντικού" αντικειμένου στο σώμα του αρχείου PDF έχει ένα περήφανο όνομα "/ Κατάλογος"

4 0 αντικ<< /Type /Catalog /Pages 2 0 R /OpenAction [ 5 0 R /XYZ null 364 1 ] /PageMode /UseNone >> endobj

Μάλιστα, θα πρέπει να υπάρχουν 3 «κύρια» αντικείμενα στο σώμα ενός minimal αρχείου PDF τύπου «Hello world». Επιτρέψτε μου να τα παραθέσω ανά τύπο:

  • "/ Κατάλογος"περιέχει έναν σύνδεσμο: προς το δέντρο σελίδων ( / Σελίδες)
  • "/ Σελίδες"περιέχει έναν σύνδεσμο προς μια ομάδα σελίδων εγγράφου (Για παράδειγμα 2 0 obj> endobj)
  • "/ Σελίδα"περιέχει έναν σύνδεσμο προς αντικείμενα που σχετίζονται με μια συγκεκριμένη σελίδα. (Για παράδειγμα 3 0 obj> / Περιστροφή 0 >>)
Και μερικά "μικρά"

Ας αναλύσουμε το αντικείμενο της σελίδας:

  • / Περιστροφήένα πεδίο που δείχνει πόσες μοίρες πρέπει να περιστραφεί η εικόνα της σελίδας όταν εμφανίζεται στο πρόγραμμα
  • / MediaBoxκαι / CropBoxπεδία που περιγράφουν το μέγεθος της σελίδας
  • / Γονέαςαναφορά γονέα "/ Σελίδες"
  • / Πόροιαυτό το πεδίο περιγράφει ποια γραμματοσειρά πρέπει να χρησιμοποιείται κατά την εμφάνιση της σελίδας (μια γραμματοσειρά είναι ξεχωριστό αντικείμενο) και η ρύθμιση ProcSet αυτή η ρύθμιση δείχνει ποιο περιεχόμενο της ροής δεδομένων αυτής της σελίδας (μπορεί επίσης να οριστεί ως αντικείμενο, όχι ως πεδίο)
  • / ΠεριεχόμεναΤο πιο ενδιαφέρον πεδίο στο αντικείμενο "σελίδα", δίνει έναν σύνδεσμο προς το αντικείμενο περιεχομένου αυτής της σελίδας, επιπλέον: εάν αυτό το πεδίο απουσιάζει στο αντικείμενο "σελίδα", τότε η σελίδα είναι κενή
Περιεχόμενο σελίδας:
Ενα αντικείμενο "ρεύμα" 4 0 obj> stream BT / F12 9 Tf 10 782 TD 0 -12,5 TD (Max Fokin) Tj 0 -12,5 TD (mnb) Tj 0 -12,5 TD () Tj 0 -12,5 TD (Max Privet) Tj5 T -1. (1) Tj 0 -12,5 TD (1) Tj 0 -12,5 TD (2) Tj 0 -12,5 TD (3) Tj 0 -12,5 TD (45) Tj ET endobj / Μήκος 305 αυτό το πεδίο δείχνει πόσα byte από ένα λέξη ρεύμαστη λέξη τελικό ρεύμα

Η απλούστερη επιλογή είναι μια μη κωδικοποιημένη και μη συμπιεσμένη ροή δεδομένων σε ένα αντικείμενο ρεύμα... Περιορίζεται στους χειριστές BTκαι ET

BT Begins a Text Object - χαρακτηρίζει την αρχή του κειμένου ET Ends a Text Object. - χαρακτηρίζει το τέλος του κειμένου / F12 9 Τφ

  • / F12αυτό είναι το κωδικό όνομα του αντικειμένου που χαρακτηρίζει τη γραμματοσειρά που χρησιμοποιείται σε αυτήν τη σελίδα
  • 9 αυτό είναι το μέγεθος της γραμματοσειράς
  • Tfαυτός είναι ένας τελεστής που χαρακτηρίζει ότι μια δεδομένη συμβολοσειρά σε ένα αντικείμενο steam είναι μια ρύθμιση γραμματοσειράς και μεγέθους
10 782 TD αυτοί είναι οι αριθμοί από όπου ξεκινά η δεδομένη γραμμή (η μέτρηση γίνεται από την επάνω αριστερή γωνία) Tj είναι ο τελεστής νέας γραμμής Λοιπόν, μέσα σε παρένθεση είναι το κείμενό μας

Δεν εξηγώ εδώ το codestream. Βασίζεται σε αλγόριθμους RC4, RC5, MD5.

Τι είναι ένα αντικείμενο Γραμματοσειρά 12 0 obj>

  • / Τύπος / ΓραμματοσειράΦυσικά το όνομα του τύπου
  • / Υποτύπος / Τύπος1όνομα υποτύπου
  • / Όνομα / F7 F7αυτό είναι το κωδικό όνομα

Το PDF υποστηρίζει διάφορους τύπους γραμματοσειρών. Παρατίθενται παρακάτω

  • Τύπος 1, συμπεριλαμβανομένων των υποσυνόλων και των πολλαπλών βασικών "στιγμιότυπων"
  • Τύπος 3
  • TrueType, συμπεριλαμβανομένων των υποσυνόλων
  • Τύπος 0
Για να είμαι ειλικρινής, δεν κατάλαβα τον Τύπο 3, το TrueType, συμπεριλαμβανομένων των υποσυνόλων, τον Τύπο 0, δεν μπορώ να πω τίποτα για αυτά.
Και ο τύπος 1 είναι οι ακόλουθες γραμματοσειρές Courier Courier-Bold Courier-Bold Oblique Courier-Oblique Helvetica Helvetica-Bold Helvetica-Bold Oblique Helvetica-Oblique Times-Roman Times-Bold Times-Italic Times-BoldItalic σύμβολο ZapfDing

20 0 obj> endobj Αυτό είναι ένα αντικείμενο με κωδικές ονομασίες για γραμματοσειρές του πρώτου τύπου. Με αυτό το κωδικό όνομα, μπορείτε εύκολα να λάβετε το ίδιο το αντικείμενο γραμματοσειρά... 6 0 obj>

ΟΛΟΙ: δηλαδή το ελάχιστο Αποτελείται από τα ακόλουθα αντικείμενα: "κατάλογος", "σελίδες", "σελίδα", "Πόροι"(προαιρετικά μπορεί να υπάρχει ως πεδίο στο αντικείμενο σελίδας), μη πληκτρολογημένο αντικείμενο "ρεύμα", ομάδα αντικειμένων "γραμματοσειρά"

Τι συνέβη ? Στην πραγματικότητα, αυτός είναι ένας συνηθισμένος πίνακας κειμένου, ξεκινά με τη λέξη xrefκαι το σώμα του έχει αναφορές σε όλα τα έμμεσα αντικείμενα του εγγράφου. Ακολουθεί ένα παράδειγμα xref 0 27 0000000021 65535 f 0000000016 00000 n 0000000105 00000 N 0000000169 00000 N 0000000356 00000 N 0000000713 00000 N 0000000892 00000 N 0000001006 00000 N 0000001125 00000 N 0000001247 00000 N 0000001373 00000 N 0000001486 00000 N 000000 n1604 00000 n 0000001486 00000 N 000000 n1604 0018 0000001967 00000 n 0000002084 00000 n 0000002203 00000 n 0000002326 00000 n 0000002439 00000 n 0000002558 00000 n 0000000024 00001 f 0000002751 00000 n 0000002831 00000 n 0000000000 00001 f 0000002915 00000 n 0000002955 00000 n 0 27 Αυτοί οι αριθμοί δείχνουν τα ακόλουθα:

  • 0 - ο πρώτος αριθμός αντικειμένου στον πίνακα
  • 27 - ο αριθμός των στοιχείων στον πίνακα

Το πρώτο στοιχείο του πίνακα έχει πάντα τη μορφή " XXXXXXXXXX 65535 στ"όπου X είναι ένας αριθμός και 65535 είναι η προεπιλογή για το πρώτο στοιχείο του πίνακα. Το σύμβολο "f" σημαίνει" Ελεύθερος», δηλαδή το αντικείμενο δεν χρησιμοποιείται

Ας αναλύσουμε το στοιχείο αυτού του πίνακα.

  • Τα πρώτα 10 ψηφία είναι η μετατόπιση από την αρχή του αρχείου μέχρι την αρχή του αντικειμένου.
  • 0000000016 σημαίνει ότι μετά από 16 byte από την αρχή του αρχείου θα σας υποδεχτεί η πρώτη αναφορά του αντικειμένου, δηλαδή, για παράδειγμα, 4 0 αντικ

Τα δεύτερα πέντε ψηφία είναι ο αριθμός δημιουργίας αρχείου. Εάν το αρχείο έχει μόλις δημιουργηθεί, τότε είναι πάντα μηδενικά. Εάν το αρχείο τροποποιηθεί, ο αριθμός αυτός αυξάνεται κατά ένα. Αυτό είναι, 0000000024 00001 στ

Το κανονικό PDF που μόλις δημιουργήθηκε έχει μόνο έναν πίνακα. Αλλά, εάν το αρχείο υποβάλλεται σε επεξεργασία, τότε μπορεί να υπάρχουν πολλοί τέτοιοι πίνακες.

Η σχέση των πινάκων πραγματοποιείται χρησιμοποιώντας το τελευταίο στοιχείο και η κωδική λέξη startxref

Το κανονικό, πρόσφατα δημιουργημένο αρχείο PDF έχει μόνο έναν πίνακα, μετά τον πίνακα υπάρχει ένα στοιχείο τροχόσπιτοΚαι μετά το τρέιλερ έρχεται η κωδική λέξη startxrefυποδεικνύοντας τη μετατόπιση από την αρχή του αρχείου μέχρι την αρχή του πίνακα, εδώ είναι ένα παράδειγμα. trailer> startxref 173 %% EOF Αυτό σημαίνει ότι μετά από 173 byte από την αρχή του εγγράφου, θα υπάρχει μια κωδική λέξη xref... Αλλά, εάν το αρχείο έχει υποστεί επεξεργασία, τότε το τελευταίο τρέιλερ του αρχείου θα μοιάζει με αυτό: xref 0 3 0000000000 65535 f 0000003609 00000 n 0000003832 00000 n τρέιλερ] >> 3 0 3 00000000001 όπου δείχνει ο σύνδεσμος startxref 173, τότε θα βρούμε τον επόμενο πίνακα, ακολουθούμενο από το τρέιλερ, που θα έχει το πεδίο / Προηγ. 3896 3 16 0000000016 00000 n 0000000664 00000 N 0000000936 00000 N 0000001106 00000 N 0000001133 00000 N 0000001250 00000 N 0000001395 00000 N 0000001811 00000 N 0000001992 00000 N 0000002180 00000 N 0000002360 00000 N 0000002760 00000 N 0000003438 006 00000 n 0000000 ρυμουλκούμενο] >> startxref 567% % ΕΟΦ

Αυτό το πεδίο / Προηγ. 3896μας οδηγεί στον προηγούμενο πίνακα και στον σύνδεσμο startxref 567δείχνει στον επόμενο πίνακα και ούτω καθεξής σχεδόν επ' αόριστον, ενώ στο επόμενο πεδίο startxrefδεν θα δούμε 0 ... Αυτό σημαίνει ότι έχουμε διαβάσει όλους τους πίνακες.

Αυτό το δοκίμιο, φυσικά, δεν έχει τον πηγαίο κώδικα. Εδώ είναι: υπάρχουν δύο κύριες ενότητες " PDFDocument"και βοηθητικό" PDFBaseFonts"

Τα αρχεία επισυνάπτονται στο υλικό:

Συζήτηση του υλικού[07/31/2006 06:33] 7 δημοσιεύσεις

Χαρακτηριστικά του στοιχείου, που δηλώθηκαν από τους προγραμματιστές:

  • Υποστήριξη για διανυσματικά γραφικά και bitmap σε έγγραφα PDF
  • Προστασία εγγράφων PDF με κωδικό πρόσβασης
  • Υποστήριξη φορμών AcroForms / PDF
  • Σημάδια νερού
  • Γενιά έγγραφα PDFμε εσωτερικούς και εξωτερικούς συνδέσμους, συνδέσμους ιστού και σελιδοδείκτες
  • Πλήρης υποστήριξη Unicode
  • Υποστήριξη πολλαπλών γραμματοσειρών, μορφοποίηση κειμένου, διάταξη κειμένου πολλών στηλών
  • Υποστήριξη TCanvas
  • Ενσωματωμένο αρχείο αρχειοθέτησης για συμπίεση κειμένου και γραφικές πληροφορίεςσε έγγραφο
  • Μετατροπή TIFF σε PDF

Για παράδειγμα, αποφάσισα να δημιουργήσω μια εφαρμογή επίδειξης που συνοδεύεται από το στοιχείο THotPDF... Η εφαρμογή είναι αρκετά απλή - δημιουργεί ένα PDF με δύο συνδέσμους και απλό κείμενο. Ο κώδικας είναι επίσης απλός και απλός:

διαδικασία TForm1. HelloWorldButtonClick (Αποστολέας: TObject); ξεκινήστε το HPF. BeginDoc; HPDF. Τρέχουσα σελίδα. PrintHyperlink (20, 35, "Website:" + MainEdit. Text, MainEdit. Text); HPDF. Τρέχουσα σελίδα. SetFont ("Times New Roman", 16); HPDF. Τρέχουσα σελίδα. SetRGBHyperlinkColor (clRed); HPDF. Τρέχουσα σελίδα. PrintHyperlink (20, 50, "Σελίδα παραγγελίας:" + BuyEdit. Text, BuyEdit. Text); HPDF. Τρέχουσα σελίδα. SetFont ("Times New Roman",, 14); HPDF. Τρέχουσα σελίδα. TextOut (20, 75, 0, "Κάντε κλικ στον σύνδεσμο για πλοήγηση"); HPDF. EndDoc; τέλος;

Χωρίς καν να μπείτε στις περιπλοκές του στοιχείου, μπορείτε να καταλάβετε τι συμβαίνει και πώς σε αυτό το παράδειγμα επίδειξης. Ξεκινάμε, κοιτάμε εμφάνισηπαραγόμενο έγγραφο:

Αυτά τα δύο μπλε ορθογώνια στο έγγραφο είναι σύνδεσμοι σε δύο σελίδες ... και το απλό κείμενο "Κάντε κλικ στον σύνδεσμο για πλοήγηση" δεν φαίνεται πουθενά. Αν και, πρέπει να το αποδώσω, όταν κάνετε κλικ στο ορθογώνιο, ο σύνδεσμος ανοίγει. Γενικά, είτε οι προγραμματιστές έσπευσαν να δηλώσουν υποστήριξη για τους Delphi μέχρι το XE3, είτε η δοκιμαστική έκδοση λειτουργεί τόσο ενδιαφέροντα, αλλά μετά την έναρξη αυτής της επίδειξης έχασα κατά κάποιο τρόπο την επιθυμία να χρησιμοποιήσω το THotPDF ακόμη και δωρεάν. Ας προχωρήσουμε.

4. PDF Creator Pilot

Τιμή: από 450 $ χωρίς πηγές έως 9950 $ (!!!) με πηγές
5-XE4
http://www.colorpilot.com/pdflibrary.html#download

Μια βιβλιοθήκη που κοστίζει σχεδόν όσο η Delphi XE3 Professional ... Λοιπόν, εντάξει, ας δούμε τι είναι αυτή η βιβλιοθήκη.

Χαρακτηριστικά που ανακοινώθηκαν από τους προγραμματιστές:

  • Εκτεταμένο σύνολο μεθόδων και ιδιοτήτων για εύκολη δημιουργία PDF.
  • Ανάγνωση και συγχώνευση υπαρχόντων εγγράφων PDF.
  • Προσθήκη και αφαίρεση σελίδων ενός εγγράφου PDF.
  • Υποστήριξη Unicode.
  • Δημιουργία υδατογραφημάτων για κάθε σελίδα.
  • Προσθήκη μικρογραφιών για ένα έγγραφο PDF.
  • Χρήση και ενσωμάτωση γραμματοσειρών (TrueType, OpenType, Type1, κ.λπ.).
  • Δημιουργήστε διαδραστικά έγγραφα PDF χρησιμοποιώντας JavaScript και υπερσυνδέσμους.
  • Υποστήριξη για διαδραστικά στοιχεία AcroForm: πεδία εισαγωγής κειμένου, κουμπιά, κουμπιά επιλογής, αναπτυσσόμενες λίστες, πλαίσια ελέγχου.
  • κρυπτογράφηση και προστασία με κωδικό πρόσβασης των εγγράφων PDF που δημιουργούνται.
  • Δημιουργία και διαχείριση περιεχομένου εγγράφων.
  • Πρόσβαση στο HDC για σχεδίαση σε σελίδες PDF χρησιμοποιώντας λειτουργίες WinAPI.
  • Χρήση εικόνων σε διάφορες μορφές (JPEG, TIFF, PNG, BMP, GIF).
  • Δημιουργία και χρήση σχολιασμών.
  • Δημιουργία εγγράφων PDF στο δίσκο ή στη μνήμη.
  • Εξαγωγή κειμένου από έγγραφα PDF.

Συνολικά, μια αρκετά εντυπωσιακή λίστα χαρακτηριστικών. Ας δούμε πώς λειτουργούν στην πράξη ορισμένες από αυτές τις δυνατότητες. Κατεβάστε την έκδοση επίδειξης, εγκαταστήστε την.

Μετά την εγκατάσταση, ξεκινήστε το Delphi (στην περίπτωσή μου, αυτό είναι το Delphi XE3) και μεταβείτε στο μενού:

Component - Import Component - Import Type Library

Ψάχνουμε για μια βιβλιοθήκη στη λίστα

Εισαγωγή, δημιουργία νέο έργοκαι συμπεριλάβετε τη μονάδα σε χρήσεις PDFCreatorPilotLib_TLB.

Τώρα μπορούμε να δοκιμάσουμε τη βιβλιοθήκη χρησιμοποιώντας ένα ζωντανό παράδειγμα. Αρχικά, ας προσπαθήσουμε να δημιουργήσουμε ένα έγγραφο απλού κειμένου:

διαδικασία TForm1. Button1Click (Αποστολέας: TObject); var fnt: ακέραιος; έναρξη (αρχικοποίηση) PDF: = TPDFDocument4. Δημιουργία (μηδέν); PDF. SetLicenseData ("demo", "demo"); fnt: = pdf. AddFont ("Verdana", false, false, false, false, fcANSI); PDF. UseFont (fnt, 14); PDF. ShowTextAt (20, 40, "HELLO, PDF!"); (αποθήκευση) PDF. SaveToFile ("HelloPDF.pdf", true); PDF. Καταστρέφω; τέλος;

Εκκινούμε την εφαρμογή και κοιτάμε το δημιουργημένο έγγραφο PDF:

Τώρα ας προσπαθήσουμε να γράψουμε ρωσικό κείμενο σε ένα αρχείο:

διαδικασία TForm1. Button1Click (Αποστολέας: TObject); έναρξη (αρχικοποίηση) (...) PDF. ShowTextAt (20, 40, "Hello PDF!"); (αποθήκευση) (...) τέλος;


Ίσως κάπου στις ιδιότητες κλάσης πρέπει να ρυθμίσετε κάτι, καλέστε κάποια μέθοδο που θα εξακολουθεί να επιτρέπει την υποστήριξη Unicode, ΑΛΛΑ για τέτοια χρήματα θα ήθελα να πάρω μια βιβλιοθήκη που θα λειτουργεί αμέσως χωρίς προβλήματα με τις ρυθμίσεις και τις ανατροπές.. Παρεμπιπτόντως, ούτε η μέθοδος εισαγωγής συνδέσμου (AddHyperLink) λειτούργησε - το έγγραφο παρέμεινε παρθένο παρά το γεγονός ότι ο σύνδεσμος φέρεται να είχε εισαχθεί. Όμως, πρέπει να αποτίσουμε φόρο τιμής, μια προσπάθεια να εισαγάγουμε ένα PDF που δημιουργήθηκε προηγουμένως σε ένα νέο έγγραφο - λειτούργησε απίστευτα - το έγγραφο εισήχθη στη νέα σελίδα όπως θα έπρεπε, χωρίς εμπλοκές.

5. PDFtoolkit VCL v4.0.1.293

Τιμή: από 349 $ χωρίς πηγές έως 499 $ με πηγές
Υποστηριζόμενες εκδόσεις Delphi: 6-XE4
Σελίδα δοκιμαστικής λήψης: http://www.gnostice.com/PDFtoolkit_VCL.asp?show=downloads

Υπάρχουν αρκετές θετικές κριτικές σχετικά με αυτήν τη βιβλιοθήκη στοιχείων από το Gnostice στο διαδίκτυο.

Με ευκαιρίες PDFtoolkitσχεδόν 1 στο 1 αντιστοιχεί PDF Creator Pilot,εκείνοι. μπορεί να «κολλήσει» αρχεία PDF, να αναγνωρίσει κείμενο, να εισαγάγει συνδέσμους, να αναζητήσει έγγραφα κ.λπ. Όμως, σε αντίθεση με το PDF Creator Pilot, PDFtoolkit if gtPDFDocument1. IsLoaded και μετά ξεκινήστε το gtPDFDocument1. TextOut ( "Γεια σου, Ειρήνη!" , IntToStr (gtPDFDocument1. PageCount), // το εύρος των σελίδων στις οποίες θα εισαχθεί το κείμενο gtPDFΈγγραφο1. GetPageSize (gtPDFDocument1. PageCount, muPixels). Πλάτος / 2, // Εισαγάγετε κείμενο στο κέντρο της σελίδας gtPDFΈγγραφο1. GetPagesize (gtPDFDocument1. PageCount, muPixels). Ύψος / 2); (αποθηκεύστε το έγγραφο) gtPDFΈγγραφο1. SaveToFile ("modified_doc.pdf"); τέλος; τελικά gtPDFDocument1. Ελεύθερο τέλος?

Φυσικά, σε σχέση με την εργασία μου, το PDFtoolkit αποδεικνύεται πρακτικά άχρηστο, αφού Με ενδιαφέρει να δημιουργήσω αρχεία PDF από την αρχή, αλλά για όσους γράφουν τα δικά τους προγράμματα προβολής PDF, νομίζω ότι αυτή η βιβλιοθήκη θα πρέπει να είναι κάτι παραπάνω από κατάλληλη.

Λοιπόν, τι έχουμε τελικά. Ναι 5 διαφορετικές λύσειςγια δημιουργία και εργασία με έγγραφα PDF στους Δελφούς. Κάθε λύση έχει τόσο τα πλεονεκτήματά της (δωρεάν, «φανταχτερή») όσο και τα μειονεκτήματα (κόστος αλόγου, προβλήματα με Unicode κ.λπ.). Όσον αφορά την εργασία μου, όλες οι λύσεις θα πρέπει να "λειτουργούν με ένα αρχείο". Από την άλλη πλευρά, υπάρχουν τόνοι πληρωμένων και δωρεάν υπηρεσίεςγια να δημιουργήσετε PDF, αλλά έχοντας κατά νου ότι τέτοιες υπηρεσίες έχουν τη δυνατότητα να πάρουν ξαφνικά και να πεθάνουν, κατά κάποιο τρόπο δεν τραβάει μαζί τους. Υπάρχει, φυσικά, μια ακόμη λύση - αυτογραμμένη και όχι εξ ολοκλήρου στο θέμα των Delphi, αλλά περισσότερα για αυτήν κάποια στιγμή την επόμενη φορά, αλλά προς το παρόν θα πάω να σκεφτώ τι να κάνω με τον πελάτη για το DelphiFeeds


Τα λέμε online!

Συνεχίζοντας το θέμα:
μήλο

0 Σε πολλούς ανθρώπους αρέσει να συνομιλούν σε φόρουμ και συχνά συναντούν τον άγνωστο όρο Moder. Επομένως, κάποιοι ρωτούν, ποιος είναι ο Moder ή τι σημαίνει Moder; Θα ήθελα να συστήσω...

Νέα άρθρα
/
Δημοφιλής