Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Scanning Documents C#

Îåêßíçóå áðü ôï ìÝëïò thanosk. Τελευταία δημοσίευση από το μέλος Παναγιώτης Καναβός στις 15-03-2011, 23:20. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  15-03-2011, 17:31 64221

    Scanning Documents C#

    Καλησπέρα σε όλους.

    Θα ήθελα τα φώτα σας και τις προτάσεις σας για ένα θέμα που έχω.
    Μου ζήτησαν στην εταιρία που εργάζομαι να φτιάξω μια εφαρμογή ώστε να κάνουν scan και να αρχειοθετήσουν κάποια έγγραφα. Την εφαρμογή θα την αναπτύξω σε C# (V.S. 2010)
    Ψάχνωντας λίγο στο internet βρήκα αυτό

    http://www.c-sharpcorner.com/uploadfile/yougerthen/610262008064210am/6.aspx και αυτό
    http://www.microsoft.com/downloads/en/details.aspx?FamilyID=a332a77a-01b8-4de6-91c2-b7ea32537e29&displaylang=en

    Στο δεύτερο link αναφέρει"Windows Image Acquisition Automation Library v2.0 is only supported on Windows XP with Service Pack 1 installed."
    Όποτε υποθέτω ότι γίνει εγκτάσταση η εφαρμογή σε κάποιο μηχάνημα με Vista ή Windows 7, δεν θα δουλέψει.


    Υπάρχει κάποια ιδέα/πρόταση ώστε να μην υπάρχει ο περιορισμός του λειτουργικού συστήατος?

    Ευχαριστώ
    Δημοσίευση στην κατηγορία: ,
  •  15-03-2011, 19:48 64223 σε απάντηση της 64221

    Απ: Scanning Documents C#

    Αυτά που λέει το άρθρο ισχύουν μόνο για XP καθώς το WIA 2.0 υπάρχει ήδη στα Vista και τα Windows 7 και δίνεται σαν ξεχωριστό download στα XP. Το έχω ήδη χρησιμοποιήσει για scanning μέσα από Silverlight 4 βασιζόμενος στο Scanning an Image from Silverlight using WIA, το οποίο έχει και links απευθείας στο MSDN documentation για τα διάφορα τμήματα του κώδικα . Φυσικά σε desktop εφαρμογές τα πράγματα είναι πολύ ευκολότερα καθώς μπορείς απλά να προσθέσεις ένα COM reference στο "Microsoft Windows Image Acquisition Library v2.0". Δεν υπάρχει λόγος να κάνεις τις ταρζανιές που περιγράφει ο τύπος (extract του wiaaut.dll, αντιγραφή με το χέρι στο System32 ). 

    Αυτό που θα πρέπει να προσέξεις είναι τί ακριβώς σου ζητάνε όταν λένε "να σκανάρουν κάποια έγγραφα". Αν τα έγγραφα είναι μεγάλα ή πολλά μάλλον δεν θα σου κάνει η CommonDialog και θα πρέπει να μιλήσεις στον scanner ως Device για να πιάσεις τα event του (πάτημα scan κουμπιού, σκανάρισμα σελίδας από το feeder). 

    Τέλος, θα πρέπει να σκεφτείς πως θα αποθηκεύσεις έγγραφα πολλαπλών σελίδων. Το WIA σου δίνει μέσω φίλτρων να δημιουργήσεις multipage TIFFs με τις εικόνες που σκανάρεις. Αν όμως θέλεις να σώσεις σε κάτι διαφορετικό, π.χ. PDF θα πρέπει να χρησιμοποιήσεις κάποιο άλλο library για το σκοπό αυτό.  Έχω χρησιμοποιήσει το SilverPDF μέσα από Silverlight το οποίο βασίζεται στο PDFSharp (ουσιαστικά μοιάζει σαν recompile του PDFSharp για Silverlight). Αξίζει να ρίξεις και μία ματιά στο iText το οποίο όμως έχει περιορισμένο documentation καθώς ο συγγραφέας το έχει βγάλει σε ... βιβλίο του Manning. Οι δυνατότητες του πάντως είναι πολύ μεγαλύτερες από τα υπόλοιπα.

    Αλήθεια, μήπως η αρχειοθέτηση θέλετε να γίνει σε SharePoint? Γιατί εκεί έχεις μετά να σκεφτείς και πως θα ανεβάσεις το έτοιμο TIFF ή PDF σε ένα doc library με τα κατάλληλα metadata.

    Αυτά για ... αρχή

    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  15-03-2011, 22:13 64228 σε απάντηση της 64223

    Απ: Scanning Documents C#

    Λοιπόν... πολές και καλές πληροφορίες!!!!

    Καταρχήν δεν θα είναι σε SharePoint, οπότε μάλλον θα υπάρχοθν πάμω στον database server  ή θα αντιγράφονται σε file server.

    Κατά την αποψή μου καλύτερο είναι να αποθηκεύονται σε PDF αρχεία, οπότε το link για το PDFSharp μου είναι ιδιαίτερα χρήσιμο!!!!
    Βέβαια θα υπάρχει αποθήκευση πολλαπλών σελίδω οπότε πρέπει να δω αν μπορώ να το χρησιμοποιήσω (δεν το εχω δεί ακόμα το link Sad )

    Όσον αφορά το iText θα του ρίξω και αυτού μια ματιά για να δώ που θα καταλήξω

    Ευχαριστώ
  •  15-03-2011, 23:20 64232 σε απάντηση της 64228

    Απ: Scanning Documents C#

    Για να δημιουργήσεις ένα PDF με πολλαπλές σελίδες δημιουργείς ένα PDF page ανά scan και εισάγεις τη σκαναρισμένη εικόνα μέσα στη σελίδα, κάνοντας scale στο μέγεθος της σελίδας. Για παράδειγμα, με το PDFSharp μπορείς να κάνεις το παρακάτω:

     public void SaveTo(Stream outStream, IList<byte[]> images)
    {
                using (var doc = new PdfDocument())
                {
    
                    foreach (var pic in images)
                    {
                        var page = doc.AddPage();
                        using (var stream = new MemoryStream(pic))
                        using (XGraphics gfx = XGraphics.FromPdfPage(page))
                        {
                            XImage image = XImage.FromStream(stream);
                            gfx.DrawImage(image, new XRect(0, 0, page.Width, page.Height));
                        }
                    }
                    doc.Save(outStream);
                }
    }

    Το PDFSharp εξομειώνει το Graphics object του GDI+ και των WinForms οπότε μπορείς να "ζωγραφίσεις" μία εικόνα επάνω σε μία σελίδα.

     

    asdfas


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems