VB .NET -  Protegendo Arquivos do Word e incluindo uma marca d'agua


Neste artigo vou mostrar como podemos proteger arquivos do Microsoft Word com senha e também como incluir uma marca d'água usando a biblioteca Spire.Doc for .Net.

A biblioteca Spire.Doc for .NET para a plataforma .NET foi projetada especialmente para criar, ler, gravar, converter e imprimir arquivos de documentos do Microsoft Word a partir da plataforma .NET usando as linguagens C# ou VB .NET de forma rápida, simples e com alta qualidade.

Como um componente independente do Word, a Spire.Doc for .NET não precisa que o Microsoft Word esteja instalado na sua máquina, embora ele possa incorporar recursos de criação de documentos Word em aplicativo .NET.

Ela suporta tanto C# como VB .NET e ASP .NET MVC e oferece suporte a Word 97-2003, 2007/2010/2013 tendo a capacidade de converter os arquivos em formatos de arquivos como XML, RTF, XPS, EPUB, EMF, HTML, etc. Além disso a biblioteca suporta a conversão de documentos Word Doc/Docx para PDF usando C# com alta qualidade.

O site oficial pode ser visitado neste link : http://www.e-iceblue.com/Introduce/word-for-net-introduce.html#.Vvwh80e2q9i

A versão gratuita do Free Spire.Doc for .NET pode ser obtida neste link: http://www.e-iceblue.com/Introduce/free-doc-component.html#.VvwhnUe2q9g

A biblioteca free Spire.Doc for .NET é uma biblioteca de classes para Word totalmente independente que não requer que o Microsoft Office esteja instalado no sistema. A Automação Microsoft Office provou ser instável, lenta e não escalável para produzir documentos do MS Word.

A biblioteca free Spire.Doc for .NET é muitas vezes mais rápida que a automação do Microsoft Word, além de mais estável e escalável, permitindo que os desenvolvedores processem documentos do Word já existentes com suporte a procura e substituição, alinhamento, quebra de página, campo de preenchimento, cópia de documento, impressão.

A versão gratuita esta limitada a 100 parágrafos e 5 tabelas. Esta limitação é imposta durante a leitura ou gravação de arquivos. Nesta versão, ao converter documentos do word para PDF e XPS arquivos, você pode obter apenas as 3 primeiras página do arquivo PDF.

Mesmo assim, vale a pena conferir alguns dos recursos dessa biblioteca, e no artigo de hoje vamos proteger documentos Word e incluir uma marca d'água para indicar que o documento é confidencial.

Recursos usados:

Nota: Baixe e use a versão Community 2015 do VS ela é grátis e é equivalente a versão Professional.

Criando a solução no VS Community

Abra o VS Community 2015 e clique em New Project;

Selecione a linguagem Visual Basic e o template Windows Forms Application;

Informe o nome Protegendo_DocumentosWord e clique no botão OK;

No formulário padrão form1.vb inclua os seguintes controles a partir da ToolBox:

Disponha os controle conforme o leiaute da figura abaixo:

incluindo uma referência á biblioteca Spire.Doc for .Net via Nuget:

No menu Tools clique em Nuget Package Manager e a seguir em Manage Nuget Packages for Solution;

Clique em Browse e informe o nome Spire.doc localizando esta biblioteca no repositório;

Marque o projeto e clique no botão Install:

Para instalar a biblioteca usando o Package Manager Console digite o comando no console:

Vemos acima a instalação da versão 5.6.62 em nosso projeto.

Definindo o código do projeto

No início do formulário declare as variáveis objeto que iremos usar no projeto:

Imports Spire.Doc
Imports
Spire.Doc.Documents

Agora vamos usar os recursos da bilbioteca Spire.Doc for .NET em nosso projeto:

No evento Click do botão btnLocalizar vamos incluir o código abaixo:

    Private Sub btnLocalizar_Click(sender As Object, e As EventArgs) Handles btnLocalizar.Click
        Dim ofd1 As New OpenFileDialog()
        Dim Arquivo As String = Nothing
        ofd1.Title = "Abrir como"
        ofd1.FileName = "Nome Arquivo"
        ofd1.Filter = "Arquivos Excel (*.docx)|*.docx"
        ofd1.InitialDirectory = "C:\Dados\Word\"
        Dim dr As DialogResult = ofd1.ShowDialog()
        Arquivo = ofd1.FileName
        If Arquivo Is Nothing Then
            MessageBox.Show("Arquivo Invalido", "", MessageBoxButtons.OK)
        Else
            txtArquivoWord.Text = ofd1.FileName
        End If
    End Sub

No evento Click do botão de comando Proteger Documento Word inclua o código abaixo:

 Private Sub btnProtegerDocumento_Click(sender As Object, e As EventArgs) Handles btnProtegerDocumento.Click
        Try
            Dim document As New Document(txtArquivoWord.Text)
            'incluindo uma marca d'água no documento
            Dim txtWatermark As New TextWatermark()
            'atribuindo o texto da marca d'água e a fonte e o leiaute
            txtWatermark.Text = txtTextoMarcaDagua.Text
            txtWatermark.FontSize = 90
            txtWatermark.Layout = WatermarkLayout.Diagonal
            document.Watermark = txtWatermark
            'protegendo o documento com senha
            document.Encrypt(txtSenha.Text)
            'salvando o documento
            document.SaveToFile(txtSalvarArquivoWord.Text, FileFormat.Docx)
            MessageBox.Show("Arquivo Word Protegido com sucesso.")
        Catch ex As Exception
            MessageBox.Show("Erro  " + ex.Message)
        End Try
    End Sub

Para concluir no evento Click do botão - Abrir Documento Word -  inclua o código a seguir:

Private Sub btnAbrirArquivoWord_Click(sender As Object, e As EventArgs) Handles btnAbrirArquivoWord.Click
        Try
            Dim startInfo As New ProcessStartInfo()
            startInfo.FileName = "WINWORD.EXE"
            startInfo.Arguments = txtSalvarArquivoWord.Text
            Process.Start(startInfo)
        Catch ex As Exception
            MessageBox.Show("Erro  " + ex.Message)
        End Try
 End Sub

Agora execute o projeto, selecione um arquivo Word, defina o texto e a senha e clique no botão para proteger o documento.

Após esse processo ao abrir o documento teremos a solicitação da senha e após aberto veremos a marca d'água conforme mostrado abaixo:

Além de definir uma senha para um documento Word podemos também proteger o documento.

A proteção funciona de forma diferente da atribuição de senha. Na proteção o usuário pode acessar o documento mas tem sua permissão de acesso restrita a realizar apenas algumas tarefas.

A biblioteca Spire.Doc for .NET oferece o método Document.Protect(ProtectionType type, String password) na classe Document. Existem cinco tipos de proteção oferecidas:

  1. No Protection:  Define o documento como sem proteção;
  2. AllowOnlyRevisions:  Permite adicionar marcas de revisão no documento;
  3. AllowOnlyComments:  Permite modificar comentários no documento;
  4. AllowOnlyFormFields: Permite informa dados em campos de formulário do documento;
  5. AllowOnlyReading:  Define o acesso como somente leitura ao documento;

Vamos ajustar a nossa interface incluindo dois controles CheckBox no formulário:

Para proteger o documento Word permitindo incluindo a opção de ter o acesso somente leitura podemos usar o código abaixo:

-  document.Protect(ProtectionType.AllowOnlyReading, txtSenha.Text)

 Private Sub btnProtegerDocumento_Click(sender As Object, e As EventArgs) Handles btnProtegerDocumento.Click
        Try
            Dim document As New Document(txtArquivoWord.Text)
            'incluindo uma marca d'água no documento
            Dim txtWatermark As New TextWatermark()
            'atribuindo o texto da marca d'água e a fonte e o leiaute
            txtWatermark.Text = txtTextoMarcaDagua.Text
            txtWatermark.FontSize = 90
            txtWatermark.Layout = WatermarkLayout.Diagonal
            document.Watermark = txtWatermark
            If chkProtegerSenha.Checked Then
                'protegendo o documento com senha
                document.Encrypt(txtSenha.Text)
            ElseIf chkSomenteLeitura.checked Then
                'protegendo somente leitura
                document.Protect(ProtectionType.AllowOnlyReading, txtSenha.Text)
            Else
                'protegendo o documento com senha
                document.Encrypt(txtSenha.Text)
            End If
            'salvando o documento
            document.SaveToFile(txtSalvarArquivoWord.Text, FileFormat.Docx)
            MessageBox.Show("Arquivo Word Protegido com sucesso.")
        Catch ex As Exception
            MessageBox.Show("Erro  " + ex.Message)
        End Try
    End Sub

Pegue o projeto completo aqui :  Protegendo_DocumentosWord.zip (sem as referências)

Ele(o anjo), porém, disse-lhes: Não vos assusteis; buscais a Jesus Nazareno, que foi crucificado; já ressuscitou, não está aqui; eis aqui o lugar onde o puseram.
Marcos 16:6

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?

 

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

 

Referências:


José Carlos Macoratti