Solicitar solicitações de impressão, solicitações de impressão em grupo

Solicitar solicitações de impressão, solicitações de impressão em grupo

Eu tenho um seguinte sistema em vigor

  1. Um dos 12 e-mails chega entre 5h e 7h, em ordem aleatória
  2. A regra do Outlook pega o e-mail e executa um script VBA que modifica e imprime partes de algumas planilhas anexadas automaticamente (não todas)
  3. Pego todas as impressões pela manhã e as ordeno manualmente em grupos e grampeio

Qual seria a melhor forma de agrupar as impressões antes de imprimir para que possam ser impressas e grampeadas?

Responder1

Você não diz em que ordem os quer...

Experimente isso. Vá para Propriedades da impressora e clique no botão Avançado. Clique em "Iniciar impressão após a última página ser colocada no spool" e certifique-se de que "Imprimir documentos em spool primeiro" esteja marcado.

Os e-mails serão impressos na ordem em que o Outlook os imprime. Para testar o que o Outlook faz, você pode tentar imprimir em arquivo e verificar em que ordem os arquivos são criados. Se essa não for a ordem correta, tente alterar as configurações no Outlook para que a ordem fique como você deseja; em seguida, reconecte-se à impressora.

Responder2

Resolvi meu problema e acabei fazendo o seguinte:

  1. Cada documento é impresso em arquivos *.xps, em uma pasta Z:\Printusando a impressora XPS (impressão de PDF não disponível na máquina de trabalho) em VBA, usando este código:

    Application.ActivePrinter = XPSPrinter
    ActivePrinterName = Application.ActivePrinter
    If (InStr(ActivePrinterName, "XPS")) Then
        Dim Filename As String
        Filename = ActiveWorkbook.name        
        rngPrint.PrintOut Copies:=1, _
        printtofile:=True, prtofilename:=FilePath & File & ".xps"
    End If
    
  2. Às 7h00 script em lote (usandoscript fantasma) a conversão de todos os arquivos *.xps em arquivos *.pdf está agendada. Provavelmente não precisamos de duas variáveis ​​de nome de arquivo, é uma sobra da depuração.

    @echo off
    setlocal enabledelayedexpansion
    
    FOR /R Z:\Overnight\Print %%F in (*.xps) DO (
        Set filename=%%~nF%%~xF
        Set outputFilename=%%~nF%.pdf   
        Set filename2=Z:\Print\%!filename!
        Set outputFilename2=Z:\PrintPDF\%!outputFilename!
        C:\ghostxps\gxps.exe -sDEVICE=pdfwrite -sOutputFile=!outputFilename2! -dNOPAUSE !filename2!
        )
    
    exit
    exit
    
  3. Em seguida, um programa java que escrevi é executado, ele mescla arquivos PDF separados em grupos desejados (usandocaixa de pdf)

    public void combine(String outputName, String[] filenames) throws IOException, PrinterException {
    try {
        PDFMergerUtility mergePdf = new PDFMergerUtility();
        for (String filename : filenames){
            mergePdf.addSource(getFileByName(filename));
        }
        mergePdf.setDestinationFileName(outputPath+outputName+".pdf");
        mergePdf.mergeDocuments();
        System.out.println("Combined "+outputName);
       } catch (Exception e) {
         e.printStackTrace();
       }
    }
    
    1. Finalmente, é executado um lote que imprime todos os arquivos PDF combinados. A eliminação atrasada do processo é necessária, se você tentar encerrar o processo após a invocação do processo, isso apenas informará que o processo não foi encontrado (mesmo que esteja ali no gerenciador de tarefas)

      @echo off
      setlocal enabledelayedexpansion
                  RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n "\\SITE\PRINTER-BATCH"
      FOR /R Z:\CombinedPDF %%F in (*.pdf) DO (
                  Set filename=%%~nF%%~xF
                  Set filename2=Z:\CombinedPDF\%!filename!            
                  start cmd /c "timeout 15 & taskkill /f /im acrord32.exe"
                  call "C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe" /t !filename2!
      
                  )
      RUNDLL32 PRINTUI.DLL,PrintUIEntry /y /n "\\SITE\PRINTER-DEFAULT"
      exit
      exit
      

informação relacionada