我有一個以下系統
- 上午 5 點至 7 點之間收到 12 封電子郵件中的一封,順序隨機
- Outlook 規則會擷取電子郵件,並執行 VBA 腳本,該腳本會自動修改和列印某些附加電子表格的一部分(並非全部)
- 我早上拿起所有列印輸出,手動將它們分組並裝訂在一起
在列印之前將列印輸出分組以便可以列印和裝訂的最佳方法是什麼?
答案1
你沒有說你想要它們的順序...
嘗試這個。前往印表機屬性並點選進階按鈕。點擊“最後一頁假脫機後開始列印”,並確保選取“先列印假脫機文件”。
然後,電子郵件將按照 Outlook 列印的順序進行列印。若要測試 Outlook 的功能,您可以嘗試列印到文件,並檢查文件的建立順序。如果這不是正確的順序,請嘗試更改 Outlook 中的設置,使順序符合您的要求;然後重新連接到印表機。
答案2
我解決了我的問題並最終執行了以下操作:
每個文件都列印為 *.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
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
然後運行我編寫的一個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(); } }
最後,執行列印所有組合 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