OpenOffice Writer无法链接到ASCII文本源文件,应用语法突出显示,将其包装在帧中,并在源文件更改时更新帧内容。但是,OpenOffice Writer可以链接到图像,并在更改时自动更新图像。
图像需要是高分辨率(300 dpi或更高),并且语法着色适合白色背景(即打印页面)。
如何从源代码文件自动创建高质量图像,例如:
大多数尝试都是以下主题的变体:
$ enscript --color -f Courier12 -B -1 --highlight=sql -h -o - source.sql |\
convert - -trim -border 10 source.png
这种方法存在一些问题:
-resample
而-density
未提供改进)。Courier100
生成多个.png
文件,需要将它们拼接在一起。-border 10
意外地将背景颜色从白色变为浅灰色。将源文件转换为PostScript - 完全避免使用ImageMagick - 然后将它们导入到GIMP中将产生所需的结果。不幸的是,该解决方案涉及一些手动工作,我的GIMP批处理编程经验几乎没有。
答案 0 :(得分:5)
以下软件包可用于Windows和Linux系统,并且是完整,可用的解决方案所必需的:
以下是该解决方案的工作原理:
FONT
标记)。将组件安装到以下位置:
C:\Program Files\Vim
C:\Program Files\Vim\vim73\colors
C:\Program Files\wkhtml
C:\Program Files\gs
C:\Program Files\ImageMagick
注意:ImageMagick有一个名为convert.exe
的程序,它不能取代Windows convert
命令。因此,convert.exe
的完整路径必须在批处理文件中进行硬编码(而不是将ImageMagick添加到PATH
)。
添加或更新以下environment variables:
C:\Program Files\gs\gs9.00\lib
C:\Program Files\gs\gs9.00\bin\gswin32.exe
"C:\Program Files\Vim\vim73";"C:\Program Files\wkhtml";"C:\Program Files\gs\gs9.00\bin"
以下是批处理源文本:
@ECHO OFF
ECHO Converting %1 to %1.html ...
gvim -e %1 -c "set nobackup" -c ":colorscheme moria" -c :TOhtml -c wq -c :q
ECHO Converting %1.html to %1.ps ...
wkhtmltopdf --quiet --dpi 1200 %1.html %1.ps
ECHO Converting %1.pdf to %1.png ...
IF EXIST %1.png DEL /q %1.png
gswin32 -q -dBATCH -dNOPAUSE -dSAFER -dNOPROMPT ^
-sDEVICE=png16m -dDEVICEXRESOLUTION=600 -dDEVICEYRESOLUTION=600 ^
-dDEVICEWIDTH=4958 -dDEVICEHEIGHT=7017 -dNOPLATFONTS ^
-dTextAlphaBits=4 -sOutputFile=%1.png %1.ps
ECHO Trimming %1.png ...
move %1.png %1.orig.png
"C:\Program Files\ImageMagick\convert.exe" -trim +repage -trim +repage ^
-bordercolor "#f0f0f0" -border 25x25 %1.orig.png %1.png
ECHO Removing old files ...
IF EXIST %1.orig.png DEL /q %1.orig.png
IF EXIST %1.html DEL /q %1.html
IF EXIST %1.ps DEL /q %1.ps
答案 1 :(得分:0)
另一种选择是使用catage,CodeSnap,PolaCode或carbon-now-cli。
CodeSnap和PolaCode是Visual Studio Code扩展,可能很难从命令行使用它们,但它们使用起来很简单。将它们安装到编辑器中时,请按照说明进行操作。此解决方案适用于Visual Studio Code支持的所有操作系统。
如果您使用的是基于Debian的Linux发行版,并且已安装Docker,则可以使用以下Shell脚本创建一个Catage Docker映像:
#!/bin/bash
sudo docker build -t catage:local - <<EOF
FROM buildkite/puppeteer
USER node
ENV NPM_CONFIG_PREFIX=/home/node/.npm-global
ENV PATH=$PATH:/home/node/.npm-global/bin
RUN mkdir /home/node/.npm-global
WORKDIR /home/node/app
RUN npm install -g catage
EOF
类似地,可以使用以下脚本创建一个carbon-now-cli Docker映像:
#!/bin/bash
sudo docker build -t carbon-now:local - <<EOF
FROM alekzonder/puppeteer
USER root
RUN apt-get update
RUN apt-get install git -yq
RUN yarn global add carbon-now-cli
USER pptruser
EOF
如下在shell脚本中使用这些Docker映像,以从您的代码段生成PNG映像:
#!/bin/bash
alias catage="sudo -E docker run --rm -it -v $PWD:/home/node/app catage:local catage"
alias carbon-now="sudo -E docker run --rm -it --init --cap-add=SYS_ADMIN --shm-size=1gb --user pptruser -v $PWD:/home/pptruser/app --workdir /home/pptruser/app carbon-now:local carbon-now"
catage --language java --no-line-numbers --theme Material --frame-title "My Code Snippet" --format png "my_code_snippet.java" "my_code_snippet.png"
carbon-now "my_code_snippet.java" --target "my_code_snippet" --headless
Docker方法适用于Docker支持的所有操作系统。您可能必须根据操作系统的功能来修改上面的Shell脚本示例,但是基本命令保持不变。