訂單列印請求、分組列印請求

訂單列印請求、分組列印請求

我有一個以下系統

  1. 上午 5 點至 7 點之間收到 12 封電子郵件中的一封,順序隨機
  2. Outlook 規則會擷取電子郵件,並執行 VBA 腳本,該腳本會自動修改和列印某些附加電子表格的一部分(並非全部)
  3. 我早上拿起所有列印輸出,手動將它們分組並裝訂在一起

在列印之前將列印輸出分組以便可以列印和裝訂的最佳方法是什麼?

答案1

你沒有說你想要它們的順序...

嘗試這個。前往印表機屬性並點選進階按鈕。點擊“最後一頁假脫機後開始列印”,並確保選取“先列印假脫機文件”。

然後,電子郵件將按照 Outlook 列印的順序進行列印。若要測試 Outlook 的功能,您可以嘗試列印到文件,並檢查文件的建立順序。如果這不是正確的順序,請嘗試更改 Outlook 中的設置,使順序符合您的要求;然後重新連接到印表機。

答案2

我解決了我的問題並最終執行了以下操作:

  1. 每個文件都列印為 *.xps 文件,並Z:\Print使用 VBA 中的 XPS 印表機(PDF 列印在工作電腦上不可用)列印到資料夾中,使用以下程式碼:

    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 批次腳本(使用鬼腳本) 計劃將所有 *.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
      

相關內容