Pergunta

Estou tendo um problema ao tentar imprimir programaticamente um diretório de documentos do Word. Neste exemplo, estou tentando imprimir apenas os arquivos com o "3_" prefixo. O problema é que o arquivo não imprimir a menos que haja dois arquivos com o prefixo 3_. Eu tenho procurado em torno de sempre para descobrir este problema fora. Há algo de errado com a maneira que eu estou abrindo o arquivo? Ele só funciona quando há dois arquivos no diretório, caso em que ele irá imprimir apenas um dos dois arquivos.

Edit: Eu tentei um messagebox e o caminho está correto. O nome do arquivo está correto. Além disso, se eu estou assistindo a impressora na pasta de impressoras, um documento pisca-se por um breve segundo e depois desaparecem (tenho a impressão parou para que eu possa ver a saída). Se a palavra está me dando um erro, por que não mostrar? E por que isso funciona se houver dois arquivos no diretório com o 3_ prefixo?

Edit: Eu acho que é um problema com o método de impressão (). Quando eu definir o aplicativo visível e executá-lo, o documento é aberto, mas nada é impresso. Eu posso abrir o documento manualmente e imprimir (que funciona bem).

Edit: Obrigado a todos pelas respostas. O parâmetro de fundo no método de impressão () era a questão. O programa iria sair antes da impressão pode enrolar totalmente (que é por isso que eu iria ver um flash documento na fila de impressão e desaparecer. Voltando fundo impressão off exigido o documento para permanecer aberto e imprimir, o que foi fundamental. Obrigado

string[] filesToCheck = Directory.GetFiles(clientDirectoryPath);
    Object filename = null;
        for (int i = 0; i < filesToCheck.Count();i++ )
        {
            if(filesToCheck[i].Contains("3_"))
            {
                filename = filesToCheck[i];
                wrdDoc = wrdApp.Documents.Open(ref filename, ref oMissing, ref oTrue, ref oFalse,
                                               ref oMissing, ref oMissing,
                                               ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                                               ref oMissing,
                                               ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                                               ref oMissing);
                wrdDoc.PageSetup.FirstPageTray = letterHeadTray;
                wrdDoc.PageSetup.OtherPagesTray = defaultTray;
                wrdDoc.PrintOut(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,
                                ref oMissing, ref oMissing, ref oMissing);
                wrdDoc.Close(ref oFalse, ref oMissing, ref oMissing);
                wrdDoc = null;
            }
        }
Foi útil?

Solução

Tente e defina o parâmetro Background (1º param) do PrintOut () chamada para False.

Provavelmente o último trabalho de impressão não é completamente spool e cancelou uma vez que o objeto do Word COM é liberada muito cedo.

Outras dicas

uso tentativa

string[] files = Directory.GetFiles(dir, "3_*.doc");
foreach(string file in files) { }

em vez de

for (int i = 0; i < filesToCheck.Count(); i++ ) { }

Não parece ser nada de errado com o seu algoritmo postada. você pode tentar o seguinte

  1. Adicionar um ponto de interrupção e certifique-se o objeto filesToCheck tem todos os nomes de arquivos nele? É possível que este valor é incorreto e jogando fora de seu algoritmo
  2. Em vez de imprimir o documento, em vez alterar o código para lançar uma caixa de mensagem para cada nome de arquivo. Isso vai eliminar a parte real ser a impressão do problema (não vejo como poderia ser).

Além disso, você poderia postar o código que obtém o objeto filesToCheck?

Editar

OP mencionou que todos os arquivos estão definitivamente ficando completamente. Tentar envolver a operação de impressão em um bloco try / catch e ver se há alguma exceção sendo jogados que estão impedindo que os arquivos sejam impressos.

Tente não usar um "_" no nome do arquivo. Eu vi algumas peculiaridades estranhas antes com que o carregador e PrintOut.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top