|
Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
#######
#
# E-scripts on PostScript and PDF.
#
# Note 1: use the eev command (defined in eev.el) and the
# ee alias (in my .zshrc) to execute parts of this file.
# Executing this file as a whole makes no sense.
# An introduction to eev can be found here:
#
# (find-eev-quick-intro)
# http://angg.twu.net/eev-intros/find-eev-quick-intro.html
#
# Note 2: be VERY careful and make sure you understand what
# you're doing.
#
# Note 3: If you use a shell other than zsh things like |&
# and the for loops may not work.
#
# Note 4: I always run as root.
#
# Note 5: some parts are too old and don't work anymore. Some
# never worked.
#
# Note 6: the definitions for the find-xxxfile commands are on my
# .emacs.
#
# Note 7: if you see a strange command check my .zshrc -- it may
# be defined there as a function or an alias.
#
# Note 8: the sections without dates are always older than the
# sections with dates.
#
# This file is at <http://angg.twu.net/e/ps.e>
# or at <http://angg.twu.net/e/ps.e.html>.
# See also <http://angg.twu.net/emacs.html>,
# <http://angg.twu.net/.emacs[.html]>,
# <http://angg.twu.net/.zshrc[.html]>,
# <http://angg.twu.net/escripts.html>,
# and <http://angg.twu.net/>.
#
#######
# «.ps-mode.el» (to "ps-mode.el")
# «.gv» (to "gv")
# «.gv-big-window» (to "gv-big-window")
# «.gv-very-spartan» (to "gv-very-spartan")
# «.gv-cvs» (to "gv-cvs")
# «.gv-deb-src» (to "gv-deb-src")
# «.ghostscript-deb-src» (to "ghostscript-deb-src")
# «.gs-dj610c» (to "gs-dj610c")
# «.gs_primitives» (to "gs_primitives")
# «.gs_interactively» (to "gs_interactively")
# «.gv_psheaders» (to "gv_psheaders")
# «.pstotext» (to "pstotext")
# «.gs_read_file» (to "gs_read_file")
# «.eps_crop_to_jpg» (to "eps_crop_to_jpg")
# «.gsfonts» (to "gsfonts")
# «.encrypted_pdfs» (to "encrypted_pdfs")
# «.gv-starting-page» (to "gv-starting-page")
# «.eemp» (to "eemp")
# «.xpdftools» (to "xpdftools")
#
# «.glue-pages» (to "glue-pages")
# «.gv-version» (to "gv-version")
# «.xpdf» (to "xpdf")
# «.xpdf-deb-src» (to "xpdf-deb-src")
# «.xpdf-touchpad-scroll» (to "xpdf-touchpad-scroll")
# «.xpdf-ubuntu» (to "xpdf-ubuntu")
# «.djvulibre-deb-src» (to "djvulibre-deb-src")
# «.gv-lpr» (to "gv-lpr")
# «.eepitch-gs» (to "eepitch-gs")
# «.ps-intro» (to "ps-intro")
# «.books» (to "books")
# «.gs-examples» (to "gs-examples")
# «.run» (to "run")
# «.tex.pro» (to "tex.pro")
# «.psutils» (to "psutils")
# «.pdfpages» (to "pdfpages")
# «.pdfjam» (to "pdfjam")
# «.pdfnup» (to "pdfnup")
# «.default-pdf-viewer» (to "default-pdf-viewer")
# «.see» (to "see")
# «.pdftk» (to "pdftk")
# «.qpdf» (to "qpdf")
# «.qpdf-extract» (to "qpdf-extract")
# «.qpdf-merge» (to "qpdf-merge")
# «.qpdf-rotate» (to "qpdf-rotate")
# «.djvu-to-pdf» (to "djvu-to-pdf")
# «.djview» (to "djview")
# «.other-djvu-viewers» (to "other-djvu-viewers")
# «.evince» (to "evince")
# «.pdftotext» (to "pdftotext")
# «.pdftotext-for-windows» (to "pdftotext-for-windows")
# «.pdftotext-spurious-ffs» (to "pdftotext-spurious-ffs")
# «.page-labels» (to "page-labels")
# «.reduce-pdf-file-size» (to "reduce-pdf-file-size")
# «.zathura» (to "zathura")
# «.mupdf» (to "mupdf")
# «.epdfview» (to "epdfview")
# «.okular» (to "okular")
# «.paps» (to "paps")
# «.pypdf» (to "pypdf")
# «.pdf2djvu» (to "pdf2djvu")
# «.pdfinfo» (to "pdfinfo")
# «.pstris» (to "pstris")
# «.pdf-to-black-and-white» (to "pdf-to-black-and-white")
# (find-zsh "installeddebs | sort | grep pdf")
# (find-zsh "availabledebs | sort | grep pdf")
#####
#
# ps-mode.el
#
#####
# «ps-mode.el» (to ".ps-mode.el")
# http://odur.let.rug.nl/~kleiweg/postscript/
# (find-efile "progmodes/ps-mode.el")
# (find-efunction 'ps-mode)
# (find-evariable 'ps-run-x)
(setq ps-run-x '("gs" "-r36" "-sPAPERSIZE=a4"))
(require 'ps-mode)
(progn (ps-mode) (ps-run-start))
(ps-run-quit)
%*
% (eeb-psrun)
% (eeb-invoke 'ps-run-region ee-delimiter-percent)
%
/dx 120 def
/dy 120 def
/x0 60 def
/y0 60 def
/myp {dy mul y0 add exch dx mul x0 add exch} def
/defp {myp 2 array astore cvx def} def
/p7 0 3 defp /p8 1 3 defp /p9 2 3 defp
/p4 0 2 defp /p5 1 2 defp /p6 2 2 defp
/p1 0 1 defp /p2 1 1 defp /p3 2 1 defp
/foo { newpath p3 moveto p4 lineto p9 lineto closepath } def
foo gsave 1 1 0 setrgbcolor fill grestore
gsave 8 setlinewidth stroke grestore
%*
% (eeb-psrun)
/Times-Roman findfont
100 scalefont setfont
72 200 moveto
(typography) show
%*
#####
#
# gv
# 2000dec17
#
#####
# (find-status "gv")
# (find-vldifile "gv.list")
# (find-fline "/usr/doc/gv/")
gv /usr/doc/gv/gv.ps.gz
# (find-w3 "/usr/doc/gv/gv.html")
# (find-w3 "/usr/doc/gv/gv-3.html" "-page")
#####
#
# gv
# 2005oct12
#
#####
# «gv» (to ".gv")
# http://www.gnu.org/software/gv/
# http://savannah.gnu.org/projects/gv/
# About a bug that I reported:
# Bug #14319 overview: <pgup> and <pgdn> don't scroll the pages window
# http://savannah.gnu.org/bugs/?func=detailitem&item_id=14319
# (find-fline "/tmp/gv-pagewindow-scroll-fix.patch")
# «gv-big-window» (to ".gv-big-window")
# (find-angg ".zshrc" "regv-beamer")
# About running gv in fullscreen mode by making it open a big window:
# (find-angg ".Xdefaults")
# (find-fline "/usr/lib/gv/gv_class.ad" "GV*background:")
# (find-man "X" "GEOMETRY SPECIFICATIONS")
# (find-node "(gv)Resources of gv" "*maximumWidth, maximumHeight*")
# (find-sh0 "echo 'GV*background: black' > ~/.gv")
# (find-sh0 "rm -v ~/.gv")
# (find-sh0 "gv --spartan --scale=3 -geometry 1135x785+916+737 $EEV/slides/slides.ps.gz")
# «gv-very-spartan» (to ".gv-very-spartan")
# About running gv in fullscreen mode "the right way":
# (find-node "(dvips)Option summary")
# (find-man "1 gv")
# (find-node "(gv)Key Bindings")
# (find-node "(gv)How can I make even more room for the image?")
# (find-sh "gv --help")
# (find-fline "/usr/lib/gv/gv_spartan.dat")
# (find-fline "/usr/lib/gv/gv_spartan.dat")
# (find-fline "/tmp/veryspartan.dat")
# (find-angg ".zshrc" "regv-beamer")
#*
cat > /tmp/veryspartan.dat <<'%%%'
!##### Layouts
GV.control.MButton.font: -*-Helvetica-Medium-R-Normal--*-120-*-*-P-*-ISO8859-1
GV*orientationButton*forcedWidth: 72
GV*upsidedown.Label: Up-Down
GV.?.processButton.label: \ working
!##### Main Layout
!##### (find-file "/usr/lib/gv/gv_spartan.dat")
GV*control.layout: |v{ viewFrame<+[2]-100%*+9999-100%> }
%%%
* (eechannel-xterm "A")
gv --ad=/tmp/veryspartan.dat $EEV/slides/slides.ps &
(defun foo () (interactive)
(eech "gv --ad=/tmp/veryspartan.dat $EEV/slides/slides.ps &\r"))
#####
#
# gv from cvs
# 2005oct12
#
#####
# «gv-cvs» (to ".gv-cvs")
# http://www.gnu.org/software/gv/
# http://savannah.gnu.org/projects/gv/
#*
# Update gv-cvs.tar.gz
rm -Rv ~/usrc/gv/
cd ~/usrc/
tar -C ~/usrc/ -xvzf ~/tmp/gv-cvs.tar.gz
cvs -z3 -d:ext:anoncvs@savannah.gnu.org:/cvsroot/gv co gv
tar -C ~/usrc/ -cvzf ~/tmp/gv-cvs.tar.gz gv/
cd ~/usrc/gv/
#*
# Download the patch "gv-pagewindow-scroll-fix.patch", by
# Markus Steinborn <msteinbo@uni-paderborn.de>, from:
# http://savannah.gnu.org/bugs/?func=detailitem&item_id=14319
# http://savannah.gnu.org/bugs/download.php?item_id=14319&item_file_id=3019
wget -O /tmp/gv-pagewindow-scroll-fix.patch \
'http://savannah.gnu.org/bugs/download.php?item_id=14319&item_file_id=3019'
# (find-fline "/tmp/gv-pagewindow-scroll-fix.patch")
#*
# Unpack and apply the patch.
# This is independent from the "download the patch" step above.
rm -Rv ~/usrc/gv/
tar -C ~/usrc/ -xvzf ~/tmp/gv-cvs.tar.gz
cd ~/usrc/gv/
{
patch -p0 <<'%%%'
--- src/misc.c.orig
+++ src/misc.c
@@ -323,12 +323,15 @@
ny = (int)newtocClip->core.height - ((int)newtoc->core.y + yl + 14);
if (y>ny) b = True;
}
- if (event && b) {
+ if (b) {
INFIMESSAGE(jumping to,ny)
ClipWidgetSetCoordinates(newtocClip,x,ny);
- entry = VlistEntryOfPosition(newtoc,(int)event->xbutton.y+(y-ny));
- if (entry != VlistHighlighted(newtoc) && check_toc)
+ if (event)
+ {
+ entry = VlistEntryOfPosition(newtoc,(int)event->xbutton.y+(y-ny));
+ if (entry != VlistHighlighted(newtoc) && check_toc)
VlistChangeHighlighted(newtoc,entry,XawVlistSet);
+ }
}
}
}
%%%
} |& tee op
#*
cd ~/usrc/gv/
autoreconf -i |& tee oai
./bootstrap |& tee ob
./configure |& tee oc
make |& tee om
#*
#####
#
# gv (from the debian sources; solves the bug above)
# 2007sep16
#
#####
# «gv-deb-src» (to ".gv-deb-src")
# http://ftp.de.debian.org/debian/pool/main/g/gv/
# http://ftp.de.debian.org/debian/pool/main/g/gv/gv_3.6.3dfsg-2.dsc
# http://ftp.de.debian.org/debian/pool/main/g/gv/gv_3.6.3dfsg-2.diff.gz
# http://ftp.de.debian.org/debian/pool/main/g/gv/gv_3.6.3dfsg.orig.tar.gz
#*
rm -Rv ~/usrc/gv/
mkdir ~/usrc/gv/
cd $S/http/ftp.de.debian.org/debian/pool/main/g/gv/
cp -v gv_3.6.3dfsg* ~/usrc/gv/
cd ~/usrc/gv/
dpkg-source -sn -x gv_3.6.3dfsg-2.dsc
cd ~/usrc/gv/gv-3.6.3dfsg/
dpkg-buildpackage -us -uc -b -rfakeroot |& tee odb
#*
# (find-fline "~/usrc/gv/")
* (eepitch-shell)
cd ~/usrc/gv/
sudo dpkg -i *.deb
#*
# (code-c-d "gv" "~/usrc/gv/gv-3.6.3dfsg/")
# (find-gvfile "")
# http://ftp.de.debian.org/debian/pool/main/g/gv/
# http://ftp.de.debian.org/debian/pool/main/g/gv/gv_3.6.5.91-1.dsc
# http://ftp.de.debian.org/debian/pool/main/g/gv/gv_3.6.5.91-1.diff.gz
# http://ftp.de.debian.org/debian/pool/main/g/gv/gv_3.6.5.91.orig.tar.gz
#*
rm -Rv ~/usrc/gv/
mkdir ~/usrc/gv/
cd $S/http/ftp.de.debian.org/debian/pool/main/g/gv/
cp -v gv_3.6.5.91* ~/usrc/gv/
cd ~/usrc/gv/
dpkg-source -sn -x gv_3.6.5.91-1.dsc
cd ~/usrc/gv/gv-3.6.5.91/
dpkg-buildpackage -us -uc -b -rfakeroot |& tee odb
#*
# (find-fline "~/usrc/gv/")
* (eepitch-shell)
cd ~/usrc/gv/
sudo dpkg -i *.deb
#*
# (code-c-d "gv" "~/usrc/gv/gv-3.6.5.91/")
# (find-gvfile "")
#####
#
# ghostscript (from the debian sources)
# 2010nov07
#
#####
# «ghostscript-deb-src» (to ".ghostscript-deb-src")
# http://ftp.debian.org/debian/pool/main/g/ghostscript/
# http://ftp.debian.org/debian/pool/main/g/ghostscript/ghostscript_9.00~dfsg-1.dsc
# http://ftp.debian.org/debian/pool/main/g/ghostscript/ghostscript_9.00~dfsg-1.diff.gz
# http://ftp.debian.org/debian/pool/main/g/ghostscript/ghostscript_9.00~dfsg.debian.tar.gz
#*
rm -Rv ~/bigsrc/ghostscript/
mkdir ~/bigsrc/ghostscript/
cd $S/http/ftp.debian.org/debian/pool/main/g/ghostscript/
cp -v ghostscript_9.00\~dfsg* ~/bigsrc/ghostscript/
cd ~/bigsrc/ghostscript/
dpkg-source -sn -x ghostscript_9.00\~dfsg-1.dsc
cd ~/bigsrc/ghostscript/ghostscript-9.00\~dfsg/
find .* * -type f | sort > .files
find .* * -type f -name '*.[ch]' | sort > .files.ch
etags $(cat .files.ch)
# dpkg-buildpackage -us -uc -b -rfakeroot |& tee odb
#*
# (find-fline "~/bigsrc/ghostscript/")
* (eepitch-shell)
cd ~/bigsrc/ghostscript/
sudo dpkg -i *.deb
#*
# (code-c-d "ghostscript" "~/bigsrc/ghostscript/ghostscript-9.00~dfsg/")
# (find-ghostscriptfile ".files")
# (find-ghostscriptfile "")
# (find-ghostscriptfile "psi/")
# (find-ghostscriptfile "psi/zdict.c")
# (find-ghostscriptfile "psi/opdef.h")
# (find-ghostscriptgrep "grep -nrH -e param_write *")
# (find-ghostscriptgrep "grep -nrH -e param_begin *")
# (find-ghostscriptgrep "grep -nH -e 'const op_def' $(cat .files.ch)")
# (find-ghostscriptgrep "grep -nriH -e prompt $(cat .files)")
# (find-ghostscriptfile "base/gsdparam.c" "/* Standard parameters */")
# (find-ghostscriptfile "doc/")
# (find-ghostscriptw3m "doc/Readme.htm#Develop")
# (find-ghostscriptw3m "doc/Source.htm")
# (find-ghostscriptw3m "doc/Language.htm")
# (find-ghostscriptw3m "doc/Language.htm#Dictionary")
# (find-ghostscriptw3m "doc/Lib.htm")
#####
#
# gs source (potato)
# 2000sep19
#
#####
# (find-status "gs")
# (find-vldifile "gs.list")
# (find-fline "/usr/doc/gs/")
#*
pdsc $SDEBIAN/dists/potato/main/source/text/gs_5.10-9.1.dsc
cd /usr/src/gs-5.10/
cd /usr/src/gs-5.10/
# (find-node "(gawk)Ranges")
for i in $(agrep -l BEGIN_OP_DEFS *.c); do
echo "\n$i:"
awk '/BEGIN_OP_DEFS/, /END_OP_DEFS/' < $i
done > .OPDEFS
etags *.[ch]
#*
# (code-c-d "gs5" "/usr/src/gs-5.10/")
# (find-gs5file ".OPDEFS")
# (find-gs5file "opdef.h" "Each operator file")
# «gs-dj610c» (to ".gs-dj610c")
# (find-htetfile "Printing-HOWTO.txt.gz" "DeskJet 610C")
# (find-gs5file "contrib/hp8xxs13/devs.mak" "use -r600 for DJ 600")
# (eeman "gs-hpdj")
# «gs_primitives» (to ".gs_primitives")
# (find-fline "/o/home/root/ICON/gsops.icn")
# (find-gs5file "opdef.h" "BEGIN_OP_DEFS")
# agrep -l BEGIN_OP_DEFS *.[ch]
#####
#
# running gs interactively using eeg
# 2000jan13
#
#####
# «gs_interactively» (to ".gs_interactively")
# (find-gs5file "gs_init.ps" "pstack")
# (find-gs5file "gs_init.ps" "/== {")
# (find-gs5file "gs_init.ps" "(gs_fonts.ps) runlibfile")
# (find-gs5file "gs_fonts.ps")
# (find-gs5file ".OPDEFS")
#*
cat > $EEG <<'---'
10 22 (foo) pstack
== ==
pop
/square {dup mul} pstack
bind pstack
def
/square load ==
[10 20] ==
[10 20 ppstack
] pop
/dx 120 def
/dy 120 def
/x0 60 def
/y0 60 def
/myp {dy mul y0 add exch dx mul x0 add exch} def
/defp {myp 2 array astore cvx def} def
% /p7 {0 3 myp} def
/p7 0 3 defp /p8 1 3 defp /p9 2 3 defp
/p4 0 2 defp /p5 1 2 defp /p6 2 2 defp
/p1 0 1 defp /p2 1 1 defp /p3 2 1 defp
/p0 1.5 0 defp
/foo { newpath p3 moveto p4 lineto p9 lineto closepath } def
foo gsave 1 1 0 setrgbcolor fill grestore
gsave 8 setlinewidth stroke grestore
---
eeg gs
#*
# (find-gssharefile "uninfo.ps" "\"printing\" PostScript items")
#####
#
# making gs read files
# 2000may02
#
#####
# «gs_read_file» (to ".gs_read_file")
# (find-status "gs")
# (find-vldifile "gs.list")
# (find-fline "/usr/doc/gs/")
# (eeman "gs" "run")
#*
cd /usr/share/doc/gs/examples/
gzip -cd tiger.ps.gz > /tmp/tiger.ps
cd /tmp/
cat > $EEG <<'---'
(tiger.ps) run
quit
---
eeg gs
#*
#####
#
# gv-3.5.8 (slink)
# 99oct08
#
#####
# «gv_psheaders» (to ".gv_psheaders")
pdsc /big/slinks2/dists/slink/main/source/text/gv_3.5.8-9.dsc
cd /usr/src/gv-3.5.8
# On how the headers of a gv-able PS must be:
# (find-gvfile "source/ps.c" "Header section:")
# (find-fline "/usr/doc/gv/comments.doc.gz")
#####
#
# Some old notes on gs5.10
#
#####
cd /usr/src/gs5.10/
etags $(cat of.used.here of.used.there)
glimpseindex -H . $(cat of.used.here; ls *.ps; cat of.used.there)
~/ICON/gsops $(cat of.used.here) |& tee .OPS
#
# (find-gs5file "opdef.h" "Each operator file")
# (find-gs5file ".OPS")
# (find-gs5file "gs_init.ps" "pstack")
# (find-gs5file "gs_init.ps" "/== {")
# (find-gs5tag "zbind")
# (find-gs5file "deskjet.dev")
# (find-gs5file "djet500.dev")
# (find-gs5file "gdevdjet.c")
#
dvips -D 300 -p 1 -l 1 -o blank.ps blank.dvi
gs -sDEVICE=djet500 -sOutputFile=/dev/lp1 -dNOPAUSE -dBATCH blank.ps
# (find-gs5file "gs_init.ps" 80)
# Mais antigos:
# (find-gvtag "main")
# (find-gvfile "source/main.c" "int main(")
# (find-gvfile "source/main.c" 903)
# (find-gvtag "render_page")
# (find-gvtag "GhostviewEnableInterpreter")
# (find-gvtag "StartInterpreter")
# (find-gs5tag "gdev_x_open")
#####
#
# gslab
#
#####
(emacs-lisp-mode)
(find-fline "~/CRIM/gslab.el")
(progn
(load-library "~/CRIM/gslab")
(setq gs-window-shrink-amount 12) ; Gives gs 23-12 lines on 50-line VCs.
(gs-initialize)
)
# (find-gs5file ".OPS" "setrgbcolor")
# (find-gs5file "gs_init.ps")
#####
#
# Fixing a FrameMaker ps
#
#####
# (find-hamm "psutils")
# (find-fline "/usr/doc/psutils/README.gz" "framemaker")
# (find-fline "/usr/bin/fixfmps")
# (find-gvfile "source/ps.c" "%!")
# (find-fline "~/LATEX/lcp1.ps")
# (find-fline "/usr/info/")
# (find-fline "/snarf/http/www.cica.indiana.edu/cica/faq/tcl/")
# (find-fline "/snarf/http/www.cica.indiana.edu/cica/faq/tcl/book.p1.ps")
# %!PS-Adobe-2.0
# (find-fline "/usr/src/psutils-1.17/psnup.c")
# (find-fline "/usr/src/psutils-1.17/psnup.c" "'s'")
# (find-fline "/usr/src/psutils-1.17/psutil.c" "a4")
# (find-node "(a2ps)Your Media")
# (find-fline "/usr/src/psutils-1.17/pstops.c")
cd /snarf/http/www.cica.indiana.edu/cica/faq/tcl/
# S=0.5; H0=24; H1=297; V0=434; V2=50
S=0.55; H0=-16; H1=257; V0=434; V2=50
cat book.p1.ps |
pstops -d 4:0@$S($H0,$V0)+1@$S($H1,$V0)+2@$S($H0,$V2)+3@$S($H1,$V2) > p1.ps
cat book.p2.ps |
pstops -d 4:0@$S($H0,$V0)+1@$S($H1,$V0)+2@$S($H0,$V2)+3@$S($H1,$V2) > p2.ps
cat book.p3.ps |
pstops -d 4:0@$S($H0,$V0)+1@$S($H1,$V0)+2@$S($H0,$V2)+3@$S($H1,$V2) > p3.ps
cat book.p4.ps |
pstops -d 4:0@$S($H0,$V0)+1@$S($H1,$V0)+2@$S($H0,$V2)+3@$S($H1,$V2) > p4.ps
cd /snarf/http/www.cica.indiana.edu/cica/faq/tcl/
gv -media a4 -scale -2 p1.ps
gv -media a4 -scale -2 p2.ps
gv -media a4 -scale -2 p3.ps
gv -media a4 -scale -2 p4.ps
cd /snarf/http/www.cica.indiana.edu/cica/faq/tcl/
tar -cvzf ~/tb.tgz p?.ps
zip ~/tb.zip p?.ps
gs -sDEVICE=djet500 -r300 -sOutputFile=o.p%02d -dNOPAUSE -dBATCH /snarf/http/www.cica.indiana.edu/cica/faq/tcl/p3.ps
rm o.zip; zip o.zip o.p0?
laf o.zip
# psnup -1 -d -Pletter -pletter |
# (find-hamm "tk8.0-dev")
man 3tk pack
# (find-tkfile "")
cd /snarf/http/www.cica.indiana.edu/cica/faq/tcl/
psnup -nup 4 -s0.5 -Pletter -pa4 -d -m-8 < book.p3.ps > p3.ps
gv -media a3 p3.ps
# -m100 qdz que overwrite bastante.
# -m-100 qdz que separa bastante as folhinhas.
# psnup -nup 4 -s0.4 -Pletter -pa4 -d -b78 < book.p3.ps > p3.ps
debsource /debian/main/source/text psutils 1.17 -2
debsource /debian/main/source/text a2ps 4.10.2 -4
debsource /debian/main/source/libs tk8.0 8.0p2 -4
#####
#
# pgs
#
#####
dmissingp perl-tk
# (find-fline "/usr/bin/pgs")
# (find-pl5file "Tk/Ghostview.pm")
# (find-pl5file "Tk/Ghostscript.pm")
# (find-pl5file "Tk/Pretty.pm")
# (find-pl5file "Tk/DSC.pm")
# (find-fline "/usr/lib/perl5/Tk/Ghostview.pm")
# (find-fline "/usr/lib/perl5/Tk/Ghostscript.pm")
# (find-fline "/usr/lib/perl5/Tk/Pretty.pm")
#####
#
# pstotext
# 99oct09
#
#####
# «pstotext» (to ".pstotext")
apti pstotext
# (find-vldifile "pstotext.list")
# (find-fline "/usr/doc/pstotext/")
# (eeman "pstotext")
pstotext /tmp/bdf.PS
pstotext /tmp/bdf.PS | tr ยก - | tee ~/o
pstotext /tmp/bdf.PS | tr $(echo "\0255") -
# Why does it stop in the middle of the pic manual?
# (find-es "tex" "pic_manual")
pstotext $S/http/cm.bell-labs.com/cm/cs/cstr/116.ps > ~/o
(pstotext -debug $S/http/cm.bell-labs.com/cm/cs/cstr/116.ps > ~/o) |& tee ~/o2
# (find-fline "~/o")
# (find-fline "~/o2")
# (find-fline "$S/http/cm.bell-labs.com/cm/cs/cstr/116.ps" "guess is wrong")
pdsc /big/slinks2/dists/slink/main/source/text/pstotext_1.7-3.dsc
debian/rules binary |& tee odrb
# (code-c-d "ptt" "/usr/src/pstotext-1.7/")
# (find-pttfile "odrb")
# (find-pttfile "main.c")
# (find-pttfile "bundle.c")
# (find-pttfile "ptotdll.c")
# (find-pttfile "ocr.ps")
#####
#
# .eps->.jpg, with cropping
# 2000may30
#
#####
# «eps_crop_to_jpg» (to ".eps_crop_to_jpg")
# (find-es "music" "ps_to_png")
#*
cat ~/LATEX/eps/histmat1.eps \
| gs -q -sDEVICE=ppmraw -sOutputFile="-" -r150 \
-dNOPAUSE - -c quit \
| pnmcrop \
> /tmp/histmat1.ppm
convert /tmp/histmat1.ppm /tmp/histmat1.jpg
cat ~/LATEX/eps/histmat2.eps \
| gs -q -sDEVICE=ppmraw -sOutputFile="-" -r150 \
-dNOPAUSE - -c quit \
| pnmcrop \
> /tmp/histmat2.ppm
convert /tmp/histmat2.ppm /tmp/histmat2.jpg
ls -lAF /tmp
#*
#####
#
# my own crude a2ps (aborted...)
# 2000jun29
#
#####
# (find-node "(a2ps)Top")
# (find-status "a2ps")
# (find-vldifile "a2ps.list")
# (find-fline "/usr/doc/a2ps/")
# (find-fline "/usr/lib/xemacs/site-lisp/" "a2ps")
# (find-fline "/usr/share/ogonkify/")
# (find-fline "/usr/share/a2ps/ps/")
ls | a2ps -o /tmp/o.ps
# (find-fline "/tmp/o.ps")
#####
#
# gsfonts
# 2000oct30
#
#####
# «gsfonts» (to ".gsfonts")
# (find-status "gsfonts")
# (find-vldifile "gsfonts.list")
# (find-fline "/usr/doc/gsfonts/")
# (find-fline "/usr/lib/ghostscript/fonts/")
cd /usr/lib/ghostscript/fonts/
#####
#
# making gv redisplay a file
# 2001mar27
#
#####
# (find-man "1 gv" "-watch, -nowatch")
# (find-angg ".zshrc" "rexdvi")
# (find-angg ".zshrc" "regv")
#####
#
# making gs display encrypted PDFs
# 2001dec10
#
#####
# «encrypted_pdfs» (to ".encrypted_pdfs")
# (find-shttpw3 "members.ozemail.com.au/~geoffk/pdfencrypt/")
# (find-shttpfile "members.ozemail.com.au/~geoffk/pdfencrypt/pdf_sec.ps")
# (find-fline "/usr/lib/ghostscript/5.10/pdf_sec.ps")
# (find-fline "/usr/lib/ghostscript/5.10/pdf_sec.ps.orig")
#*
cd /usr/lib/ghostscript/5.10/
if [ ! -e pdf_sec.ps.orig ]; then cp -v pdf_sec.ps pdf_sec.ps.orig; fi
cp -v $S/http/members.ozemail.com.au/~geoffk/pdfencrypt/pdf_sec.ps .
#*
cd /usr/lib/ghostscript/5.10/
mv -v pdf_sec.ps.orig pdf_sec.ps
#*
cd $S/http/www.ville.montreal.qc.ca/mtlcarte/anglais/pdf/
#*
# Woody:
# (find-status "gs")
# (find-vldifile "gs.list")
# (find-fline "/usr/doc/gs/")
# (find-fline "/usr/share/gs/6.53/")
# (find-fline "/usr/share/gs/6.53/pdf_sec.ps" "geoffk/pdfencrypt/")
#*
pdsc $S/http/ftp.debian.org/debian/pool/main/g/gs/gs_5.50-8.dsc
debian/rules binary |& tee odrb
#*
# (code-c-d "gs" "/usr/src/gs-5.50/")
# (find-gsfile "debian/jpeg")
psnedeb <<'---'
1977288 pool/main/g/gs/gs_6.51-5.diff.gz
685 pool/main/g/gs/gs_6.51-5.dsc
4375426 pool/main/g/gs/gs_6.51.orig.tar.gz
---
#####
#
# specifying a starting page for gv
# 2002nov12
#
#####
# «gv-starting-page» (to ".gv-starting-page")
# (find-man "1 gv" "-page=LABEL")
# (find-angg ".emacs" "find-xxxpage")
# A problem: dvips generates "ps"s whose pages can be labeled, say,
# 1 2 3 4 1 2 3 4 5 6 7 8 9... - and I still don't know how to jump to
# the "second page 3" in these cases.
#####
#
# flipping the even pages for two-sided printing
# 2003feb13
#
#####
# (find-man "pstops")
#*
dvips -o /tmp/test.ps ~/LATEX/2002cms.dvi
#*
cd /tmp/
cat test.ps | pstops '2:0+1U(21.5cm,31.5cm)' > test2.ps && gv test2.ps
#*
dvired -o /tmp/test.ps $S/ftp/ftp.math.mcgill.ca/pub/barr/tt.dvi
#*
cd /tmp/
cat test.ps | pstops '2:0+1U(23.5cm,29.4cm)' > test2.ps && gv test2.ps
#*
dvired -o /tmp/test.ps ~/LATEX/2002cms.dvi
#*
cd /tmp/
cat test.ps | pstops '2:0+1U(22.1cm,29.4cm)' > test2.ps && gv -seascape test2.ps
#*
# (* 40 (/ 1.0 72.0) 2.54)
#####
#
# metapost
# 2004apr13
#
#####
rm -Rv /tmp/mpdoc/
mkdir /tmp/mpdoc/
# (find-status "tetex-bin")
# (find-vldifile "tetex-bin.list")
# (find-fline "/usr/doc/tetex-bin/")
# (find-fline "/usr/share/doc/texmf/metapost/base/")
# (code-ps "mpman" "/usr/share/doc/texmf/metapost/base/mpman.ps.gz")
# (code-ps "mpintro" "/usr/share/doc/texmf/metapost/base/mpintro.ps.gz")
# (find-mpmanpage 1)
# (find-mpintropage 1)
#*
cd /tmp/
cat > tmp.mp <<'%%%'
beginfig(0);
input ee.mp;
endfig;
end
%%%
cat > ee.mp <<'%%%'
pickup pencircle scaled 4pt;
draw (20,20)--(0,0)--(0,40)--(30,0)--(0,0);
%%%
mpost tmp.mp
awk '{if (NR==1) {print "%!PS-Adobe-2.0 EPSF-1.2"} else print}' \
< tmp.0 > tmp.0.eps
regv tmp.0.eps -scale 10 &
#*
;; «eemp» (to ".eemp")
;; (find-eevfile "tmp.mp")
(progn
(defvar ee-file-mp "~/eev-current/ee.mp")
(defvar eemp-eevscript "cd ~/eev-current/
mpost tmp.mp
awk '{if (NR==1) {print \"%!PS-Adobe-2.0 EPSF-1.2\"} else print}' \\
< tmp.0 > tmp.0.eps
regv tmp.0.eps -scale 10")
(defun eemp (s &optional e)
(interactive "r")
(ee-write s e "" "" ee-file-mp)
(eev eemp-eevscript nil)
(format "eemp: wrote %s and %s" ee-file-mp ee-file))
(ee-define-bounded eemp eemp-bounded ee-delimiter-percent)
)
%*
% (ee-once (eeb-mp))
pickup pencircle scaled 4pt;
draw (20,20)--(0,0)--(0,30)--(30,0)--(0,0);
%*
% (eemp-bounded 'once)
numeric u; u=1cm;
draw (2u,2u)--(0,0)--(0,3u)--(3u,0)--(0,0);
pickup pencircle scaled 4pt;
for i=0 upto 2:
for j=0 upto 2:
draw (i*u,j*u);
endfor
endfor
%*
endfig;
#####
#
# gs source
# 2004apr22
#
#####
/hda7/pandahome/edrx/snarf/http/ftp.debian.org/debian/pool/main/g/gs/
/hda7/pandahome/edrx/snarf/http/ftp.debian.org/debian/pool/main/g/gs/
# (code-c-d "gs" "/usr/src/gs-6.53/")
# (find-gsfile "")
# (find-gsfile "src/gsfunc4.c")
# (find-gsfile "src/gstype1.h" "\"closepath\"")
# (find-gsfile "src/zpath.c")
# (find-gsfile "src/opdef.h" "limited to 16 entries")
# (find-gsfile "src/zcontrol.c" "const op_def zcontrol1_op_defs[] =")
cd /usr/src/gs-6.53/src/
grep 'const op_def' *.[ch] |& l -S
#*
cd /usr/src/gs-6.53/src/
egrep -l '^const op_def ' *.c | tee .files.opdef
echo -n > OPDEFS
for i in $(<.files.opdef); do
echo "/* (find-fline \"$i\" \"\\\\nconst op_def \")"
echo " */"
awk '
/^const op_def / {interesting=1}
interesting==1 {print}
/^}/ {interesting=0}
' $i
echo
echo
done > OPDEFS
# (find-gsfile "src/OPDEFS")
#*
# (find-gsfile "lib/")
# (find-gsfile "lib/gs_init.ps")
# (find-gsfile "lib/gs_init.ps" "/pstack")
# (find-gsfile "lib/gs_init.ps" "/ppstack")
#*
cat > $EEG <<'---'
1 2
==
==
1 2 3 pstack
== == ==
quit
---
eeg gs -sDEVICE=nullpage
#*
cat > $EEG <<'---'
/square {dup mul} def
5 square
==
quit
---
eeg gs -sDEVICE=nullpage
#*
% (eeg-
/Times-Roman findfont ==
(defun eegs-simple ()
(eev "eeg gs -sDEVICE=nullpage")
(eeg
eegs
eev
# (find-efunctionpp 'eeg-bounded)
# (find-efunctionpp (key-binding [f3]))
# (find-efunction 'describe-function)
# (find-efunction 'describe-key)
# (find-efunction 'find-efunctionpp)
(find-ekeypp [f3])
(find-ekeypp "\r")
(find-ekeypp "\n")
(find-ekeypp "\M-P")
(find-efunctionpp ee-bounded-function)
(defvar ee-s0 nil)
(defvar ee-s1 nil)
(defvar ee-e nil)
(defmacro with-ee-l1-percent (&rest body)
`(let* ((ee-s0 (ee-search-backward ee-delimiter-percent))
(ee-s1 (save-excursion (goto-char ee-s0)
(next-line 1) (beginning-of-line) (point)))
(ee-e (1+ (ee-search-forward ee-delimiter-percent))))
. ,body))
(defun eegs (gsargs pre post s &optional e)
(eev (concat "eeg gs " (or gsargs "-sDEVICE=nullpage")))
(eeg (concat (or pre "")
(ee-se-to-string s e)
(or post "")))
(format "eegs: wrote %s and %s" ee-file-generic ee-file))
(defun eegs-l1 (gsargs pre post)
(with-ee-l1-percent (eegs gsargs pre post ee-s1 ee-e)))
(defun eegs-simple ()
(eegs-l1 nil nil "quit"))
(defun eeM-e (s &optional e)
(interactive "r")
(save-excursion (goto-char s) (ee-eval-sexp-eol ee-arg)))
(ee-define-bounded eeM-e eeM-e-percent-bounded ee-delimiter-percent)
(defalias 'eemep-bounded 'eeM-e-percent-bounded)
%*
% (eegs-simple)
1 2
==
==
1 2 3 pstack
== == ==
%*
% (eegs-simple)
/square {dup mul} def
5 square
==
{dup mul} 0 get == %-> dup
{dup mul} 1 get == %-> mul
(a string) type == %-> stringtype
[2 3] type == %-> arraytype
{dup mul} type == %-> arraytype
/square type == %-> nametype
1 type == %-> integertype
1.2 type == %-> realtype
444 type type == %-> nametype
%*
% (eegs-simple)
[10 20 30] 0 get == %-> 10
[10 20 30] 2 get == %-> 30
/a [10 20 30] def
a 2 33 put
a == %-> [10 20 33]
%*
% (eegs-simple)
/square {dup mul} def
/a 3 def /b 4 def
a square b square add sqrt
dup ==
dup round ==
dup floor ==
dup truncate ==
dup truncate cvi ==
%*
% (eegs-simple)
% (find-psfirstgw3m "escapes.html")
(This is a \
string \
that has no \
newlines) %-> (This is a string that has no newlines)
==
%*
% (eegs-simple)
/Times-Roman findfont ==
# (code-c-d "psfirstg" "/hda6/snarf/http/www.cs.indiana.edu/docproject/programming/postscript/")
# (code-c-d "psimation" "/hda6/snarf/http/ips.imation.com/techsupport/resources/web/psweb/")
# (find-psfirstgfile "")
# (find-psfirstgw3m "escapes.html")
# (find-psimationfile "")
# (find-psimationw3m "PSL2gh.html#get")
# (find-psimationw3m "PSL2e.html#exec")
# (find-psimationw3m "REF2.html")
[L http://www.cs.indiana.edu/docproject/programming/postscript/postscript.html
A First Guide to PostScript]
[L http://www.tinaja.com/post01.html
Guru's Lair: Don Lancaster's PostScript Library]
[L http://www.cs.washington.edu/homes/dylan/pshacks.html
Dylan's PostScript Page]
[L http://ips.imation.com/techsupport/resources/PS/PSindex.html
Imation - Index To Postscript Pages]
[L http://ips.imation.com/techsupport/resources/web/psweb/REF.html
ref]
[L http://www.iftech.com/oltc/ps/ps0.stm
pstut]
/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N
/X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72
mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1}
ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div
hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul
TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if}
forall round exch round exch]setmatrix}N /@landscape{/isls true N}B
/@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B
/FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{
/nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N
string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N
end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{
/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]
N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup
length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{
128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub
get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data
dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N
/rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup
/base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx
# (find-gsfile "src/OPDEFS")
# (find-gsfile "src/OPDEFS" "truncate")
#*
# (find-gsfile "lib/")
# (find-gsfile "lib/gs_init.ps")
# (find-gsfile "lib/gs_init.ps" "/pstack")
# (find-gsfile "lib/gs_init.ps" "/ppstack")
(eegs-hyped " -sDEVICE=nullpage" "quit")
#####
#
# ps-mode and comint
# 2004may02
#
#####
# (find-efile "")
# (find-efile "progmodes/ps-mode.el")
(require 'ps-mode)
(ps-run-start)
(find-fline
0 0.5 dtransform truncate idtransform setlinewidth pop [] 0 setdash
1 setlinecap 1 setlinejoin 10 setmiterlimit
newpath 56.6929 56.6929 moveto
0 0 lineto
0 85.03935 lineto
85.03935 0 lineto
0 0 lineto stroke
0 3.98505 dtransform truncate idtransform setlinewidth pop
newpath 0 0 moveto 0 0 rlineto stroke
newpath 0 28.34645 moveto 0 0 rlineto stroke
newpath 0 56.6929 moveto 0 0 rlineto stroke
newpath 28.34645 0 moveto 0 0 rlineto stroke
newpath 28.34645 28.34645 moveto 0 0 rlineto stroke
newpath 28.34645 56.6929 moveto 0 0 rlineto stroke
newpath 56.6929 0 moveto 0 0 rlineto stroke
newpath 56.6929 28.34645 moveto 0 0 rlineto stroke
newpath 56.6929 56.6929 moveto 0 0 rlineto stroke
showpage
# (find-gsfile "src/opdef.h" "Each operator file")
# (find-gs5file ".OPS")
# (find-gs5file "gs_init.ps" "pstack")
# (find-gs5file "gs_init.ps" "/== {")
# (find-gsfile "debian/control" "Build-Depends:")
apti libpaperg-dev libpng2-dev zlib1g-dev xlibs-dev debhelper html2text
apti libglib1.2-dev libgimpprint-dev
pdsc $SDEBIAN/pool/main/g/gs/gs_6.53-3.dsc
cd /usr/src/gs-6.53/
debian/rules build |& tee odrb
(find-gsfile "")
(find-gsfile "odrb")
# (find-status "tetex-base")
# (find-vldifile "tetex-base.list")
# (find-fline "/usr/doc/tetex-base/")
# (find-man "1 gv" "-style gv_spartan.dat")
# (find-fline "/usr/X11R6/lib/X11/gv/")
#####
#
# gv --version
# 2007jun07
#
#####
# «gv-version» (to ".gv-version")
# http://ftp.debian.org/debian/pool/main/g/gv/
# http://ftp.debian.org/debian/pool/main/g/gv/gv_3.6.2-4.dsc
apti debhelper quilt xaw3dg-dev texinfo
# http://ftp.gnu.org/gnu/gv/gv-3.5.8.tar.gz
# http://ftp.gnu.org/gnu/gv/gv-3.6.0.tar.gz
# http://ftp.gnu.org/gnu/gv/gv-3.6.1.tar.gz
# http://ftp.gnu.org/gnu/gv/gv-3.6.2.tar.gz
#*
rm -Rv ~/usrc/gv-3.5.8/
tar -C ~/usrc/ -xvzf $S/http/ftp.gnu.org/gnu/gv/gv-3.5.8.tar.gz
cd ~/usrc/gv-3.5.8/
xmkmf |& tee oxmkmf
make Makefiles |& tee omM
make |& tee om
# (code-c-d "gv358" "~/usrc/gv-3.5.8/")
# (find-gv358file "")
# (find-gv358file "om")
# (find-gv358file "source/Aaa.c" 49)
# (find-gv358file "source/Aaa_intern.h" 44 "INC_X11(Xlib.h)")
#*
rm -Rv ~/usrc/gv-3.6.0/
mkdir ~/usrc/gv-3.6.0/
tar -C ~/usrc/gv-3.6.0/ -xvzf $S/http/ftp.gnu.org/gnu/gv/gv-3.6.0.tar.gz
cd ~/usrc/gv-3.6.0/gv/
./configure |& tee oc
make |& tee om
# (code-c-d "gv360" "~/usrc/gv-3.6.0/gv/")
# (find-gv360file "")
# (find-gv360sh "src/gv --version")
#*
rm -Rv ~/usrc/gv-3.6.1/
tar -C ~/usrc/ -xvzf $S/http/ftp.gnu.org/gnu/gv/gv-3.6.1.tar.gz
cd ~/usrc/gv-3.6.1/
./configure |& tee oc
make |& tee om
# (code-c-d "gv361" "~/usrc/gv-3.6.1/")
# (find-gv361file "")
# (find-gv361sh "src/gv --version")
#*
rm -Rv ~/usrc/gv-3.6.2/
tar -C ~/usrc/ -xvzf $S/http/ftp.gnu.org/gnu/gv/gv-3.6.2.tar.gz
cd ~/usrc/gv-3.6.2/
./configure |& tee oc
make |& tee om
# (code-c-d "gv362" "~/usrc/gv-3.6.2/")
# (find-gv362file "")
# (find-gv362sh "src/gv --version")
#*
;; Note: according to jemarch (gv's maintainer),
;; gv 3.5.8 (and earlier versions) accept short arguments only,
;; gv 3.6.0 and gv 3.6.1 accept long arguments only,
;; gv 3.6.2 (and later versions) accept both long and short arguments.
;; To select a starting page in a "short arguments" version we have to
;; use "-page 42" instead of "--page=42".
# (find-eevfile "eev.el" "jemarch")
#####
#
# xpdftools
# 2006jul17
#
#####
# «xpdftools» (to ".xpdftools")
# (find-angg ".emacs" "find-pdfpage-pdftotext")
# pdftops (from xpdftools) is better than pdf2ps (from ghostscript):
# http://www.codecomments.com/archive276-2005-8-561854.html
# (find-status "xpdf-utils")
# (find-vldifile "xpdf-utils.list")
# (find-udfile "xpdf-utils/")
cd ~/tmp/
pdftotext -layout cvs.pdf
# (find-fline "~/tmp/cvs.txt")
# (find-man "pdftotext")
#####
#
# Ways to glue several PDFs or several imagess into a single PDF
# 2024oct15
#
#####
# «glue-pages» (to ".glue-pages")
# (find-angg "MAXIMA/mkanim1.sh" "functions" "qpdf")
# (find-angg ".emacs.templates" "find-jpgstopdf-links")
# (find-angg "LUA/QPDFMerge.lua")
# (to "qpdf-merge")
#####
#
# xpdf (from the debian sources)
# 2008aug17 / 2019oct18
#
#####
# «xpdf» (to ".xpdf")
# «xpdf-deb-src» (to ".xpdf-deb-src")
# (find-angg ".Xdefaults")
# The version in etch cannot switch between normal
# and fullscreen mode, but this version can...
# http://ftp.debian.org/debian/pool/main/x/xpdf/
# http://ftp.debian.org/debian/pool/main/x/xpdf/xpdf_3.02-1.3.dsc
# http://ftp.debian.org/debian/pool/main/x/xpdf/xpdf_3.02-1.3.diff.gz
# http://ftp.debian.org/debian/pool/main/x/xpdf/xpdf_3.02.orig.tar.gz
# (find-man "1 xpdf")
# (find-man "1 xpdf" "-mattecolor")
# (find-man "1 xpdf" "-fullscreen")
# (find-man "1 xpdf" "Toggle full-screen mode.")
# (find-man "1 xpdf" "toggleFullScreenMode")
# (find-man "1 xpdf" "alt-f")
# (code-c-d "xpdf" "~/usrc/xpdf/xpdf-3.02/")
# (find-xpdfgrep "grep -nH -e fullscreen $(find *)")
# (find-xpdfgrep "grep -nH -e fullScreen $(find *)")
# (find-xpdffile "xpdf/xpdf.cc" "-fullscreen")
# (find-xpdffile "")
#####
#
# xpdf: disabling the touchpad scroll (that works as PgUp and PgDn)
# 2019oct23
#
#####
# «xpdf-touchpad-scroll» (to ".xpdf-touchpad-scroll")
# (find-es "emacsconf2019" "short")
# (find-man "1 xpdf")
# (find-man "1 xpdf" "bind mousePress4" "scrollUpPrevPage(16)")
# (find-apt-get-source-links "xpdf")
* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
rm -Rv /tmp/d/
mkdir /tmp/d/
cd /tmp/d/
sudo apt-get build-dep -y xpdf
apt-get source xpdf 2>&1 | tee osource
apt-get source --build xpdf 2>&1 | tee osourceb
ls -lAF xpdf_*.deb
sudo dpkg -i xpdf_*.deb
# (find-fline "/tmp/d/")
# (find-fline "/tmp/d/xpdf-3.04/")
# (code-c-d "xpdf" "/tmp/d/xpdf-3.04/")
# (find-xpdffile "")
# (find-xpdfsh "find * | sort")
# (find-xpdfgrep "grep --color -nRH -e mousePress4 *")
# (find-xpdfgrep "grep --color -nRH -e scrollUpPrevPage *")
# (find-xpdffile "xpdf/GlobalParams.cc" "xpdfKeyCodeMousePress4")
#####
#
# xpdf is being deprecated on Ubuntu
# 2020oct15
#
#####
# «xpdf-ubuntu» (to ".xpdf-ubuntu")
# https://askubuntu.com/questions/1245518/how-to-install-xpdf-on-ubuntu-20-04
#####
#
# djvulibre (from the debian sources)
# 2008nov20
#
#####
# «djvulibre-deb-src» (to ".djvulibre-deb-src")
# http://djvu.sourceforge.net/
# http://ftp.debian.org/debian/pool/main/d/djvulibre/
# http://ftp.debian.org/debian/pool/main/d/djvulibre/djvulibre_3.5.21-1.dsc
# http://ftp.debian.org/debian/pool/main/d/djvulibre/djvulibre_3.5.21-1.diff.gz
# http://ftp.debian.org/debian/pool/main/d/djvulibre/djvulibre_3.5.21.orig.tar.gz
#*
rm -Rv ~/usrc/djvulibre/
mkdir ~/usrc/djvulibre/
cd $S/http/ftp.debian.org/debian/pool/main/d/djvulibre/
cp -v djvulibre_3.5.21* ~/usrc/djvulibre/
cd ~/usrc/djvulibre/
dpkg-source -sn -x djvulibre_3.5.21-1.dsc
cd ~/usrc/djvulibre/djvulibre-3.5.21/
dpkg-buildpackage -us -uc -b -rfakeroot |& tee odb
#*
# (find-fline "~/usrc/djvulibre/")
* (eepitch-shell)
cd ~/usrc/djvulibre/
sudo dpkg -i *.deb
#*
# (code-c-d "djvulibre" "~/usrc/djvulibre/djvulibre-3.5.21/")
# (find-djvulibrefile "")
# (find-djvulibrefile "gui/djview/")
#####
#
# Changing the "lpr" in gv to "~/bin/lpr"
# 2009jan11
#
#####
# «gv-lpr» (to ".gv-lpr")
# (find-angg "bin/lpdj-tmp")
Print Marked Pages
Print command:
#####
#
# eepitch-gs
# 2009jul26
#
#####
# «eepitch-gs» (to ".eepitch-gs")
# (find-man "1 gs")
(defun eepitch-gs () (interactive) (eepitch-comint "gs" "gs -r60"))
(defun eepitch-gs () (interactive) (eepitch-comint "gs" "gs -r45"))
* (eepitch-gs)
* (eepitch-kill)
* (eepitch-gs)
1 2
==
==
1 2 3 pstack
== == ==
/square {dup mul} def
5 square
==
{dup mul} 0 get == %-> dup
{dup mul} 1 get == %-> mul
(a string) type == %-> stringtype
[2 3] type == %-> arraytype
{dup mul} type == %-> arraytype
/square type == %-> nametype
1 type == %-> integertype
1.2 type == %-> realtype
444 type type == %-> nametype
[10 20 30] 0 get == %-> 10
[10 20 30] 2 get == %-> 30
/a [10 20 30] def
a 2 33 put
a == %-> [10 20 33]
/square {dup mul} def
/a 3 def /b 4 def
a square b square add sqrt
dup ==
dup round ==
dup floor ==
dup truncate ==
dup truncate cvi ==
% (find-psfirstgw3m "escapes.html")
% This is problematic. By default gs has ""
% as its PS2, so comint gets stuck here...
% We can be careful and use S-F8.
(This is a \
string \
that has no \
newlines) %-> (This is a string that has no newlines)
==
* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
gs -r60
quit
/Courier findfont
20 scalefont
setfont
72 500 moveto
(Hello world!) show
showpage
/Times-Roman findfont ==
#####
#
# ps-intro
# 2010oct07
#
#####
# «ps-intro» (to ".ps-intro")
# Like this, (find-es "lua-intro" "quick-presentation")
# but I am learning PostScript as I write it...
# (find-angg ".emacs" "gs")
* (eepitch-gs)
* (eepitch-kill)
* (eepitch-gs)
/Times-Roman findfont
100 scalefont setfont
72 200 moveto
(typography) show
%
/PNW {100 500} def /PN {300 500} def
/PSE {500 100} def
/mypath {newpath PNW moveto PN lineto PSE lineto closepath} def
mypath gsave 1 1 0 setrgbcolor fill grestore
gsave 8 setlinewidth stroke grestore
erasepage
mypath gsave 1 0 0 setrgbcolor fill grestore
* (eepitch-gs)
* (eepitch-kill)
* (eepitch-gs)
(foo) type == % stringtype
[10 20] type == % arraytype
{dup mul} type == % arraytype
/dup type == % nametype
10 type == % integertype
10.0 type == % realtype
systemdict type == % dicttype
10 type type == % nametype
/Times-Roman findfont type == % dicttype
% Arrays
[10 20 30] == % [10 20 30]
[10 20 30] 0 get == % 10
{10 20 30} 2 get == % 30
[10 20 30] length == % 3
% [10 20 30] 4 get == % Error: /rangecheck in --execute--
% Arrays: the executable bit, def, and execute
[10 20 30] cvx == % {10 20 30}
/coords [10 20] def coords == % [10 20]
/coords {10 20} def coords == == % 10 20
{10 20} execute == == % 10 20
% Arrays: bind
{dup mul} 0 get == % dup
{dup mul} 0 get type == % nametype
{dup mul} bind == % {--dup-- --mul--}
{dup mul} bind 0 get == % --dup--
{dup mul} bind 0 get type == % operatortype
% How do I convert /dup to dup?
% How do I obtain systemdict[dup]?
/5mul {5 mul} def
12 5mul == % 60
12 {5 mul} execute ==
12 /5mul execute == == % oops! /5mul 60
* (eepitch-gs)
* (eepitch-kill)
* (eepitch-gs)
% (find-psbluepage (+ 4 48) "100 200 translate")
/mytri { 0 0 moveto 50 0 lineto 0 100 lineto closepath fill } def
mytri
100 200 translate
mytri
90 rotate
mytri
* (eepitch-gs)
* (eepitch-kill)
* (eepitch-gs)
gsave 72 2.54 div dup scale
% newpath 2 2 moveto 4 2 lineto 2 6 lineto closepath stroke
newpath 2 2 moveto 4 2 lineto 2 6 lineto closepath fill
grestore
newpath 50 50 moveto 200 50 lineto closepath stroke
matrix ==
% (find-angg "PS/psbluebookops.txt")
% (find-psbluepage (+ 4 61) "7. Loops and Conditionals")
% (find-psbluepage (+ 4 77) "8. Arrays")
% (find-psbluepage (+ 4 87) "9. More Fonts")
% (find-psbluepage (+ 4 101) "10. Clipping and Line Details")
% (find-psbluepage (+ 4 111) "11. Images")
% (find-psbluepage (+ 3 119) "12. Postscript Printers")
% (find-psbluepage (+ -4 233) "Operator Summary")
% (find-psbluepage (+ -4 241) "Index")
% (find-psbluetext)
countexecstack array execstack dup length 2 sub 0 exch getinterval
$error /estack 3 -1 roll
countdictstack array dictstack $error /dstack 3 -1 roll
#####
#
# Books on PostScript
# 2009jul26
#
#####
# «books» (to ".books")
# (find-angg ".emacs.papers" "postscript")
# http://en.wikipedia.org/wiki/PostScript
# http://partners.adobe.com/public/developer/en/ps/PLRM.pdf
# http://partners.adobe.com/public/developer/en/ps/sdk/sample/BlueBook.zip
# http://partners.adobe.com/public/developer/en/ps/sdk/sample/GreenBook.zip
# http://www.rightbrain.com/download/books/ThinkingInPostScript.pdf
# http://www.adobe.com/devnet/postscript/
# http://www.adobe.com/devnet/postscript/pdfs/PLRM.pdf
# http://www.adobe.com/devnet/postscript/pdfs/PSerrata.txt
# http://www.adobe.com/devnet/postscript/pdfs/PS3010and3011.Supplement.pdf
# http://www.adobe.com/devnet/postscript/pdfs/5001.DSC_Spec.pdf
#*
rm -Rv ~/usrc/BlueBook/
rm -Rv ~/usrc/GreenBook/
unzip -d ~/usrc/ $S/http/partners.adobe.com/public/developer/en/ps/sdk/sample/BlueBook.zip
unzip -d ~/usrc/ $S/http/partners.adobe.com/public/developer/en/ps/sdk/sample/GreenBook.zip
for i in ~/usrc/BlueBook/CODE/*.PS; do
tr -d \\r < $i > $i.txt; mv -v $i.txt $i
done
#*
# (find-fline "~/usrc/BlueBook/CODE/")
# (find-fline "~/usrc/GreenBook/CODE/")
% (find-psbluepage 3 "Contents")
% (find-psbluepage (+ 8 1) "1. Introduction")
% (find-psbluepage (+ 7 7) "2. Stack and Arithmetic")
% (find-psbluepage (+ 6 17) "3. Beginning Graphics")
% (find-psbluepage (+ 4 35) "5. Printing Text")
% (find-psbluepage (+ 4 47) "6. More Graphics")
% (find-psbluepage (+ 4 61) "7. Loops and Conditionals")
% (find-psbluepage (+ 4 77) "8. Arrays")
% (find-psbluepage (+ 4 87) "9. More Fonts")
% (find-psbluepage (+ 4 101) "10. Clipping and Line Details")
% (find-psbluepage (+ 4 111) "11. Images")
% (find-psbluepage (+ 3 119) "12. Postscript Printers")
% (find-psbluepage (+ -4 233) "Operator Summary")
% (find-psbluepage (+ -4 241) "Index")
% (find-psbluetext)
% (find-psbluefile "")
% (find-psbluefile "PROG_03.PS" "/ellipse")
% (find-psbluepage (+ 0 139) "Elliptical arcs")
% (find-psgreenpage 2 "Contents")
% (find-psgreenpage (+ 11 1) "1. The Postscript Language: Overview")
% (find-psgreenpage (+ 10 11) "2. The Execution Model")
% (find-psgreenpage (+ 10 21) "The bind operator")
% (find-psgreenpage (+ 9 37) "3. The Imaging Model")
% (find-psgreenpage (+ 9 41) "Here are the element of the graphics state:")
% (find-psgreenpage (+ 9 57) "4. Emulators and Translators")
% (find-psgreenpage (+ 9 69) "72 72 scale")
% (find-psgreenpage (+ 8 77) "5. Designing the Page and the Program")
% (find-psgreenpage (+ 8 87) "6. Program Structure")
% (find-psgreenpage (+ 7 99) "7. The Mechanics of Setting Text")
% (find-psgreenpage (+ 6 123) "8. Scanned Images and Halftones")
% (find-psgreenpage (+ 6 137) "9. Complex Graphic Problem-Solving")
% (find-psgreenpage (+ 6 157) "10. File Interchange Standards")
% (find-psgreenpage (+ 6 167) "11. Merging Files from Different Sources")
% (find-psgreenpage (+ 6 173) "12. Writing a Print Spooler")
% (find-psgreenpage (+ 5 185) "13. Memory and File Resource Management")
% (find-psgreenpage (+ 4 197) "14. Error Handling")
% (find-psgreenpage (+ 4 207) "15. Debugging Techniques")
% (find-psgreenpage (+ 4 217) "A. Error Handler")
% (find-psgreenpage (+ 3 221) "Index")
% (find-psgreentext)
% (find-psgreenfile "")
#####
#
# gs-examples
# 2010aug24
#
#####
# «gs-examples» (to ".gs-examples")
# (find-status "ghostscript")
# (find-vldifile "ghostscript.list")
# (find-udfile "ghostscript/")
# (find-status "ghostscript-x")
# (find-vldifile "ghostscript-x.list")
# (find-udfile "ghostscript-x/")
# (find-udfile "gs-common/")
# (find-udfile "gs-common/NEWS.Debian.gz" "renamed to ghostscript")
# (find-status "ghostscript-doc")
# (find-vldifile "ghostscript-doc.list")
# (find-udfile "ghostscript-doc/")
# (find-udfile "ghostscript/examples/")
* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
rm -Rv /tmp/gs-examples/
cp -Rv /usr/share/doc/ghostscript/examples/ /tmp/gs-examples/
gunzip -rv /tmp/gs-examples/
# (find-fline "/tmp/gs-examples/")
locate tiger
dmissing tiger.ps
dmissing tiger
dmissing ghostscript | grep examp
#####
#
# run (a ghostcript command to load files)
# 2010aug24
#
#####
# «run» (to ".run")
# http://www.ugrad.math.ubc.ca/Flat/ps-toc.html
# http://www.ugrad.math.ubc.ca/Flat/files.html
#####
#
# tex.pro
# 2010oct07
#
#####
# «tex.pro» (to ".tex.pro")
% (find-fline "/usr/share/texmf-texlive/dvips/base/tex.pro")
% (find-fline "/usr/share/texmf-texlive/dvips/base/")
% (find-LATEXfile "2009-2-MD-prova-1.ps" "%%BeginProcSet: tex.pro")
% (find-LATEXfile "2009-2-MD-prova-1.ps" "%%BeginProcSet: special.pro")
/TeXDict 300 dict def
TeXDict begin
/N{def}def
/B{bind def}N
/S{exch}N
/X{S N}B
/A{dup}B
/TR{translate}N
/isls false N
/vsize 11 72 mul N
/hsize 8.5 72 mul N
/landplus90{false}def
/@rigin{isls
{[0 landplus90 {1 -1} {-1 1} ifelse 0 0 0] concat} if
72 Resolution div 72 VResolution div neg scale isls
{landplus90 {VResolution 72 div vsize mul 0 exch}
{Resolution -72 div hsize mul 0} ifelse TR} if
Resolution VResolution vsize -72 div 1 add mul TR
[matrix currentmatrix
{A A round sub abs 0.00001 lt {round} if} forall round
exch round exch]setmatrix}N
/@landscape{/isls true N}B
/@manualfeed{statusdict/manualfeed true put}B
/@copies{/#copies X}B
/FMat[1 0 0 -1 0 0]N
/FBB[0 0 0 0]N
/nn 0 N
/IEn 0 N
/ctr 0 N
/df-tail{/nn 8 dict N nn begin
/FontType 3 N
/FontMatrix fntrx N
/FontBBox FBB N string
/base X array
/BitMaps X/BuildChar{CharBuilder}N
/Encoding IEn N end A
{/foo setfont}2 array copy cvx N
load 0 nn put
/ctr 0 N[}B
/sf 0 N
/df{/sf 1 N
/fntrx FMat N
df-tail}B
/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B
/E{pop nn A definefont setfont}B
/Cw{Cd A length 5 sub get}B
/Ch{Cd A length 4 sub get}B
/Cx{128 Cd A length 3 sub get sub}B
/Cy{Cd A length 2 sub get 127 sub}B
/Cdx{Cd A length 1 sub get}B
/Ci{Cd A type/stringtype ne{ctr get/ctr ctr 1 add N}if}B
/CharBuilder{save 3 1 roll S A/base get 2 index get S
/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy
setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask
restore}B
/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
/BitMaps get S ctr S sf 1 ne
{A A length 1 sub A 2 index S get sf div put}if
put/ctr ctr 1 add N}B
/I{cc 1 add D}B
/bop{userdict/bop-hook known{bop-hook}if
/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N
/eop{SI restore userdict/eop-hook known{eop-hook}if showpage}N
/@start{userdict/start-hook known{start-hook}if pop/VResolution X/Resolution
X 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255
{IEn S A 360 add 36 4 index cvrs cvn put}for
pop 65781.76 div/vsize X 65781.76 div/hsize X}N
/p{show}N
/RMat[1 0 0 -1 0 0]N
/BDot 260 string N
/Rx 0 N
/Ry 0 N
/V{}B
/RV/v{/Ry X/Rx X V}B
statusdict begin
/product where{pop false[(Display)(NeXT)(LaserWriter 16/600)]
{A length product length le
{A length product exch 0 exch getinterval eq
{pop true exit}if
}{pop}ifelse
}forall
}{false}ifelse
end
{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask grestore}}
{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}imagemask grestore}}
ifelse B
/QV{gsave newpath transform round exch round
exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
fill grestore}B
/a{moveto}B
/delta 0 N
/tail{A/delta X 0 rmoveto}B
/M{S p delta add tail}B
/b{S p tail}B
/c{-4 M}B
/d{-3 M}B
/e{-2 M}B
/f{-1 M}B
/g{0 M}B
/h{1 M}B
/i{2 M}B
/j{3 M}B
/k{4 M}B
/w{0 rmoveto}B
/l{p -4 w}B
/m{p -3 w}B
/n{p -2 w}B
/o{p -1 w}B
/q{p 1 w}B
/r{p 2 w}B
/s{p 3 w}B
/t{p 4 w}B
/x{0 S rmoveto}B
/y{3 2 roll p a}B
/bos{/SS save N}B
/eos{SS restore}B
end
#####
#
# psutils
# 2011apr28
#
#####
# «psutils» (to ".psutils")
# (find-status "psutils")
# (find-vldifile "psutils.list")
# (find-udfile "psutils/")
# (find-status "xpdf-utils")
# (find-vldifile "xpdf-utils.list")
# (find-udfile "xpdf-utils/")
# (find-status "poppler-utils")
# (find-vldifile "poppler-utils.list")
# (find-udfile "poppler-utils/")
http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/
# A simple script to reduce pdf file size:
# http://www.alfredklomp.com/programming/shrinkpdf/
# http://icking-music-archive.org/scores/franck/
* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
cd $S/http/icking-music-archive.org/scores/franck/
cp -v Franck-Lento-fuge-op.18.pdf /tmp/fugue.pdf
cd /tmp/
cp -v fugue.pdf fugue2.pdf
# (find-man "mogrify")
mogrify -scale '90%' fugue2.pdf
# (find-fline "$S/http/www.cs.cmu.edu/~joshuad/pdfrescale")
bash $S/http/www.cs.cmu.edu/~joshuad/pdfrescale fugue 0.9
# (find-zsh "dmissing pdfpages")
#####
#
# pdfpages (for resizing a pdf)
# 2011apr28
#
#####
# «pdfpages» (to ".pdfpages")
# (find-es "tex" "pdfpages")
# (code-c-d "pdfpagesdoc" "/usr/share/doc/texlive-latex-recommended-doc/latex/pdfpages/")
# (find-pdfpagesdocfile "")
# http://www.cs.cmu.edu/~joshuad/pdfrescale
* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
cd /tmp/
cat > fugue2.tex <<'%%%'
\documentclass[twoside]{article}
\usepackage{pdfpages}
\begin{document}
\includepdf[pages=-,scale=0.9,landscape=true]{fugue.pdf}
\end{document}
%%%
pdflatex fugue2.tex
# (find-pdf-page "/tmp/fugue2.pdf")
(code-pdf-page "pdfpages" "/usr/share/doc/texlive-latex-recommended-doc/latex/pdfpages/pdfpages.pdf")
(code-pdf-text "pdfpages" "/usr/share/doc/texlive-latex-recommended-doc/latex/pdfpages/pdfpages.pdf")
;; (find-pdfpagespage 1 "Contents")
;; (find-pdfpagestext "")
#####
#
# pdfjam (for pdfnup)
# 2011jun20
#
#####
# «pdfjam» (to ".pdfjam")
# «pdfnup» (to ".pdfnup")
# (find-status "pdfjam")
# (find-vldifile "pdfjam.list")
# (find-udfile "pdfjam/")
# (find-udw3m "pdfjam/PDFjam-README.html" "select")
# http://www.warwick.ac.uk/go/pdfjam
# (find-sh "pdfjam --help")
# (find-man "1 pdfjoin")
# (find-man "1 pdfbook")
# (find-man "1 pdfjam-pocketmod")
# (find-man "1 pdf270")
# (find-man "1 pdfpun")
# (find-man "1 pdf180")
# (find-man "1 pdf90")
# (find-man "1 pdfnup")
# (find-man "1 pdfjam")
# (find-man "1 pdfjam-slides3up")
# (find-man "1 pdfjam-slides6up")
# (find-man "1 pdfflip")
# (find-sh "pdfnup --help")
* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
pdfnup -o /tmp/monep-8-2up.pdf /tmp/monep-8.pdf
# (find-pdf-page "/tmp/monep-8-2up.pdf")
#####
#
# default PDF viewer
# 2013sep04
#
#####
# «default-pdf-viewer» (to ".default-pdf-viewer")
# «see» (to ".see")
# (find-es "debian" "mailcap")
#####
#
# pdftk
# 2015dec10 / 2021feb10
#
#####
# «pdftk» (to ".pdftk")
# http://askubuntu.com/questions/221962/how-can-i-extract-a-page-range-a-part-of-a-pdf
# http://linuxcommando.blogspot.com.br/2013/02/splitting-up-is-easy-for-pdf-file.html
# http://williamjturkel.net/2013/08/24/working-with-pdfs-using-command-line-tools-in-linux/
# http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/
# https://gitlab.com/pdftk-java/pdftk
# https://www.pdflabs.com/docs/pdftk-cli-examples/
# (find-status "pdftk")
# (find-vldifile "pdftk.list")
# (find-udfile "pdftk/")
# (find-status "pdftk-java")
# (find-vldifile "pdftk-java.list")
# (find-udfile "pdftk-java/")
# (find-man "1 pdftk")
# (find-sh "pdftk --help")
* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
cp -v ~/DANIELA/2025/00294216120228190001.pdf /tmp/p.pdf
pdftk /tmp/p.pdf dump_data_utf8 | tee /tmp/p.data | wc
# (find-sh "pdftk /tmp/p.pdf dump_data")
# (find-sh "pdftk /tmp/p.pdf dump_data_utf8")
# (find-sh "pdftk /tmp/p.pdf dump_data_utf8 | grep Bookmark")
# (find-sh "pdftk /tmp/p.pdf dump_data_fields")
# (find-sh "pdftk /tmp/p.pdf dump_data_fields_utf8")
# (find-sh "pdftk /tmp/p.pdf dump_data_annots")
# (find-angg "LUA/PdfData1.lua")
cd /tmp/
pdftk pagliapscap01.pdf cat 1 output 01.pdf
#####
#
# qpdf
# 2021feb10
#
#####
# «qpdf» (to ".qpdf")
# (find-status "qpdf")
# (find-vldifile "qpdf.list")
# (find-udfile "qpdf/")
# (find-status "libqpdf21")
# (find-vldifile "libqpdf21.list")
# (find-udfile "libqpdf21/")
# (find-man "1 fix-qdf")
# (find-man "1 qpdf")
# (find-man "1 zlib-flate")
# (find-sh "qpdf --help")
/usr/share/doc/qpdf/qpdf-manual.html
/usr/share/doc/qpdf/qpdf-manual.pdf
# (code-pdf-page "qpdfmanual" "/usr/share/doc/qpdf/qpdf-manual.pdf")
# (code-pdf-text "qpdfmanual" "/usr/share/doc/qpdf/qpdf-manual.pdf")
# (find-qpdfmanualpage)
# (find-qpdfmanualtext)
# (find-qpdfmanualpage 5 "structural, content-preserving transformations")
# (find-qpdfmanualtext 5 "structural, content-preserving transformations")
#####
#
# qpdf-extract
# 2025may11
#
#####
# «qpdf-extract» (to ".qpdf-extract")
# (find-es "tex" "screenshotgeometry")
* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
# (find-fline "/tmp/qpdf/")
rm -Rv /tmp/qpdf/
mkdir /tmp/qpdf/
cd /tmp/qpdf/
cat > a.tex <<'---'
\documentclass{article} % (find-es "tex" "geometry")
\usepackage[paperwidth=6cm,paperheight=4cm,includefoot]{geometry}
\begin{document}
\newpage a1
\newpage a2
\newpage a3
\newpage a4
\newpage a5
\newpage a6
\end{document}
---
lualatex a.tex
# (find-pdf-page "/tmp/qpdf/a.pdf")
# (find-pdf-text "/tmp/qpdf/a.pdf")
#####
#
# qpdf-merge
# 2023jul01
#
#####
# «qpdf-merge» (to ".qpdf-merge")
# https://github.com/qpdf/qpdf/issues/11
# (find-angg "LUA/QPDFMerge.lua")
# (find-anggfile "LUA/QPDFMerge.lua" "qpdf --empty --pages")
# (find-pdfanim-links "/tmp/qdraw/" "a_" "all")
# (find-efunction 'find-pdfanim-links)
# (to "glue-pages")
# (find-angg "MAXIMA/topdfanim1.sh")
#####
#
# qpdf-rotate
# 2025may11
#
#####
# «qpdf-rotate» (to ".qpdf-rotate")
# https://unix.stackexchange.com/questions/394065/command-line-how-do-you-rotate-a-pdf-file-90-degrees
# (c2m221vsbp 4 "questoes-2-e-3")
# (c2m221vsba "questoes-2-e-3")
# (find-sh0 "cp -v ~/LATEX/2022-1-C2-VSB.pdf /tmp/")
# (find-sh0 "cp -v ~/LATEX/2022-1-C2-VSB.pdf /tmp/in.pdf")
* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
cp -v ~/LATEX/2022-1-C2-VSB.pdf /tmp/
cp -v ~/LATEX/2022-1-C3-VSB.pdf /tmp/
cd /tmp/
qpdf 2022-1-C2-VSB.pdf 2022-1-C2-VSB-rodado.pdf --rotate=+90
qpdf 2022-1-C3-VSB.pdf 2022-1-C3-VSB-rodado.pdf --rotate=+90
# (find-fline "/tmp/")
#####
#
# converting djvu to pdf
# 2017jun14
#
#####
# «djvu-to-pdf» (to ".djvu-to-pdf")
# (find-zsh "apt-file search djvu | grep pdf")
# (find-angg "SCANS/Makefile" "pdf")
# (find-es "scan" "djvu2pdf")
#####
#
# djview
# 2017jul28
#
#####
# «djview» (to ".djview")
# (find-es "scan" "djview")
# (find-es "scan" "djview-page")
# (find-es "scan" "djview-default-page")
#####
#
# Other djvu viewers
# 2017ago01
#
#####
# «other-djvu-viewers» (to ".other-djvu-viewers")
# (find-status "djview4")
# (find-status "djview4" "djvu-viewer")
# (find-status "evince")
#####
#
# evince
# 2017ago01
#
#####
# «evince» (to ".evince")
# (find-es "mate" "atril")
# (find-status "evince")
# (find-status "evince" "Conflicts: evince-gtk")
# (find-vldifile "evince.list")
# (find-udfile "evince/")
# (find-man "1 evince")
# (find-man "1 evince" "-i, --page-index=NUMBER")
# (find-man "1 evince" "-f, --fullscreen")
# (find-man "1 evince" "-s, --presentation")
# http://www.gnome.org/projects/evince/
# https://wiki.gnome.org/Apps/Evince
# (find-fline "~/books/__cats/")
# (find-books "__cats/__cats.el" "johnstone-elephant")
# (setenv "DJVU" (ee-expand "~/books/__cats/johnstone__sketches_of_an_elephant_2vols.djvu"))
* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
evince --help
evince --page-index=2 $DJVU
evince -f --page-index=99 $DJVU
evince -s --page-index=99 $DJVU
evince -w --page-index=99 $DJVU
evince -f -i $[17+99] $DJVU
evince -s -i $[17+99] $DJVU
evince -geometry +0+0 -s --page-index=99 $DJVU
#####
#
# pdftotext
# 2017ago01
#
####
# «pdftotext» (to ".pdftotext")
# (find-es "charsets" "pdftotext")
# https://poppler.freedesktop.org/
# (find-status "poppler-utils")
# (find-vldifile "poppler-utils.list")
# (find-udfile "poppler-utils/")
# (find-man "1 pdftotext")
# (find-efunction-links 'find-pdf-text)
# (find-sh "pdftotext")
# (find-sh "pdftotext -listenc")
* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
# (find-sh "apt-cache show poppler-utils")
# (find-sh "apt-cache showsrc poppler")
rm -Rv /tmp/d/
mkdir /tmp/d/
cd /tmp/d/
sudo apt-get build-dep -y poppler
apt-get source poppler |& tee osource
apt-get source --build poppler |& tee osourceb
# (find-fline "/tmp/d/")
# (find-fline "/tmp/d/poppler-0.41.0/utils/pdftotext.cc")
#####
#
# pdftotext-for-windows
# 2021oct21
#
#####
# «pdftotext-for-windows» (to ".pdftotext-for-windows")
# https://en.wikipedia.org/wiki/Xpdf
# https://www.xpdfreader.com/download.html
# https://dl.xpdfreader.com/xpdf-tools-win-4.03.zip
* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
# (find-fline "/tmp/xpdf-tools-win-4.03/")
# (find-fline "/tmp/xpdf-tools-win-4.03/README")
# (find-fline "/tmp/xpdf-tools-win-4.03/bin64/" "pdftotext.exe")
rm -Rv /tmp/xpdf-tools-win-4.03/
mkdir /tmp/xpdf-tools-win-4.03/
cd /tmp/
unzip $S/https/dl.xpdfreader.com/xpdf-tools-win-4.03.zip
cd /tmp/xpdf-tools-win-4.03/
cp -v /tmp/xpdf-tools-win-4.03/bin64/pdftotext.exe ~/2021-oficina/
# (find-fline "~/2021-oficina/")
#####
#
# pdftotext generates spurious formfeeds
# 2019apr11
#
#####
# «pdftotext-spurious-ffs» (to ".pdftotext-spurious-ffs")
# (find-eev "eev-pdflike.el" "ee-goto-position-page")
# (find-eev "eev-pdflike.el" "ee-goto-position-page" "ee-pdftotext-replace-bad-ffs")
# (find-eev "eev-pdflike.el" "find-pdf-text")
# (find-eev "eev-pdflike.el" "find-pdf-text" "pdftotext")
# An example of a PDF in which my cleanup function doesn't work:
# https://github.com/pluralsight/git-internals-pdf/releases/download/v2.0/peepcode-git.pdf
# (find-books "__comp/__comp.el" "git-internals")
# (find-books "__comp/__comp.el" "git-internals" "\\f\\f")
# (find-gitinternalstext 16 "blob : a906cb")
# (find-gitinternalstext 16 "blob : a906cb" "\f\f")
# (find-man "1 pdftotext")
# (find-man "1 pdftotext" "-enc encoding-name")
# (find-man "1 pdftotext" "-enc encoding-name" "UTF-8")
* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
cd /tmp/
# wget -nc https://github.com/pluralsight/git-internals-pdf/releases/download/v2.0/peepcode-git.pdf
cp -v $S/https/github.com/pluralsight/git-internals-pdf/releases/download/v2.0/peepcode-git.pdf .
pdftotext -layout -enc Latin1 peepcode-git.pdf peepcode-git.latin1
pdftotext -layout peepcode-git.pdf peepcode-git.utf8
# (find-fline "/tmp/peepcode-git.latin1")
# (find-fline "/tmp/peepcode-git.latin1" " 15")
# (find-fline "/tmp/peepcode-git.latin1" " 15" "blob : a906cb")
# (find-fline "/tmp/peepcode-git.latin1" " 15" "blob : a906cb" "\f\f")
# (find-fline "/tmp/peepcode-git.utf8")
# (find-fline "/tmp/peepcode-git.utf8" " 15")
# (find-fline "/tmp/peepcode-git.utf8" " 15" "blob : a906cb")
# (find-fline "/tmp/peepcode-git.utf8" " 15" "blob : a906cb" 3)
# (find-fline "/tmp/peepcode-git.latin1" "SimpleGit Ruby Library" -2)
# (find-fline "/tmp/peepcode-git.utf8" "SimpleGit Ruby Library" -2)
#####
#
# Page labels in PDFs
# 2018dec03
#
#####
# «page-labels» (to ".page-labels")
# (find-es "tex" "hyperref")
# (find-man "1 pdfinfo")
# https://stackoverflow.com/questions/12924073/export-pdf-page-labels-on-command-line
# https://tex.stackexchange.com/questions/246705/pdf-page-labels
# https://texfaq.org/FAQ-pdfpagelabels
https://manuals.setasign.com/setapdf-core-manual/page-labels/
#####
#
# reduce-pdf-file-size
# 2019dec01
#
#####
# «reduce-pdf-file-size» (to ".reduce-pdf-file-size")
# https://bash.cyberciti.biz/file-management/linux-shell-script-to-reduce-pdf-file-size/
# (find-es "imagemagick" "convert-pdf-to-jpgs")
# (find-angg ".emacs.templates" "find-jpgstopdf-links")
#####
#
# zathura
# 2020dec01
#
#####
# «zathura» (to ".zathura")
# https://pwmt.org/projects/zathura/
# https://pwmt.org/projects/zathura/download/
# https://pwmt.org/projects/zathura/installation/
# https://pwmt.org/projects/zathura/screenshots/
# https://git.pwmt.org/pwmt/girara.git
# https://git.pwmt.org/pwmt/girara
# https://git.pwmt.org/pwmt
# https://git.pwmt.org/pwmt/zathura
# (find-status "zathura")
# (find-vldifile "zathura.list")
# (find-udfile "zathura/")
# (find-man "1 zathura")
# (find-bgprocess "zathura -P 3 ~/Coetzee99.pdf")
(defun ee-find-zathura-page (fname &optional page)
`("zathura"
"-P" ,(format "%d" (or page 1))
,fname))
;; (find-code-pdfbackend "zathura-page")
(code-pdfbackend "zathura-page")
;; (find-zathura-page "~/Coetzee99.pdf")
;; (find-zathura-page "~/Coetzee99.pdf" 3)
#####
#
# mupdf and mutool
# 2021sep23
#
#####
# «mupdf» (to ".mupdf")
# https://en.wikipedia.org/wiki/MuPDF
# https://mupdf.com/
# https://mupdf.com/docs/ecosystem.html
# https://mupdf.com/docs/manual-mutool-run.html
# https://mujs.com/
# (find-status "mupdf")
# (find-vldifile "mupdf.list")
# (find-udfile "mupdf/")
# (find-status "mupdf-tools")
# (find-vldifile "mupdf-tools.list")
# (find-udfile "mupdf-tools/")
# (find-man "1 mupdf")
# (find-man "1 mupdf" "KEY BINDINGS")
# (find-man "1 mutool")
# (find-man "1 mutool" "mutool draw [options] file [pages]")
# (find-man "1 mutool" "Comma separated list of page numbers")
# (find-man "1 mutool" "mutool info")
# (find-man "1 mutool" "mutool merge")
# https://www.slant.co/topics/5967/~pdf-viewers-for-linux
# (find-eev "eev-pdflike.el" "find-mupdfpage")
mupdf --help
mupdf ~/Coetzee99.pdf 42
apti mupdf
apti mupdf-tools
* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
rm -Rv /tmp/mutool/
mkdir /tmp/mutool/
cd /tmp/mutool/
cp -iv ~/books/__cats/maclane_moerdijk__sheaves_in_geometry_and_logic.pdf \
/tmp/mutool/in.pdf
mutool draw -o out.pdf in.pdf 21
mutool info out.pdf
mutool draw -o out.png in.pdf 21
# (find-fline "/tmp/mutool/")
https://stackoverflow.com/questions/2641770/extracting-image-from-pdf-with-ccittfaxdecode-filter
https://stackoverflow.com/questions/39927639/is-it-possible-to-use-libtiff-to-decode-ccitt-encoded-data-when-the-length-is-no?noredirect=1&lq=1
https://blog.idrsolutions.com/2013/03/understanding-the-pdf-file-format-filter-and-decodeparms-objects-for-a-pdf-image/
https://stackoverflow.com/a/47877930/4204372
https://stackoverflow.com/questions/2693820/extract-images-from-pdf-without-resampling-in-python/47877930#47877930
pip3 install pymupdf
* (eepitch-python)
* (eepitch-kill)
* (eepitch-python)
import fitz
os.chdir("/tmp/mutool/")
doc = fitz.open("out.pdf")
for i in range(len(doc)):
for img in doc.getPageImageList(i):
xref = img[0]
pix = fitz.Pixmap(doc, xref)
if pix.n < 5: # this is GRAY or RGB
# pix.writePNG("p%s-%s.png" % (i, xref))
pix.writePNG("out.png")
else: # CMYK: convert to RGB first
# pix1 = fitz.Pixmap(fitz.csRGB, pix)
# pix1.writePNG("p%s-%s.png" % (i, xref))
pix1.writePNG("out.png")
pix1 = None
pix = None
# (find-fline "/tmp/mutool/")
# (find-gimp "/tmp/mutool/")
https://lists.gnu.org/archive/html/emacs-devel/2022-09/msg01377.html extract an outline
https://codeberg.org/jao/elibs/src/branch/main/lib/doc/jao-pdf.el#L48 -> jao-pdf-outline
https://codeberg.org/jao/elibs/src/branch/main/lib/doc/jao-doc-view.el#L50 -> jao-doc-view--imenu-create-index
#####
#
# epdfview
# 2022mar24
#
#####
# «epdfview» (to ".epdfview")
# (find-git-links "https://github.com/JotaRandom/epdfview" "epdfview")
# (code-c-d "epdfview" "~/usrc/epdfview/")
# (find-epdfviewfile "")
# (find-epdfviewfile "INSTALL")
* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
apti libgtk-3-dev libgtk2.0-dev
* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
cd ~/usrc/epdfview/
git clean -dffx
git reset --hard
./configure --help |& tee och
./configure --prefix=/usr/local |& tee oc
make |& tee om
make check |& tee omc
sudo make install |& tee omi
epdfview
epdfview --help
# (find-man "epdfview")
#####
#
# okular
# 2022apr04
#
#####
# «okular» (to ".okular")
# (find-status "okular")
# (find-vldifile "okular.list")
# (find-udfile "okular/")
# (find-man "1 okular")
* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
apti okular
aptrm okular
sudo apt-get autoremove
;; Based on: (find-eev "eev-pdflike.el" "find-mupdfpage")
;; Test: (find-pdf-like-intro "2. Preparation")
;; (find-okular-page "~/Coetzee99.pdf" 3)
;;
(defun find-okular-page (fname &optional page &rest rest)
(find-bgprocess (ee-find-okular-page fname page)))
(defvar ee-find-okular-page-options '())
(defun ee-find-okular-page (fname &optional page &rest rest)
`("okular"
,@ee-find-okular-page-options
,@(if page `("-p" ,(format "%s" page)))
,fname
))
;; (find-code-pdfbackend "okular-page")
(code-pdfbackend "okular-page")
#####
#
# paps
# 2022dec18
#
#####
# «paps» (to ".paps")
# (find-angg ".emacs.templates" "find-paps-links")
# https://lists.gnu.org/archive/html/help-gnu-emacs/2022-12/msg00535.html Jean Louis
# https://lists.gnu.org/archive/html/help-gnu-emacs/2022-12/msg00790.html JL: options
# https://lists.gnu.org/archive/html/help-gnu-emacs/2023-01/msg00057.html JL: make
# (find-man "1 paps")
# (find-status "paps")
# (find-vldifile "paps.list")
# (find-udfile "paps/")
#####
#
# pypdf
# 2023may23
#
#####
# «pypdf» (to ".pypdf")
# (find-pip3-links "pypdf")
# (find-pip3-links "pypdf2")
# (find-pip3-links "pypdf4")
# https://pybrary.net/pyPdf/
# https://pypi.org/project/pypdf/
# https://pypi.org/project/PyPDF2/
# https://pypi.org/project/PyPDF4/
#####
#
# pdf2djvu
# 2024sep16
#
#####
# «pdf2djvu» (to ".pdf2djvu")
# (to "djvu-to-pdf")
# (find-fline "~/books/__analysis/" "iezzi__fundamentos_de_matematica_elementar__01_conjuntos_e_funcoes_3a_ed_1985.pdf")
# (find-books "__analysis/__analysis.el" "iezzi")
* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
cp -v ~/books/__analysis/iezzi__fundamentos_de_matematica_elementar__01_conjuntos_e_funcoes_3a_ed_1985.pdf /tmp/a.pdf
cd /tmp/
pdf2djvu -o b.djvu a.pdf
djvuize b.pdf
pdf2djvu --help
djvu2pdf
#####
#
# pdfinfo
# 2025jan25
#
#####
# «pdfinfo» (to ".pdfinfo")
# (find-man "1 pdfinfo")
# (find-extra-file-links "~/LATEX/2024-2-C2-teste-niv-pp.pdf" "{c}")
# (find-LATEXfile "2024-2-C2-teste-niv.tex" "find-pdfpages2-links")
# (find-angg ".emacs.templates" "find-pdfpages2-links")
* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
pdfinfo ~/LATEX/2024-2-C2-teste-niv.pdf
pdfinfo ~/LATEX/2024-2-C2-teste-niv-pp.pdf
pdfinfo ~/LATEX/2024-2-C2-teste-niv.pdf | grep 'Page size'
pdfinfo ~/LATEX/2024-2-C2-teste-niv-pp.pdf | grep 'Page size'
* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
cd /tmp/
cat > a4.tex <<'%%%'
\documentclass[a4paper]{article}
\begin{document}
A4
\end{document}
%%%
lualatex a4.tex
pdfinfo a4.pdf
pdfinfo a4.pdf | grep 'Page size'
#####
#
# pstris
# 2025feb23
#
#####
# «pstris» (to ".pstris")
# https://github.com/nst/PSTris
# https://news.ycombinator.com/item?id=43099894 Tetris in PostScript (github.com/nst)
# (find-git-links "https://github.com/nst/PSTris" "pstris")
# (code-c-d "pstris" "~/usrc/PSTris/")
# (find-pstrisfile "")
#####
#
# pdf-to-black-and-white
# 2025oct18
#
#####
# «pdf-to-black-and-white» (to ".pdf-to-black-and-white")
# https://unix.stackexchange.com/questions/93959/how-to-convert-a-color-pdf-to-black-white
https://reverseengineering.stackexchange.com/questions/1526/open-source-gui-tool-for-decomposing-a-pdf
# (find-status "kwayland-data")
# (find-vldifile "kwayland-data:amd64:amd64.list")
# (find-udfile "kwayland-data/")
# (find-status "kwayland-integration")
# (find-vldifile "kwayland-integration:amd64.list")
# (find-udfile "kwayland-integration/")
;; Configure `find-pdf-page':
;; See: (find-pdf-like-intro "3. Hyperlinks to PDF files")
;; (find-pdf-like-intro "3. Hyperlinks to PDF files" "If you have xpdf")
;; (find-eev "eev-pdflike.el" "change-default-viewer")
;; Test: (find-pdf-like-intro "2. Preparation")
;; (find-pdf-page "~/Coetzee99.pdf" 3)
(defalias 'find-pdf-page 'find-xpdf-page)
(defalias 'find-pdf-page 'find-googlechrome-page)
(defalias 'find-pdf-page 'find-mupdf-page)
"p%s-%s.png" % (22, 444)
# (find-status "pstoedit")
# (find-vldifile "pstoedit.list")
# (find-udfile "pstoedit/")
# (find-efile "play/handwrite.el")
http://www.math.ubc.ca/~cass/graphics/manual/
https://github.com/mkottman/PdfCropGUI
# 2007apr06: An irc bot written in postscript
# http://jeffz.name/gs/
https://www.ghostscript.com/doc/9.27/History9.htm#Version9.27
https://news.ycombinator.com/item?id=32629237 PostScript Control Structures (2003) (nedbatchelder.com)
https://news.ycombinator.com/item?id=33646951 Show HN: I am building a new Python library to read/write PDF files (github.com/desgeeko)
https://news.ycombinator.com/item?id=33912786 How PostScript kickstarted desktop publishing (ieee.org)
https://computerhistory.org/blog/postscript-a-digital-printing-press/
https://amccormack.net/2012-01-22-anatomy-of-a-pdf-document.html
https://web.archive.org/web/20190914234428/esec-lab.sogeti.com/pages/origami.html
https://github.com/dzzie/pdfstreamdumper
https://github.com/jduck/file-dissect
https://www.sensible.so/history-of-the-pdf-pdf
https://news.ycombinator.com/item?id=38765627 Stirling-PDF: local web application to perform various operations on PDFs (github.com/frooodle)
https://github.com/dvcoolarun/web2pdf
https://news.ycombinator.com/item?id=39265756 Show HN: CLI for generating PDFs for offline reading (github.com/dvcoolarun)
https://en.wikipedia.org/wiki/NeWS
https://www.reddit.com/r/emacs/comments/1gbkdag/code_to_modify_pdf_metadata_such_as_its_outline/
https://blog.invisiblethings.org/2013/02/21/converting-untrusted-pdfs-into-trusted.html
https://news.ycombinator.com/item?id=42401904 Converting untrusted PDFs into trusted ones: The Qubes Way (2013) (invisiblethings.org)
https://github.com/desgeeko/pdfsyntax/blob/main/docs/browse.md
https://news.ycombinator.com/item?id=43000303
https://news.ycombinator.com/item?id=43000303
https://personal.math.ubc.ca/~cass/graphics/text/www/ Mathematical illustrations - A manual of Geometry and PostScript
https://eliot-jones.com/2025/8/pdf-parsing-xref
https://news.ycombinator.com/item?id=44780353 So you want to parse a PDF? (eliot-jones.com)
# Local Variables:
# coding: utf-8-unix
# modes: (fundamental-mode emacs-lisp-mode ps-mode)
# End: