Configuração no .NET 6 ou Superior
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 solicitação entrante termina com DocImage.axd. Dentro deste bloco, o método UseDoconut é chamado com um objeto DoconutOptions como argumento.
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 instruções using:
using Doconut;
using Doconut.Configs;
using Doconut.Formats;
using Doconut.Clouds;Instanciar objeto Viewer
Esta linha instancia uma nova instância da classe Viewer, permitindo que você crie um objeto viewer no seu código.
var docViewer = new Viewer(_cache, _accessor, licenseFilePath);Configurar um objeto DocOptions
Exemplo de inicialização de um objeto DocOptions com configurações específicas:
var documentOptions = new DocOptions
{
Password = "",
ImageResolution = 200,
TimeOut = 30
};Configurar um objeto de configuração
Inicialize um novo objeto PdfConfig com configurações específicas para manipulação de documentos PDF:
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.
var token = docViewer.OpenDocument(pathToFile, config, documentOptions);Adicionar o viewer no seu 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.
<!-- 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>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 seguinte linha:
var docViewer = new Viewer(_cache, _accessor);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.
var licenseFilePath = Path.Combine(_hostingEnvironment.WebRootPath, "path/to/your/license");
var docViewer = new Viewer(_cache, _accessor, licenseFilePath);Adicionar Licença por Stream
Este método usa a sobrecarga Viewer.DoconutLicense(Stream licenseStream) para adicionar uma licença usando um stream.
using (var licenseStream = new FileStream("path/to/your/license", FileMode.Open))
{
Viewer.DoconutLicense(licenseStream);
}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.
var xmlDoc = new XmlDocument();
xmlDoc.Load("path/to/your/license.xml");
Viewer.DoconutLicense(xmlDoc);Licenças de Plugin Múltiplas Padrão Manual
Se precisar especificar várias licenças, você pode fornecer uma lista de caminhos de arquivos para a inicialização do viewer.
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);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.
using (var pluginLicenseStream = new FileStream("path/to/your/plugin-license.lic", FileMode.Open))
{
Viewer.SetLicensePlugin(pluginLicenseStream);
}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.
var pluginXmlDoc = new XmlDocument();
pluginXmlDoc.Load("path/to/your/plugin-license.xml");
Viewer.SetLicensePlugin(pluginXmlDoc);Pacotes NuGet Obrigató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 maior 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 na 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 gerenciador e carregue-a no visualizador de documentos para exibi-la.
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());
}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.
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 de fontes padrão do sistema.
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 corrigir melhorias importantes 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.
var emailConfig = new EmailConfig {
EmailEncoding = Encoding.UTF8 // Set preferred email encoding
};Codificação de Assunto & Corpo
As propriedades SubjectEncoding e BodyEncoding na classe EmailConfig definem a codificação usada para o assunto e o corpo de um email, respectivamente.
var emailConfig = new EmailConfig {
SubjectEncoding = Encoding.UTF8, // Set encoding for the subject
BodyEncoding = Encoding.UTF8 // Set encoding for the body
};Suporte a Culturas no Visualizador de Word
A propriedade DocumentCulture na classe WordConfig permite definir 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.
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)Baixar Arquivos CSS e JS Necessários
Para garantir que o Doconut funcione corretamente, você precisa incluir arquivos CSS e JS específicos em seu projeto. Você pode baixar um arquivo ZIP contendo todos os arquivos necessários usando o link abaixo: