Заказы на печать, групповые запросы на печать

Заказы на печать, групповые запросы на печать

У меня есть следующая система

  1. Одно из 12 писем приходит между 5 и 7 утра в случайном порядке
  2. Правило Outlook берет электронное письмо и запускает сценарий VBA, который изменяет и автоматически печатает части некоторых прикрепленных электронных таблиц (не всех).
  3. Я забираю все распечатки утром, вручную сортирую их по группам и скрепляю вместе.

Как лучше всего сгруппировать распечатки перед печатью, чтобы их можно было распечатать и скрепить?

решение1

Вы не указали, в каком порядке они должны располагаться...

Попробуйте это. Перейдите в «Свойства принтера» и нажмите кнопку «Дополнительно». Нажмите «Начать печать после того, как последняя страница будет помещена в очередь» и убедитесь, что отмечена галочка «Печатать сначала документы из очереди».

Затем письма будут распечатаны в том порядке, в котором их печатает Outlook. Чтобы проверить, что делает Outlook, вы можете попробовать распечатать в файл и проверить, в каком порядке создаются файлы. Если это неправильный порядок, попробуйте изменить настройки в Outlook, чтобы порядок был таким, как вам нужно; затем снова подключитесь к принтеру.

решение2

Я решил свою проблему и сделал следующее:

  1. Каждый документ печатается в файлы *.xps в папке Z:\Printс помощью принтера XPS (печать PDF недоступна на рабочем компьютере) в VBA с использованием следующего кода:

    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. В 7.00 пакетный скрипт (используяghostscript) запланировано преобразование всех файлов *.xps в файлы *.pdf. Вероятно, нам не нужны две переменные имени файла, это остаток от отладки.

    @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. Затем запускается написанная мной программа Java, которая объединяет отдельные файлы PDF в нужные группы (используя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. Наконец, запускается пакет, который печатает все объединенные файлы pdf. Требуется отложенное завершение процесса, если вы попытаетесь поместить завершение процесса после вызова процесса, он просто скажет вам, что процесс не найден (даже если он прямо там, в диспетчере задач)

      @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
      

Связанный контент