后记:在任何页面大小的左上角绘制徽标

时间:2013-07-24 13:38:03

标签: postscript

我需要将徽标绘制到左上角的现有pdf文件。目前,我在后记中硬编码了y位置。我需要根据使用pdf文件的当前页面大小来更改y位置。和Logo一样,我也需要绘制矩形。还有我对参数进行了硬编码。

我的剧本---

<<
    /PageSize [595 842]
    /EndPage {
        exch pop 2 lt {
            gsave
                20 720 translate     
                40 40 scale        
                77                   
                81                  
                8                    
                [77 0 0 -81 0 81]      
                (Logo.jpg) (r) file /DCTDecode filter 
                false                 
                3                   
                colorimage  
            grestore
            gsave           
                newpath 10 10 60 820 rectstroke
                /_WM_str (Office of XXXX,XXXX) def
                /Helvetica [40 0 0 40 0 0] selectfont
                /DeviceRGB setcolorspace
                0.96 0.96 0.96 setcolor
                currentpagedevice/PageSize get aload pop
                2 div exch 12 div exch translate 90 rotate
                newpath
                _WM_str stringwidth pop 2 div neg 0 moveto
                _WM_str show                
            grestore
            true
        } { false } ifelse
    }bind
>>setpagedevice

使用以下命令,我创建了输出文件。

  

gs -q -sDEVICE = pdfwrite -dBATCH -dNOSAFER -dNOPAUSE   -sOutputFile = output.pdf -dPDFFitPage -dAutoRotatePages = / None -f test.ps 1001.pdf

我需要知道,如何在左上角放置徽标,并在徽标周围从底部到顶部绘制矩形,如冲压?

示例:

image

1 个答案:

答案 0 :(得分:2)

您可以从页面设备字典中提取当前媒体大小:

currentpagedevice / PageSize get

为您提供媒体的宽度和高度,您可以从左上角的位置进行计算。

您要添加的部分的布局取决于您,但您应该能够使用宽度和高度来计算适当的比例因子,以及确定图形的其余部分将去往何处。 / p>

%!
<<
    /PageSize [595 842]
    /EndPage {
        exch pop 2 lt {
            currentpagedevice /PageSize get  %% stack has array [width height]
            0 0 moveto                       %% start at bottom left
            dup 1 get                        %% copy array, get height
            0 exch lineto                    %% line to top left 
            dup 0 get                        %% copy array get width
            10 div cvi 0 rlineto             %% horizontal line from top left, 1/10th of width
            1 get                            %% get height from array
            neg 0 exch rlineto               %% vertical line to bottom of page
            closepath                        %% close path to origin
            0.5 setgray stroke
            true
        } { false } ifelse
    }bind
>>setpagedevice