1

我需要将现有 pdf 文件的 Logo 绘制到左上角。目前,我在后记中硬编码了 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

我需要知道,如何将徽标定位在左上角并像冲压一样在徽标周围从下到上绘制矩形?

例子:

图片

4

1 回答 1

2

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

当前页面设备 /PageSize 获取

这给了你媒体的宽度和高度,你可以从左上角的位置计算出来。

您要添加的部分的布局取决于您,但您应该能够使用宽度和高度来计算适当的比例因子,并确定图形的其余部分将去哪里。

%!
<<
    /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
于 2013-07-25T07:09:04.847 回答