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

0

Eu tenho um sistema a seguir

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

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

    
por LucasSeveryn 15.07.2015 / 18:22

2 respostas

0

Eu resolvi meu problema e acabei fazendo o seguinte:

  1. Cada documento é impresso em arquivos * .xps, em uma pasta Z:\Print usando a impressora XPS (impressão de PDF não disponível na máquina de trabalho) no 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. No script em lote de 7.00 (usando ghostscript ), a conversão de todos os arquivos * .xps para arquivos * .pdf está agendada. Provavelmente não precisamos de duas variáveis de nome de arquivo, é uma sobra de 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 eu escrevi é executado, ele mescla arquivos pdf separados em grupos desejados (usando o pdfbox )

    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, um lote que imprime todos os arquivos PDF combinados é executado. Matar o processo atrasado é necessário, se você tentar colocar o processo kill após a invocação do processo, ele apenas informará que o processo não foi encontrado (mesmo que esteja 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
      
por 20.07.2015 / 10:26
0

Você não diz em que ordem você quer que eles sejam ...

Tente isso. Vá para Propriedades da impressora e clique no botão Avançado. Clique em "Iniciar impressão após a última página ter spool" e verifique se "Imprimir primeiro os documentos em spool" está marcado.

Os emails serão entã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 seja a desejada. em seguida, reconecte-se à impressora.

    
por 20.07.2015 / 02:06