PDF 打印输出中交替出现绿条/蓝条,就像点阵打印机上的旧纸一样

PDF 打印输出中交替出现绿条/蓝条,就像点阵打印机上的旧纸一样

有没有办法在 Linux 上实现这种 PDF 输出?
我指的是交替的蓝/绿条,它们过去是预先打印在点阵打印机的纸上的。侧面的导轨/孔将是一个不错的奖励!

在此处输入图片描述

Windows 中有一个程序HercPrt可以生成此结果,无论是通过 Hercules 模拟器还是通过文本到 PDF 转换器。我可能正在寻找 CUPS 虚拟打印机来生成条形图,或者文本到 PDF 转换器,甚至是 LibreOffice 中的模板。当然,欢迎提出其他想法。

答案1

使用 Postscript,可以生成类似以下内容的内容:

伪连续形式

“穿孔”是圆形的,但是在将 PDF 转换为 JPG 时,它们变成了方形 :-(。白色背景上的文字也不是粗体。

您看到的输出是由后面的 postscript 程序创建的。不要看得太仔细,这是我的处女作 postscript 演讲。它在每页的开头构建一个背景(contform 程序),读取一个文本文件 (/tmp/passwd) 并以 6lpi 打印在您的默认页面格式上(在我的情况下是 A4)。要执行此脚本,请使用 ghostscript (gs) 或 ghostview (gv) 启动它。当您将脚本保存为 /tmp/contform.ps 时,然后

gs /tmp/contform.ps

或者

gv /tmp/contform.ps.

剧本:

/CP /closepath load def
/MT /moveto load def
/LT /lineto load def
/S /stroke load def
/F /fill load def
/s 20 string def

/pw { currentpagedevice /PageSize get 0 get } def
/ph { currentpagedevice /PageSize get 1 get } def

.83 1 1 setrgbcolor

% 0 ph MT pw ph LT pw ph 36 sub LT 0 ph 36 sub LT CP F

/contform
{
  gsave
  .83 1 1 setrgbcolor
  ph -1 mul 72 0 {
    /i exch def
    ph i add
    dup
    12 exch MT
    dup
    pw 12 sub exch LT
    dup
    pw 12 sub exch 36 sub LT
    dup
    12 exch 36 sub LT CP F
    pop
  } for
  0 setgray
  ph -1 mul 72 0 {
    /i exch def
    /perf { 3 0 360 arc CP F } bind def
    ph i add 18 add
    dup 6 exch % left perforation center
    perf
    dup 36 sub 6 exch % 2nd left perforation center
    perf
    dup pw 6 sub exch % right perforation center
    perf
    dup 36 sub pw 6 sub exch % 2nd right perforation center
    perf
    pop
  } for
  grestore
} bind def

/bottom 12 def
/lineshow                      % (string) lineshow -
{ %def
        % works like show, but checks for bottom
        % of page and also moves current point
        % down one line after each call
        currentpoint exch pop % just the Y coord
        bottom lt { %if
                showpage
                contform
                12 ph 24 sub moveto % top of new page
        } if
        gsave show grestore
        0 -12 rmoveto          % down one line
} bind def

%list the /tmp/passwd file
/Courier findfont 10 scalefont setfont
0 setgray

contform
12 ph 24 sub  moveto
/datafile (/tmp/passwd) (r) file def
/buffer 256 string def
{ %loop
        datafile buffer readline { %ifelse
                 lineshow
        }{ %else
                 datafile closefile
                 exit
        } ifelse
} bind loop

showpage

答案2

有点晚了,但是您可以使用这个虚拟行式打印机。https://github.com/racingmars/virtual1403

它旨在模拟用于大型机的真正的 1403 打印机,与 Hercules 系统一起使用,因此可作为模拟 MVS 或其他大型机操作系统的输出打印机之一。绿条纸的大小和设计与真实的相同。它直接处理 EBIDC,但它有一个独立版本(我要求的功能!),因此您可以输入任何文本文件。

大型机仿真的打印输出示例

答案3

...顺便说一句 - 图片上的打印件不是来自点阵打印机。那是链式、列车式或带式打印机。它们是大型计算机使用的高速击打式打印机...... https://www.pcmag.com/encyclopedia/term/chain-printer这对于论文或虚拟打印件并不重要,但我想我会发表评论;)

相关内容