Ρύθμιση σε .NET 6 ή newer

Αρχείο Startup.cs

Στο αρχείο Startup.cs ενός .NET Core project, αυτά είναι τα γραμμές κώδικα που ορίζουν μια διαδρομή middleware με τη μέθοδο MapWhen. Η παρεχόμενη συνθήκη ελέγχει εάν το αίτημα‑path τελειώνει με DocImage.axd. Μέσα σε αυτό το block, η μέθοδος UseDoconut καλεί έναν DoconutOptions αντικείμενο.

Startup.cs
app.MapWhen(
    context => context.Request.Path.ToString().EndsWith("DocImage.axd"),
    appBranch =>
    {
        appBranch.UseDoconut(new DoconutOptions { UnSafeMode = false, ShowDoconutInfo = false });
    }
);

Προσθήκη Doconut Namespaces

Στο project σας, προσθέστε τις ακόλουθες δηλώσεις using:

Usings
using Doconut;
using Doconut.Configs;
using Doconut.Formats;
using Doconut.Clouds;

Δημιουργία αντικειμένου Viewer

Αυτή η γραμμή δημιουργεί ένα νέο στιγμιότυπο της κλάσης Viewer, επιτρέποντάς σας να δημιουργήσετε ένα αντικείμενο viewer στον κώδικά σας.

Instantiation
var docViewer = new Viewer(_cache, _accessor, licenseFilePath);

Διαμόρφωση αντικειμένου DocOptions

Παράδειγμα αρχικοποίησης ενός αντικειμένου DocOptions με συγκεκριμένες ρυθμίσεις:

DocOptions
var documentOptions = new DocOptions
{
    Password = "",
    ImageResolution = 200,
    TimeOut = 30
};

Διαμόρφωση αντικειμένου config

Αρχικοποιήστε ένα νέο PdfConfig με συγκεκριμένες ρυθμίσεις για την επεξεργασία PDF εγγράφων:

PdfConfig
var config = new PdfConfig { DefaultRender = true, ExtractHyperlinks = true };

Άνοιγμα του εγγράφου σας

Αυτή η γραμμή καλεί τη μέθοδο OpenDocument του viewer, περνώντας το μονοπάτι του αρχείου εγγράφου στον server και τα αντικείμενα PdfConfig και DocOptions ως παραμέτρους.

OpenDocument
var token = docViewer.OpenDocument(pathToFile, config, documentOptions);

Προσθήκη του viewer στο HTML

HTML
<div id="div_ctlDoc"></div>

Προσθήκη CSS και JavaScript

Προσθέστε τα παρακάτω αρχεία CSS και JavaScript στη σελίδα. Τα σενάρια περιλαμβάνονται στο ZIP αρχείο με τα παραδείγματα κώδικα.

HTML Headers
<!-- Main Viewer Related Scripts -->
<script src="scripts/splitter.js"></script>
<script src="scripts/docViewer.js"></script>
<script src="scripts/documentLinks.js"></script>

<!-- Viewer functions -->
<script src="scripts/docViewer.UI.js?v=1"></script>

Προσθήκη Αδειών στο Project σας

Αυτόματη Εντοπισμός Άδειας

Για να αρχικοποιήσετε το docViewer με αυτόματη εντόπιση άδειας, χρησιμοποιήστε τη γραμμή:

C#
var docViewer = new Viewer(_cache, _accessor);

Προσθήκη Προεπιλεγμένης Άδειας Manual

Μπορείτε να καθορίσετε το μονοπάτι σε ένα προεπιλεγμένο αρχείο άδειας κατά την αρχικοποίηση του viewer.

C#
var licenseFilePath = Path.Combine(_hostingEnvironment.WebRootPath, "path/to/your/license");
var docViewer = new Viewer(_cache, _accessor, licenseFilePath);

Προσθήκη Άδειας με Stream

Αυτή η μέθοδος χρησιμοποιεί το overload Viewer.DoconutLicense(Stream licenseStream) για να προσθέσει άδεια μέσω ροής.

C#
using (var licenseStream = new FileStream("path/to/your/license", FileMode.Open))
{
    Viewer.DoconutLicense(licenseStream);
}

Προσθήκη Άδειας με XML Document

Αυτή η μέθοδος χρησιμοποιεί το overload Viewer.DoconutLicense(XMLDocument licence) για να προσθέσει άδεια μέσω XML εγγράφου.

C#
var xmlDoc = new XmlDocument();
xmlDoc.Load("path/to/your/license.xml");
Viewer.DoconutLicense(xmlDoc);

Προεπιλεγμένες Πολλαπλές Άδειες Plugin

Αν χρειάζεται να καθορίσετε πολλαπλές άδειες, μπορείτε να δώσετε μια λίστα με διαδρομές αρχείων κατά την αρχικοποίηση του viewer.

C#
List<string> licenseFilePaths = new List<string>
{
    Path.Combine(_hostingEnvironment.WebRootPath, "Doconut.Viewer.lic"),
    Path.Combine(_hostingEnvironment.WebRootPath, "Doconut.Viewer.Annotation.lic"),
    Path.Combine(_hostingEnvironment.WebRootPath, "Doconut.Viewer.Search.lic")
};
var docViewer = new Viewer(_cache, _accessor, licenseFilePaths);

Προσθήκη Άδειας Plugin με Stream

Αυτή η μέθοδος χρησιμοποιεί το overload Viewer.SetLicensePlugin(Stream pluginLicence) για να προσθέσει άδεια plugin μέσω ροής.

C#
using (var pluginLicenseStream = new FileStream("path/to/your/plugin-license.lic", FileMode.Open))
{
    Viewer.SetLicensePlugin(pluginLicenseStream);
}

Προσθήκη Άδειας Plugin με XML Document

Αυτή η μέθοδος χρησιμοποιεί το overload Viewer.SetLicensePlugin(XMLDocument xmlPluginLicence) για να προσθέσει άδεια plugin μέσω XML εγγράφου.

C#
var pluginXmlDoc = new XmlDocument();
pluginXmlDoc.Load("path/to/your/plugin-license.xml");
Viewer.SetLicensePlugin(pluginXmlDoc);

Απαιτούμενα NuGet Packages

Για να είναι το project σας πλήρως συμβατό με .NET Core Standard, χρειάζεται να συμπεριλάβετε τα ακόλουθα NuGet packages, αλφαβητικά:

  • MessagePack - Version 2.5.140
  • Microsoft.Bcl.AsyncInterfaces - Version 8.0.0
  • Microsoft.Extensions.Caching.Abstractions - Version 8.0.0
  • Microsoft.Extensions.Configuration - Version 8.0.0
  • Microsoft.Extensions.Configuration.Abstractions - Version 8.0.0
  • Microsoft.Extensions.Configuration.FileExtensions - Version 8.0.0
  • Microsoft.Extensions.Configuration.Json - Version 8.0.0
  • Microsoft.Extensions.FileProviders.Abstractions - Version 8.0.0
  • Microsoft.Extensions.FileProviders.Physical - Version 8.0.0
  • Microsoft.Extensions.FileSystemGlobbing - Version 8.0.0
  • Microsoft.Extensions.Primitives - Version 8.0.0
  • System.Buffers - Version 4.5.1
  • System.Formats.Asn1 - Version 8.0.0
  • System.Numerics.Vectors - Version 4.5.0
  • System.Security.Cryptography.Cng - Version 5.0.0
  • System.Security.Cryptography.Pkcs - Version 8.0.0
  • System.Text.Encoding.CodePages - Version 8.0.0
  • System.Text.Encodings.Web - Version 8.0.0
  • System.Text.Json - Version 8.0.3
  • System.Threading.Tasks.Extensions - Version 4.5.4

Render Configuration Options

Μπορείτε να διαμορφώσετε τη συμπεριφορά rendering χρησιμοποιώντας τις παρακάτω επιλογές:

  • CadConfig: Χρησιμοποιείται για αρχεία DWG, DXF και DGN.
  • EmailConfig: Χρησιμοποιείται για αρχεία EML, EMLX και MSG.
  • EpubConfig: Χρησιμοποιείται για αρχεία EPUB.
  • ExcelConfig: Χρησιμοποιείται για αρχεία Excel και CSV.
  • MhtConfig: Χρησιμοποιείται για αρχεία MHT.
  • PptConfig: Χρησιμοποιείται για αρχεία PowerPoint.
  • ProjectConfig: Χρησιμοποιείται για αρχεία MPP.
  • PsdConfig: Χρησιμοποιείται για αρχεία PSD.
  • TxtConfig: Χρησιμοποιείται για αρχεία TXT.
  • TiffConfig: Χρησιμοποιείται για αρχεία TIFF.

Render Options Configuration

Οι επιλογές rendering διαμορφώνονται μέσω της ιδιότητας DefaultRender:

  • DefaultRender = true : Προσφέρει υψηλότερη ποιότητα rendering αλλά απαιτεί περισσότερη μνήμη και χρόνο επεξεργασίας στον server.
  • DefaultRender = false : Παρέχει γρηγορότερο rendering με μικρή μείωση της ποιότητας.

How To Add An Image Annotation

In C#

1. Ανοίξτε το έγγραφο και λάβετε τις διαστάσεις της πρώτης σελίδας. 2. Αρχικοποιήστε το AnnotationManager με τις διαστάσεις της σελίδας. 3. Δημιουργήστε ένα ImageAnnotation, ορίζοντας το imgUrl με τη διαδρομή της εικόνας, και καθορίστε θέση και μέγεθος μέσα σε Rectangle. 4. Προσθέστε το annotation στον manager και φορτώστε το στον document viewer για εμφάνιση.

C#
var token = docViewer.OpenDocument(pathToFile, config, documentOptions);

var firstPage = docViewer.GetThumbnailDimensions(1, 0, 100, false);
var pageWidth = firstPage.Width;
var pageHeight = firstPage.Height;

using (var annMgr = docViewer.GetAnnotationManager(pageWidth, pageHeight))
{
    string imgUrl = "img/sample.png";
    var imgAnn = new ImageAnnotation(
        1,
        new Rectangle(600, 700, 750, 300),
        imgUrl
    );

    annMgr.Add(imgAnn);
    docViewer.LoadAnnotationXML(annMgr.GetAnnotationXml());
}

In JavaScript

1. Βεβαιωθείτε ότι το YourController είναι διαθέσιμο. 2. Δημιουργήστε ένα νέο ImageAnnotation, ορίζοντας τη διαδρομή της εικόνας με SetNote. 3. Προσθέστε και σχεδιάστε το annotation για να εμφανιστεί στο έγγραφο.

JavaScript
function ImageStamp() {
    if (null != objctlDoc.YourController()) {
        var objStampImage = new ImageAnnotation({ left: 200, top: 200, width: 260, height: 55 });
        objctlDoc.YourController().AddAnnotation(null, objStampImage, null);

        objStampImage.SetNote('/images/Approved_Stamp.png');
        objStampImage.Paint();
    }
}

Custom Fonts in Word documents

Η ιδιότητα FontFolders της κλάσης WordConfig καθορίζει προσαρμοσμένους καταλόγους όπου η εφαρμογή θα αναζητήσει γραμματοσειρές. Αυτό είναι ιδιαίτερα χρήσιμο για επεξεργασία Word εγγράφων που απαιτούν γραμματοσειρές μη εγκατεστημένες στο σύστημα.

Usage
var config = new WordConfig
{
    FontFolders = new string[] { "C:\\CustomFonts", "D:\\SharedFonts" }
};

Important Update for Doconut 25.2.0

Είναι απαραίτητο να ενημερώσετε το πακέτο System.Text.Json στην έκδοση 8.0.5 σε όλα τα projects σας. Η ενημέρωση αυτή είναι κρίσιμη για τη συμβατότητα με τις τελευταίες λειτουργίες και για βελτιώσεις ασφαλείας.

Email Encoding

Η ιδιότητα EmailEncoding στην κλάση EmailConfig καθορίζει την προτιμώμενη κωδικοποίηση για το θέμα και το σώμα του email.

Usage
var emailConfig = new EmailConfig {
    EmailEncoding = Encoding.UTF8 // Set preferred email encoding
};

Subject & Body Encoding

Οι ιδιότητες SubjectEncoding και BodyEncoding στην κλάση EmailConfig ορίζουν τη κωδικοποίηση που θα χρησιμοποιηθεί για το θέμα και το σώμα του email, αντίστοιχα.

Usage
var emailConfig = new EmailConfig {
    SubjectEncoding = Encoding.UTF8, // Set encoding for the subject
    BodyEncoding = Encoding.UTF8     // Set encoding for the body
};

Word Viewer Culture Support

Η ιδιότητα DocumentCulture στην κλάση WordConfig επιτρέπει τον ορισμό της κουλτούρας (culture) για αρχεία DOC και DOCX. Έτσι εξασφαλίζεται η σωστή εμφάνιση τοπικοποιημένων στοιχείων όπως ημερομηνίες, νομίσματα και αριθμοί, όπως εμφανίζονται στο Microsoft Word.

Usage
var config = new WordConfig { DocumentCulture = "he-IL" }; // Hebrew (Israel)
var config = new WordConfig { DocumentCulture = "ar-SA" }; // Arabic (Saudi Arabia)
var config = new WordConfig { DocumentCulture = "th-TH" }; // Thai (Thailand)
var config = new WordConfig { DocumentCulture = "ja-JP" }; // Japanese (Japan)

Download Required CSS and JS Files

Για να λειτουργήσει σωστά το Doconut, πρέπει να συμπεριλάβετε συγκεκριμένα αρχεία CSS και JS στο project σας. Μπορείτε να κατεβάσετε ένα ZIP αρχείο με όλα τα απαραίτητα αρχεία χρησιμοποιώντας το παρακάτω κουμπί: