2

我想在 Ubuntu 13.04 机器上从 code::blocks 12.11 打印一些代码。所有其他打印似乎都很好,但输出到打印机和文件(postscipt)的颜色奇怪地错位了。文本似乎都在那里,但不同颜色的文本被移动/缩放/覆盖,使其无法使用(遗憾的是我没有包含图像的声誉)所以我在picpaste上传了一个。

任何想法 - 我不知道这是 CB、ubuntu 还是..?

谢谢

4

1 回答 1

0

哇。那个文件里有很多废话。一遍又一遍地重新编码相同的字体。0 0 translate. 1.00000000 1.00000000 scale. 我不确定是责怪 wxWindows PostScript 渲染器还是 code::blocks,但那是一些糟糕的postscript 代码。

我做了一个解决方法,但这并不是真正的修复。如果任何负责方正在阅读此内容,请不要这样做并认为它已修复。它坏了。

也就是说,在之后插入此代码%%BeginProlog似乎会产生更好的结果。似乎文本的位置使用了错误的空格字符大小,因此将所有字体缩小一点使其看起来不错。

/shrinkfont {
    dup dup findfont dup length dict begin {
        1 index /FID ne {
            1 index /FontMatrix ne {
                def
            }{
                .0008 exch .0008 exch
                dup length array copy
                scale def
            } ifelse
        } { pop pop } ifelse
    } forall
    currentdict end definefont pop pop
} def 
/Courier shrinkfont
/Courier-Bold shrinkfont
/Courier-Oblique shrinkfont

打包为 AWK 脚本:

#shrinkfont.awk
!/%%BeginProlog/{print}
/%%BeginProlog/{
print "%%BeginProlog"
print "    % modification by shrinkfont.awk"
print "    /shrinkfont {"
print "        dup dup findfont dup length dict begin"
print "        {"
print "            1 index /FID ne {"
print "                1 index /FontMatrix ne {"
print "                    def"
print "                }{"
print "                    .0008 exch .0008 exch"
print "                    dup length array copy"
print "                    scale def"
print "                } ifelse"
print "            } { pop pop } ifelse"
print "        } forall"
print "        currentdict end definefont pop pop"
print "    } def"
print "    /Courier shrinkfont"
print "    /Courier-Bold shrinkfont"
print "    /Courier-Oblique shrinkfont"
print "    % end modification"
}

调用:

awk -f shrinkfonts.awk postscripttest.txt > postscripttest.ps
于 2013-09-11T20:43:24.107 回答