繁体   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