Pengaturan di .NET 6 atau Lebih Tinggi
File Startup.cs
Dalam file Startup.cs dari proyek .NET Core, baris kode ini mendefinisikan konfigurasi pipeline middleware menggunakan metode MapWhen. Predikat yang diberikan memeriksa apakah jalur permintaan yang masuk berakhir dengan DocImage.axd. Di dalam blok ini, metode UseDoconut dipanggil dengan objek DoconutOptions sebagai argumen.
app.MapWhen(
ctx => ctx.Request.Path.Value?.EndsWith("DocImage.axd", StringComparison.OrdinalIgnoreCase) == true,
branch => branch.UseDoconut());Tambahkan Namespace Doconut
Di proyek Anda, tambahkan pernyataan using berikut:
using Doconut;
using Doconut.Configs;
using Doconut.Clouds;Instansiasi objek Viewer
Baris ini menginstansiasi instance baru dari kelas Viewer, memungkinkan Anda membuat objek viewer dalam kode Anda.
// License is configured via AddDoconut; obtain the viewer from DI.
var docViewer = app.Services.GetRequiredService<Viewer>();Siapkan objek DocOptions
Contoh inisialisasi objek DocOptions dengan konfigurasi spesifik:
```csharp
// Document opening options – password and session timeout
var docOptions = new DocOptions
{
Password = string.Empty,
TimeOut = 30
};
// Per‑format rendering options – set image resolution via the format‑specific config
var pdfConfig = new PdfConfig
{
ImageResolution = 200
};
```Siapkan objek config
Inisialisasi objek PdfConfig baru dengan konfigurasi spesifik untuk menangani dokumen PDF:
var config = new PdfConfig { DefaultRender = true, ExtractHyperlinks = true };Buka dokumen Anda
Baris ini memanggil metode OpenDocument dari objek viewer, dengan memberikan jalur file dokumen yang terletak di server serta objek PdfConfig dan DocOptions yang telah dikonfigurasi sebelumnya sebagai parameter.
var token = await viewer.OpenDocumentAsync(path, new PdfConfig
{
AllowSearch = true,
AllowCopy = true,
ImageResolution = 150
});Tambahkan viewer di HTML Anda
<div id="div_ctlDoc"></div>Tambahkan file CSS dan JavaScript
Tambahkan file CSS dan JavaScript berikut di halaman. Skrip ini termasuk dalam file ZIP dengan contoh kode.
<!-- 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>Tambahkan Lisensi ke Proyek Anda
Deteksi Lisensi Otomatis
Untuk menginisialisasi docViewer dengan deteksi lisensi otomatis, gunakan baris berikut:
app.MapPost("/api/open", async (Viewer viewer) =>
{
// The token is opaque — hand it to the widget, never log or persist it.
string token = await viewer.OpenDocumentAsync("wwwroot/files/Sample.pdf");
return Results.Ok(new { token });
});Tambahkan Lisensi Default Manual
Anda dapat secara manual menentukan jalur ke satu file lisensi default saat menginisialisasi viewer.
builder.Services.AddDoconut(options =>
{
options.LicensePath = Path.Combine(AppContext.BaseDirectory, "wwwroot", "Doconut.Viewer.lic");
});Tambahkan Lisensi melalui Stream
Metode ini menggunakan overload Viewer.DoconutLicense(Stream licenseStream) untuk menambahkan lisensi menggunakan stream.
builder.Services.AddDoconut(options =>
{
options.LicensePath = Path.Combine(AppContext.BaseDirectory, "wwwroot", "Doconut.Viewer.lic");
});Tambahkan Lisensi melalui Dokumen XML
Metode ini menggunakan overload Viewer.DoconutLicense(XMLDocument licence) untuk menambahkan lisensi menggunakan dokumen XML.
// License XML from a database, environment variable, or secret manager —
// no file on disk. Beaten only by LicenseStream.
builder.Services.AddDoconut(options =>
{
options.LicenseContent = Environment.GetEnvironmentVariable("DOCONUT_LICENSE") ?? "";
});Lisensi Plugin Default Manual Ganda
Jika Anda perlu menentukan beberapa lisensi, Anda dapat menyediakan daftar jalur file ke inisialisasi viewer.
builder.Services.AddDoconut(options =>
{
options.LicensePath = "Doconut.Viewer.lic";
});
builder.Services.AddDistributedMemoryCache(); // session state needs a cache (MVC/Razor Pages already add one)
builder.Services.AddSession(); // Doconut document security rides on ASP.NET session state
app.UseSession(); // call UseSession() before UseDoconut()
app.UseDoconutResources(); // must be registered before UseDoconut()
app.UseDoconut();Tambahkan Lisensi Plugin melalui Stream
Metode ini menggunakan overload Viewer.SetLicensePlugin(Stream pluginLicence) untuk menambahkan lisensi plugin menggunakan stream.
using var pluginLicenseStream = new FileStream("path/to/your/plugin-license.lic", FileMode.Open);
builder.Services.AddDoconut(options =>
{
// The stream takes precedence over LicenseContent, LicensePath, and auto‑search.
options.LicenseStream = pluginLicenseStream;
});Tambahkan Lisensi Plugin melalui Dokumen XML
Metode ini menggunakan overload Viewer.SetLicensePlugin(XMLDocument xmlPluginLicence) untuk menambahkan lisensi plugin menggunakan dokumen XML.
builder.Services.AddDoconut(options =>
{
options.LicensePath = Path.Combine(AppContext.BaseDirectory, "wwwroot", "Doconut.Viewer.lic");
});Paket NuGet yang Diperlukan
Untuk memastikan proyek Anda sepenuhnya kompatibel dengan .NET Core Standard, paket NuGet berikut perlu disertakan, terdaftar dalam urutan alfabet.
- 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
Opsi Konfigurasi Render
Anda dapat mengkonfigurasi perilaku rendering menggunakan opsi berikut:
- CadConfig: Digunakan untuk file DWG, DXF, dan DGN.
- EmailConfig: Digunakan untuk file EML, EMLX, dan MSG.
- EpubConfig: Digunakan untuk file EPUB.
- ExcelConfig: Digunakan untuk file Excel dan CSV.
- MhtConfig: Digunakan untuk file MHT.
- PptConfig: Digunakan untuk file PowerPoint.
- ProjectConfig: Digunakan untuk file MPP.
- PsdConfig: Digunakan untuk file PSD.
- TxtConfig: Digunakan untuk file TXT.
- TiffConfig: Digunakan untuk file TIFF.
Konfigurasi Opsi Render
Opsi render dikonfigurasi menggunakan properti DefaultRender:
- DefaultRender = true : Opsi ini menawarkan rendering dengan kualitas lebih tinggi tetapi menggunakan lebih banyak memori server dan waktu pemrosesan.
- DefaultRender = false : Opsi ini memberikan rendering lebih cepat dengan mengorbankan kualitas yang sedikit berkurang.
Cara Menambahkan Anotasi Gambar
Dalam C#
1. Buka dokumen dan dapatkan dimensi halaman pertama. 2. Inisialisasi AnnotationManager dengan dimensi halaman. 3. Buat ImageAnnotation, mengatur jalur gambar di imgUrl, dan tentukan posisi serta ukuran dalam Rectangle. 4. Tambahkan anotasi ke manager dan muat di viewer dokumen untuk menampilkan.
var token = await viewer.OpenDocumentAsync(pathToFile, config, documentOptions);
// The annotation manager is automatically bound to the opened document's page dimensions.
using var annMgr = viewer.GetAnnotationManager(token);
var imgAnn = new ImageAnnotation(
1,
new Rectangle(600, 700, 750, 300),
"img/sample.png"
);
annMgr.Add(imgAnn);
viewer.LoadAnnotationData(token, annMgr);Dalam JavaScript
1. Pastikan YourController tersedia. 2. Buat ImageAnnotation baru, mengatur jalur gambar dengan SetNote. 3. Tambahkan dan gambar anotasi untuk merendernya pada dokumen.
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();
}
}Font Kustom dalam dokumen Word
Properti FontFolders dalam kelas WordConfig menentukan direktori kustom tempat aplikasi akan mencari font. Ini sangat berguna untuk memproses dokumen Word yang bergantung pada font yang tidak terpasang di direktori font default sistem.
var config = new WordConfig
{
FontFolders = new string[] { "C:\\CustomFonts", "D:\\SharedFonts" }
};Pembaruan Penting untuk Doconut 25.2.0
Sangat penting untuk memperbarui paket System.Text.Json ke versi 8.0.5 di semua proyek Anda. Pembaruan ini penting untuk memastikan kompatibilitas dengan fitur terbaru dan menangani perbaikan keamanan penting.
Enkoding Email
Properti EmailEncoding dalam kelas EmailConfig menentukan enkoding yang diinginkan untuk subjek dan isi email.
var emailConfig = new EmailConfig {
EmailEncoding = Encoding.UTF8 // Set preferred email encoding
};Enkoding Subjek & Isi
Properti SubjectEncoding dan BodyEncoding dalam kelas EmailConfig mendefinisikan enkoding yang digunakan untuk subjek dan isi email, masing-masing.
var emailConfig = new EmailConfig {
SubjectEncoding = Encoding.UTF8, // Set encoding for the subject
BodyEncoding = Encoding.UTF8 // Set encoding for the body
};Dukungan Budaya Penampil Word
Properti DocumentCulture dalam kelas WordConfig memungkinkan Anda secara eksplisit menentukan budaya untuk file DOC dan DOCX. Ini memastikan bahwa konten yang dilokalkan—seperti tanggal, mata uang, dan angka—ditampilkan persis seperti di Microsoft Word. Ini sangat berguna untuk bahasa dengan persyaratan format khusus.
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)