簡體   English   中英

創建后腳本以選擇不同頁面的打印托盤

[英]Creating post script to select printing trays for different pages

我有一個生成PDF文件的應用程序。 我想實現這一目標:有些頁面要用普通紙張(存在於特定的打印機托盤中)打印,而其他頁面用特殊的不干​​膠紙張打印(從另一個打印機托盤打印)

如果PDF文件本身可以包含這些信息,這些信息將在打印時讀取,它可以解決問題,但我不認為這是可能的。

我設法檢查PDF並生成一個包含其規格的文件。 這是一些代碼:

        sw = New StreamWriter(File.Open(DATOutputFile, FileMode.Create))
        sw.WriteLine("Zustell".PadRight(20, " ") & ZustellPages(0))


        Dim i As Integer
        Dim aux = ""
        For i = 0 To AddressPages.Count - 2
            aux = aux & AddressPages(i) & ","
        Next
        aux = aux & AddressPages(i)
        sw.WriteLine("Adressen".PadRight(20, " ") & aux)

        aux = ""
        For i = 0 To BotenPages.Count - 2
            aux = aux & BotenPages(i) & ","
        Next
        aux = aux & BotenPages(i)
        sw.WriteLine("Botenbezirk".PadRight(20, " ") & aux)

        aux = ""
        For i = 0 To Etiquetas.Count - 2
            aux = aux & Etiquetas(i)(0) & "-" & Etiquetas(i)(1) & ","
        Next
        aux = aux & Etiquetas(i)(0) & "-" & Etiquetas(i)(1)
        sw.WriteLine("Label".PadRight(20, " ") & aux)

        sw.Close()

這個位創建一個如下所示的文件:

部分文件

也就是說,我知道哪些頁面包含標簽,地址等。在訂購打印時,每個頁面都指向不同的打印機托盤。

怎么能實現這一目標?

我可以使用PDF中的托盤規格創建帖子腳本文件,還是創建Crystal報表?

編輯:

我已經從PDF創建了一個PS文件,並在每個頁面的規范的開頭,有這樣的東西:

%%Page: 11 72
%%BeginPageSetup
%%PageBoundingBox: 0 0 596 842
%%PageOrientation: Portrait
%%EndPageSetup
%%<!--LARADOCID--xx/10000000/E/0000011-->
<< /MediaPosition 3 /TraySwitch false >> setpagedevice
<< /PageSize [595 842] /ImagingBBox null >> setpagedevice
STARTP

我在想這里是插入一些代碼來指定要用於該頁面的托盤的地方,但是,我不知道該怎么做。

您可以嘗試為PDF文件創建作業單,但這取決於您的打印機是否能夠讀取PJTF並對PJTF執行操作(可以嵌入PDF文件中)。

無論您是否可以在轉換為PostScript時執行此操作,而非依賴於將PDF轉換為PostScript所使用的軟件,答案可能是“可能不是”。

您最好的選擇可能是轉換為符合DSC標准的PostScript文件,然后對PostScript進行后期處理,並在每頁的頁面設置中注入托盤選擇。 DSC兼容文件的結構使得可以相對容易地找到這些部分。

當然,您需要知道打印機所需的托盤選擇PostScript序列。

我正在嘗試解決類似的問題,我需要在不同的托盤上打印每個頁面。 postscript文件創建由兩個部分組成,該程序由想要打印創建ps而沒有任何打印機特定命令的程序制作,另一部分是postscript驅動程序添加有關托盤選擇,頁面大小,...的所有信息。能夠在HP上的每台打印機上指定正確命令的不同托盤上打印

%%PageTrailer
%%Page: 2 2
%%PageBoundingBox: 0 0 595 842
%%BeginPageSetup
/pagesave save def
21 0 obj
<</Type/Page/MediaBox [0 0 595 842]
/Parent 3 0 R
/Resources<</ProcSet[/PDF]
/Font 23 0 R
>>
/Contents 22 0 R
/CropBox 
[0 0 594.0 842.0]
>>
<</ManualFeed false /MediaPosition 0>> setpagedevice  <-- just add this 
endobj
%%EndPageSetup
22 0 obj
<</Length 922>>stream

在Lexmark上我添加了類似currentpagedevice / InputAttributes得到的東西得到0 setpagedevice我剛做了一些反向工程。 打印機停止,我在打印機C生成的ps版本之間做了一些差異:\\ Windows \\ System32 \\ spool \\ PRINTERS更改托盤輸出

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM