[英]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.