Configuração em .NET Standard / Core

Arquivo Startup.cs

Dentro do arquivo Startup.cs de um projeto .NET Core, estas linhas de código definem uma configuração de pipeline de middleware usando o método MapWhen. O predicado fornecido verifica se o caminho da requisição entrante termina com DocImage.axd. Dentro deste bloco, o método UseDoconut é chamado com um objeto DoconutOptions como argumento.

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

Adicionar namespaces Doconut

No seu projeto, adicione as seguintes declarações using:

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

// TODO: implement licence loading, viewer registration, document opening, conversion using current API

Instanciar objeto Viewer

Esta linha instancia uma nova instância da classe Viewer, permitindo que você crie um objeto viewer dentro do seu código.

Instantiation
// Viewer is injected; no explicit construction required in Doconut.NETStandard 26.9.0

Configurar um objeto DocOptions

Exemplo de inicialização de um objeto DocOptions com configurações específicas:

DocOptions
var documentOptions = new DocOptions
{
    Password = "",
    // ImageResolution is obsolete; omitted.
    TimeOut = 30
};

Configurar um objeto de configuração

Inicialize um novo objeto PdfConfig com configurações específicas para manipular documentos PDF:

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

Abrir seu documento

Esta linha invoca o método OpenDocument do objeto viewer, passando o caminho do arquivo de documento localizado no servidor e os objetos PdfConfig e DocOptions previamente configurados como parâmetros.

OpenDocument
dynamic viewer = null;
var token = viewer.LoadDocument(path, null, null);

Adicionar o viewer no seu HTML

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

Adicionar arquivos CSS e JavaScript

Adicione os seguintes arquivos CSS e JavaScript na página. Esses scripts estão incluídos no arquivo ZIP com exemplos de código.

HTML Headers
<link rel="stylesheet" href="css/viewer.css" />

<!-- Main Viewer Related Scripts -->
<script src="scripts/jquery.min.js"></script>
<script src="scripts/docViewer.js"></script>
<script src="scripts/splitter.js"></script>
<script src="scripts/search.js"></script>
<script src="scripts/documentLinks.js"></script>

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

Adicionar licenças ao seu projeto

Detecção automática de licença

Para inicializar o docViewer com detecção automática de licença, use a linha a seguir:

C#
```csharp
// Create a Viewer instance using the current API (no constructor arguments required).
var docViewer = new Viewer();
```

Adicionar licença padrão manual

Você pode especificar manualmente o caminho para um único arquivo de licença padrão ao inicializar o viewer.

C#
using System.IO;
using Microsoft.Extensions.DependencyInjection;
using Doconut;

var licenseFilePath = Path.Combine(builder.Environment.WebRootPath, "path/to/your/license");
var docViewer = app.Services.GetRequiredService<Viewer>();

Adicionar licença por stream

Este método usa a sobrecarga Viewer.DoconutLicense(Stream licenseStream) para adicionar uma licença usando um stream.

C#
using System.IO;
using Doconut.Infrastructure.Licensing;

using (var licenseStream = new FileStream("path/to/your/license", FileMode.Open, FileAccess.Read))
{
    var license = new DoconutLicense { DocBytes = new BinaryReader(licenseStream).ReadBytes((int)licenseStream.Length) };
}

Adicionar licença por documento XML

Este método usa a sobrecarga Viewer.DoconutLicense(XMLDocument licence) para adicionar uma licença usando um documento XML.

C#
using System.Xml;
using Doconut.Infrastructure.Licensing;

var xmlDoc = new XmlDocument(); // load the license XML
xmlDoc.Load("path/to/your/license.xml");
var license = new DoconutLicense(); // instantiate license object (populate properties as needed)

Licenças múltiplas de plugin padrão manual

Se precisar especificar múltiplas licenças, você pode fornecer uma lista de caminhos de arquivos para a inicialização do viewer.

C#
```csharp
// Prepare the paths to the viewer licence files (kept for reference; the current API loads them automatically)
var 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")
};

// The Viewer class no longer requires the licences in its constructor.
// Create an instance with the default constructor.
var docViewer = new Viewer();

// Open a document (e.g., a PDF) and obtain a token that represents the opened file.
string token = await docViewer.OpenDocumentAsync(
    filePath: Path.Combine(_hostingEnvironment.WebRootPath, "sample.pdf"),
    options: new DocOptions(),
    ct: CancellationToken.None);
```

Adicionar licença de plugin por stream

Este método usa a sobrecarga Viewer.SetLicensePlugin(Stream pluginLicence) para adicionar uma licença de plugin usando um stream.

C#
using (var pluginLicenseStream = new FileStream("path/to/your/plugin-license.lic", FileMode.Open))
{
    // In Doconut.NETStandard 26.9.0 the license is supplied via the configuration
    // passed to OpenDocumentAsync (BaseConfig), so the explicit SetLicensePlugin call
    // is no longer required. Keep the license file accessible to the viewer or
    // include it in your BaseConfig as shown in other samples.
}

Adicionar licença de plugin por documento XML

Este método usa a sobrecarga Viewer.SetLicensePlugin(XMLDocument xmlPluginLicence) para adicionar uma licença de plugin usando um documento XML.

C#
// The license XML is discovered automatically by the viewer in Doconut.NETStandard 26.9.0.
// No explicit API call is required to register it.

string token = await Viewer.OpenDocumentAsync(
    "path/to/your/document.pdf",
    null, // DocOptions – use default settings
    CancellationToken.None);

Pacotes NuGet necessários

Para garantir que seu projeto seja totalmente compatível com .NET Core Standard, os seguintes pacotes NuGet precisam ser incluídos, listados em ordem alfabética.

  • 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

Opções de configuração de renderização

Você pode configurar o comportamento de renderização usando as seguintes opções:

  • CadConfig: usado para arquivos DWG, DXF e DGN.
  • EmailConfig: usado para arquivos EML, EMLX e MSG.
  • EpubConfig: usado para arquivos EPUB.
  • ExcelConfig: usado para arquivos Excel e CSV.
  • MhtConfig: usado para arquivos MHT.
  • PptConfig: usado para arquivos PowerPoint.
  • ProjectConfig: usado para arquivos MPP.
  • PsdConfig: usado para arquivos PSD.
  • TxtConfig: usado para arquivos TXT.
  • TiffConfig: usado para arquivos TIFF.

Configuração de opções de renderização

As opções de renderização são configuradas usando a propriedade DefaultRender:

  • DefaultRender = true : Esta opção oferece renderização de alta qualidade, mas usa mais memória do servidor e tempo de processamento.
  • DefaultRender = false : Esta opção fornece renderização mais rápida ao custo de uma leve redução de qualidade.

Como adicionar uma anotação de imagem

Em C#

1. Abra o documento e obtenha as dimensões da primeira página. 2. Inicialize o AnnotationManager com as dimensões da página. 3. Crie um ImageAnnotation, definindo o caminho da imagem em imgUrl, e especifique a posição e o tamanho dentro de Rectangle. 4. Adicione a anotação ao manager e carregue-a no visualizador de documentos para exibir.

C#
using Doconut.Annotations;
using System.Drawing;

// Placeholder: open the document and obtain page dimensions using the current Doconut.NETStandard API.
// Placeholder: create an annotation manager for the page size.

string imgUrl = "img/sample.png";
var imgAnn = new ImageAnnotation(
    1,
    new Rectangle(600, 700, 750, 300),
    imgUrl
);

// Placeholder: add the annotation to the manager and load the annotation XML back into the viewer using the current API.

Em JavaScript

1. Certifique-se de que YourController esteja disponível. 2. Crie um novo ImageAnnotation, definindo o caminho da imagem com SetNote. 3. Adicione e pinte a anotação para renderizá-la no documento.

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();
    }
}

Fontes personalizadas em documentos Word

A propriedade FontFolders na classe WordConfig especifica diretórios personalizados onde a aplicação buscará fontes. Isso é particularmente útil para processar documentos Word que dependem de fontes não instaladas nos diretórios padrão de fontes do sistema.

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

Atualização importante para Doconut 25.2.0

É essencial atualizar o pacote System.Text.Json para a versão 8.0.5 em todos os seus projetos. Esta atualização é crucial para garantir compatibilidade com os recursos mais recentes e para abordar importantes melhorias de segurança.

Codificação de email

A propriedade EmailEncoding na classe EmailConfig especifica a codificação preferida tanto para o assunto quanto para o corpo do email.

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

Codificação de assunto e corpo

As propriedades SubjectEncoding e BodyEncoding na classe EmailConfig definem a codificação usada para o assunto e o corpo de um email, respectivamente.

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

Suporte a Cultura do Visualizador de Word

A propriedade DocumentCulture na classe WordConfig permite que você defina explicitamente a cultura para arquivos DOC e DOCX. Isso garante que o conteúdo localizado — como datas, moedas e números — seja renderizado exatamente como no Microsoft Word. Isso é particularmente útil para idiomas com requisitos de formatação específicos.

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)