Ir para o conteúdo do rodapé
USANDO IRONWORD

Tutorial de impressão em C#: Guia passo a passo

Bem-vindo a este tutorial, onde exploraremos como imprimir documentos do Word usando o Microsoft Interop em um Aplicativo de Console C#. Este guia para iniciantes o guiará pelas etapas para imprimir documentos do Microsoft Word programaticamente.

Pré-requisitos

Antes de mergulhar no código, é essencial ter algumas coisas configuradas:

  • Instalação do Microsoft Word: Certifique-se de ter o Microsoft Word instalado no seu sistema. Caso contrário, acesse o site oficial da Microsoft no seu computador ou a loja de aplicativos para instalá-lo.

  • Configuração do Visual Studio: Você deve ter o Visual Studio instalado com a capacidade de criar um Aplicativo de Console. Se você é um iniciante, considere baixar o Visual Studio Community, que é gratuito e suficiente para nossas necessidades.

  • Um Documento do Word: Tenha um documento do Word de exemplo pronto em sua máquina para fins de teste. Este será o documento que enviaremos para a impressora.

Preparando o ambiente

Criar um Novo Aplicativo de Console

  1. Abra o Visual Studio.
  2. Clique em "Criar um novo projeto."
  3. Procure por "Console App" e selecione o template de C# apropriado.
  4. Dê um nome ao seu projeto (por exemplo, "InteropPrintConsoleTutorial") e escolha um local adequado.

Adicionando Referência Interop

Usar Interop requer uma referência à biblioteca Microsoft Office Interop. Veja como adicioná-la:

  1. No Visual Studio, clique com o botão direito no seu projeto Console na Solution Explorer.
  2. Navegue até Adicionar > Referência.
  3. Na janela do Gerenciador de Referências, vá até a aba COM.
  4. Digite "Microsoft Word" na barra de pesquisa para filtrar a lista.
  5. Nos resultados, selecione "Microsoft Word xx.x Object Library" (onde xx.x denota o número da versão).
  6. Clique no botão OK para adicionar a referência.

Você também pode instalá-la usando o NuGet Package Manager.

Você também pode instalar a biblioteca `Microsoft.Office.Interop.Word` usando o NuGet Package Manager.

Verificar Configurações do Aplicativo

Garanta que o framework alvo do seu aplicativo seja compatível com a biblioteca Interop. Você pode verificar isso clicando com o botão direito no seu projeto em Solution Explorer, selecionando Propriedades, e então visualizando o framework alvo na aba Aplicativo. Se enfrentar problemas com a versão da biblioteca Interop, considere baixar o pacote ou assembly necessário ou ajustar a versão do framework alvo.

Com o ambiente configurado, agora você pode prosseguir com o processo de codificação.

Compreendendo o Objeto Documento

O objeto documento está no centro dos serviços Interop quando se lida com documentos Word. Este objeto representa um documento Microsoft Word e fornece todas as suas funcionalidades.

Uma tarefa comum é abrir um documento:

using Word = Microsoft.Office.Interop.Word;

// Object needed to avoid passing specific parameters
object oMissing = Type.Missing;

// File path to the Word document you want to open
object fileName = @"C:\path_to_document\document.docx";

// Create a new instance of the Word application
Word.Application wordApp = new Word.Application();

// Open the document with specified parameters
Word._Document wordDoc = wordApp.Documents.Open(
    ref fileName, ref oMissing, ref oMissing, ref oMissing, ref oMissing, 
    ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, 
    ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, 
    ref oMissing);
using Word = Microsoft.Office.Interop.Word;

// Object needed to avoid passing specific parameters
object oMissing = Type.Missing;

// File path to the Word document you want to open
object fileName = @"C:\path_to_document\document.docx";

// Create a new instance of the Word application
Word.Application wordApp = new Word.Application();

// Open the document with specified parameters
Word._Document wordDoc = wordApp.Documents.Open(
    ref fileName, ref oMissing, ref oMissing, ref oMissing, ref oMissing, 
    ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, 
    ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, 
    ref oMissing);
$vbLabelText   $csharpLabel

Os múltiplos parâmetros com ref oMissing podem parecer assustadores, mas são essenciais para o método Open, que espera inúmeros argumentos, a maioria dos quais são opcionais.

Implementando a Funcionalidade de Impressão

Com nosso ambiente configurado e entendendo o objeto documento, é hora de mergulhar na funcionalidade central de imprimir documentos Word.

Impressão Básica de Documento Word

Para imprimir o documento, você pode usar o seguinte método:

// Method to print the document using default printer settings
private void ButtonPrint_Click(object sender, EventArgs e)
{
    wordDoc.PrintOut(); // Sends the document to the default printer
}
// Method to print the document using default printer settings
private void ButtonPrint_Click(object sender, EventArgs e)
{
    wordDoc.PrintOut(); // Sends the document to the default printer
}
$vbLabelText   $csharpLabel

Este método envia o documento para a impressora padrão usando as configurações padrão.

Imprimir Documentos Word com Personalizações

Se quiser introduzir um diálogo de impressão, personalizar configurações de impressora ou até imprimir múltiplas páginas, você precisará de uma abordagem mais detalhada:

// Method to print the document with custom settings
private void ButtonPrintWithSettings_Click(object sender, EventArgs e)
{
    // Number of copies to print
    object copies = "1";

    // Page range to print, e.g., pages 1 to 3
    object pages = "1-3";

    // Print the document with specified copies and page range
    wordDoc.PrintOut(Copies: ref copies, Pages: ref pages);
}
// Method to print the document with custom settings
private void ButtonPrintWithSettings_Click(object sender, EventArgs e)
{
    // Number of copies to print
    object copies = "1";

    // Page range to print, e.g., pages 1 to 3
    object pages = "1-3";

    // Print the document with specified copies and page range
    wordDoc.PrintOut(Copies: ref copies, Pages: ref pages);
}
$vbLabelText   $csharpLabel

No código-fonte acima, especificamos o intervalo de páginas e o número de cópias, mas as personalizações potenciais são vastas.

Personalizando Configurações de Impressão

A capacidade de modificar configurações de impressão é o que diferencia o controle programático. Seja para ajustar as configurações da impressora, definir uma impressora específica, ou até imprimir silenciosamente o documento, tudo está ao alcance com Interop.

Impressão Silenciosa

A impressão silenciosa é sobre enviar o documento para a impressora sem quaisquer interações do usuário:

// Object to determine whether to print in the background or not
object background = false;

// Print the document silently (no user interactions)
wordDoc.PrintOut(Background: ref background);
// Object to determine whether to print in the background or not
object background = false;

// Print the document silently (no user interactions)
wordDoc.PrintOut(Background: ref background);
$vbLabelText   $csharpLabel

Especificando uma Impressora

Para imprimir um documento em uma impressora específica que não seja a padrão:

// Set the active printer to a specified printer by name
wordApp.ActivePrinter = "Printer Name";

// Print the document using the specified printer
wordDoc.PrintOut();
// Set the active printer to a specified printer by name
wordApp.ActivePrinter = "Printer Name";

// Print the document using the specified printer
wordDoc.PrintOut();
$vbLabelText   $csharpLabel

Configurações Avançadas de Impressora

Além de apenas especificar a impressora, pode ser necessário ajustar as configurações da impressora:

// Creates a PrintDialog to allow the user to choose printer settings
PrintDialog printDialog = new PrintDialog();
if (printDialog.ShowDialog() == DialogResult.OK)
{
    // Sets the Word application's active printer to the user's choice
    wordApp.ActivePrinter = printDialog.PrinterSettings.PrinterName;

    // Prints the document using user's selected printer settings
    wordDoc.PrintOut();
}
// Creates a PrintDialog to allow the user to choose printer settings
PrintDialog printDialog = new PrintDialog();
if (printDialog.ShowDialog() == DialogResult.OK)
{
    // Sets the Word application's active printer to the user's choice
    wordApp.ActivePrinter = printDialog.PrinterSettings.PrinterName;

    // Prints the document using user's selected printer settings
    wordDoc.PrintOut();
}
$vbLabelText   $csharpLabel

Dessa forma, o usuário pode ajustar manualmente configurações como orientação, impressão duplex, e mais.

Apresentando IronWord

Embora o Microsoft Interop forneça funcionalidades para gerenciar documentos Word, não é tão robusto e eficiente quanto deveria ser para uso comercial sério. Entra em cena IronWord—uma alternativa superior ao Interop para processamento de arquivos DOCX do Word. IronWord permite leitura, escrita e manipulação perfeita de arquivos Excel em C#. Saiba mais sobre como começar com IronWord.

IronXL for .NET: A Biblioteca C# para Excel

Conclusão

Neste tutorial, exploramos os passos envolvidos em utilizar o Microsoft Interop para imprimir documentos Word programaticamente em um Aplicativo Console em C#. Vimos como mostrar o diálogo de impressão, definir configurações de impressão personalizadas e controlar vários aspectos da impressão, como escolher uma impressora especificada ou definir um intervalo de páginas. Embora o Interop ofereça capacidades fundamentais, vale a pena notar que existem alternativas potentes como IronWord.

Perguntas frequentes

Quais são os pré-requisitos para imprimir documentos do Word em C#?

Para imprimir documentos do Word em C#, você precisa ter o Microsoft Word e o Visual Studio instalados em sua máquina. Como alternativa, você pode usar o IronWord para processamento de documentos, que não exige a instalação do Microsoft Word.

Como posso configurar um novo aplicativo de console no Visual Studio para impressão de documentos do Word?

Para configurar um novo aplicativo de console no Visual Studio, abra o IDE, selecione "Criar um novo projeto", pesquise por "Aplicativo de console", escolha o modelo C# e nomeie seu projeto de acordo.

Como adiciono uma referência à biblioteca Microsoft Interop para impressão de documentos do Word?

No Visual Studio, clique com o botão direito do mouse no seu projeto, selecione Adicionar > Referência e, na guia COM, selecione 'Microsoft Word xx.x Object Library'. Com o IronWord, você pode gerenciar documentos do Word sem precisar de referências COM.

Qual é o papel do Objeto Documento nos serviços de interoperabilidade do Word?

O objeto Documento nos serviços de interoperabilidade representa um documento do Microsoft Word e permite a manipulação programática do documento. O IronWord oferece funcionalidades semelhantes com desempenho e eficiência aprimorados.

Como posso imprimir um documento do Word usando as configurações padrão da impressora em C#?

Você pode imprimir um documento do Word com as configurações padrão da impressora usando o método wordDoc.PrintOut() no Interop. O IronWord oferece um processo de impressão simplificado com maior controle sobre as configurações.

Quais são os passos envolvidos na personalização das configurações de impressão de documentos do Word em C#?

Para personalizar as configurações de impressão, como o número de cópias ou o intervalo de páginas, use o método PrintOut com parâmetros específicos, como Copies: ref copies e Pages: ref pages . O IronWord oferece opções semelhantes para impressão personalizável.

Como funciona a impressão silenciosa em documentos do Word em C#?

A impressão silenciosa permite imprimir documentos sem interação do usuário, definindo o parâmetro Background como false no método wordDoc.PrintOut(Background: ref background) . O IronWord oferece suporte eficiente à impressão silenciosa.

Como posso selecionar uma impressora diferente da padrão para imprimir documentos do Word em C#?

Você pode especificar uma impressora diferente definindo wordApp.ActivePrinter com o nome da impressora desejada antes de executar wordDoc.PrintOut() . O IronWord oferece funcionalidade semelhante para seleção de impressora.

Quais são os benefícios de usar o IronWord para processar documentos do Word em C#?

O IronWord oferece processamento robusto e eficiente de documentos do Word, permitindo leitura, escrita e manipulação perfeitas de arquivos DOCX em C#, sem a necessidade de instalação do Microsoft Word.

Como posso adicionar uma caixa de diálogo de impressão para personalização ao imprimir documentos do Word em C#?

Para exibir uma caixa de diálogo de impressão, use a classe PrintDialog para permitir que os usuários escolham as configurações da impressora e, em seguida, defina wordApp.ActivePrinter com o nome da impressora selecionada antes de imprimir. O IronWord também oferece suporte a caixas de diálogo de impressão personalizadas pelo usuário.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me