Чередующиеся зеленые/синие полосы в PDF-документе, как старая бумага на матричных принтерах.

Вопрос или проблема

Есть ли какой-либо способ достичь такого вывода PDF в Linux?
Я имею в виду чередующиеся синие/зеленые полосы, которые раньше были напечатаны на бумаге для матричных принтеров. Направляющие/отверстия по бокам были бы приятным бонусом!

enter image description here

Существует программа в Windows, HercPrt, которая создает этот результат, либо из эмулятора Hercules, либо с помощью текстового конвертера в PDF. Я ищу, возможно, виртуальный принтер CUPS для создания полос, или текстовый конвертер в PDF, или даже шаблон в LibreOffice. Конечно, приветствуются другие идеи.

С помощью Postscript можно создать что-то подобное:

Pseudo Continuous Form

“Перфорации” круглые, но при конвертации PDF в JPG они стали квадратными :-(. Текст на белом фоне тоже не жирный.

Вывод, который вы видите, создается программой postscript, следующей за текстом. Не смотрите слишком внимательно, это моя первая postscript-речь. Она создает фон (процедуру contform) в начале каждой страницы, читает текстовый файл (/tmp/passwd) и печатает его на 6 lpi на вашем формате страницы по умолчанию (в моем случае 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 % левый центр перфорации
    perf
    dup 36 sub 6 exch % 2-й левый центр перфорации
    perf
    dup pw 6 sub exch % правый центр перфорации
    perf
    dup 36 sub pw 6 sub exch % 2-й правый центр перфорации
    perf
    pop
  } for
  grestore
} bind def

/bottom 12 def
/lineshow                      % (string) lineshow -
{ %def
        % работает как show, но проверяет нижнюю
        % границу страницы и также перемещает
        % текущую точку вниз на одну строку после каждого вызова
        currentpoint exch pop % только координата Y
        bottom lt { %if
                showpage
                contform
                12 ph 24 sub moveto % верх новой страницы
        } if
        gsave show grestore
        0 -12 rmoveto          % вниз на одну строку
} bind def

% отображает файл /tmp/passwd
/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

Несмотря что немного поздно, вы можете использовать этот виртуальный линейный принтер. https://github.com/racingmars/virtual1403

Он был разработан для эмуляции настоящего принтера 1403 для мейнфреймов, для использования с системой Hercules, так что служит одним из выходных принтеров для эмулированных ОС MVS или других мейнфреймов. Размер бумаги и дизайн с зелеными полосами такие же, как у настоящего. Он напрямую обрабатывает EBIDC, но есть отдельная версия (особенность, запрошенная мной!), так что вы можете загружать любой текстовый файл.

example of printed output from mainframe emulation

Поскольку у меня была такая же проблема, я написал программу prt1403, которая доступна на GitHub: printer 1401.

Пример, это изображение синей полосатой бумаги шириной 9,5 дюйма с моноширинным набором символов:

image of a blue banded, 9.5" wide paper, mono-spaced character set listing with alternating colors

…Кстати, отпечаток на этой картинке не из матричного принтера. Это либо цепной, либо поездной, либо полосной принтер. Они были высокоскоростными ударными принтерами, использовавшимися мейнфреймовыми компьютерами… https://www.pcmag.com/encyclopedia/term/chain-printer Не то чтобы это имело значение для бумаги или вашего виртуального отпечатка, но я подумал, что сделаю комментарий 😉

.

Ответ или решение

Для достижения эффекта чередующихся синих и зелёных полос в PDF-документах на Linux, как на старой бумаге для матричных принтеров, требуется глубокое понимание того, как работают современные инструменты для работы с PDF и текстом в командной строке Linux. Рассмотрим несколько методов, которые могут помочь воссоздать этот эффект.

Теория

Эффект чередующихся полос, который был популярен в эпоху матричных и линейных принтеров, был результатом заранее напечатанной бумаги, известной как бумага для всплывающих окон (continuous feed paper) или форма с матерчатыми полосами. Эти полосы использовались для улучшения читабельности распечатанного текста. На современные документы этот эффект может быть перенесен с помощью программных средств, например, PostScript, программ работы с PDF или текстовых редакторов.

Пример

На старых матричных принтерах, таких как IBM 1403, бумага с цветными полосами использовалась для разделения строк, улучшая ориентацию при просмотре длинных распечаток. Создание подобного эффекта в современном контексте требует использования средств, таких как PostScript для программной отрисовки цветных полос на фоне текста.

Пример использования PostScript, представленный выше, является хорошей отправной точкой. В приведенном скрипте PostScript описывается создание цветного узора, который генерируется в начале каждой страницы, причем чередуются синие и зеленые полосы. Этот скрипт может быть запущен в таких приложениях, как Ghostscript или Ghostview для отображения или печати PDF-документа с заданными полосами.

Альтернативный путь — использование средств конвертации текста в PDF-файлы, которые поддерживают фоновые изображения или шаблоны, такие как LibreOffice. LibreOffice позволяет создавать шаблоны с закрашенными полосами, которые можно применять ко всему документу.

Применение

Для реализации данного эффекта в Linux можно воспользоваться несколькими подходами:

  1. Использование PostScript: Как показано выше, можно написать скрипт на PostScript для создания PDF-документа с нужным фоновым оформлением. Для этого можно использовать Ghostscript. Этот метод требует определенных знаний программирования на языке PostScript, поэтому он подходит для пользователей с опытом.

  2. Использование LibreOffice: В LibreOffice можно создать шаблон с чередующимися цветными фонами и использовать его для печати текста. Это более простой и визуальный метод, который подходит для пользователей, предпочитающих работать с GUI.

  3. CUPS и виртуальные принтеры: Настроив виртуальный принтер в CUPS с использованием фильтров обработки, можно автоматизировать процесс применения шаблонов к распечатываемым документам. Это более сложный метод, требующий знаний о настройке CUPS и написании фильтров.

  4. Генераторы и конвертеры PDF: Программы, такие как pdflatex или wkhtmltopdf, могут быть настроены для автоматического применения фонов к документам. Эти программы работают через командную строку и могут включить более сложные эффекты верстки.

  5. Использование скриптов и макросов: Написание небольших скриптов на языке Python или использовании утилит, таких как PDFtk, позволит автоматизировать добавление полос к текстовым документам перед их преобразованием в PDF.

Независимо от используемого метода, выбранные инструменты позволяют достичь подходящего визуального эффекта, важного для улучшения читабельности или сохранения стиля старых печатных документов в цифровом формате. Важно учитывать конфигурацию среды и доступные инструменты, чтобы выбрать наилучший подход.

Оцените материал
Добавить комментарий

Капча загружается...