gpt4 book ai didi

pdf - 后记 : Reading a file, 写入 pdf

转载 作者:行者123 更新时间:2023-12-04 04:54:49 25 4
gpt4 key购买 nike

我正在尝试使用带有 Ghostscript 解释器的 PostScript 解析 .txt 文件。 .txt 文件是我需要从中提取日期戳的各种日志文件。文件中会有一行,例如“date: [01-May-2011 06:41:52]”。我试图简单地将“01-May-2011 06:41:52”部分(不带括号等)输出到PDF。

我的 PostScript 代码:

/grabdate {


linehold ([) search { pop pop % get everything after brackets
(]) search {exch pop exch pop % get everything before brackets

== flush

} {pop} ifelse
} {pop} ifelse
} def


/strrx 256 string def % temp line stash
/filename (C:\\path\\to\\file.txt) def

filename (r) file /myworkfile exch def % name of opened file

{myworkfile strrx readline {/linehold exch store grabdate}
{myworkfile closefile exit} ifelse

} loop

在命令提示符下使用 Ghostscript 我发出命令:
gswin32c \
-q \
-dNOPAUSE \
-dBATCH \
-sOutputFile=out.pdf \
-sDEVICE=pdfwrite myfile.ps

PostScript 代码部分有效,因为它将正确解析的“日期”行输出到标准输出(因为 == flush),但我的问题是,我似乎无法获得“grabdate”操作来编写相同的“date"字符串到 PDF,而不是标准输出。是否有一组 PostScript 命令可以用来执行此操作?我在这里缺少什么?

任何帮助表示赞赏。

最佳答案

“==”操作符专门将输出发送到标准输出,它不是“标记操作符”,即它在输出页面上不做标记。

Ghostscript 读取 PostScript 并解释程序,任何标记操作都作为图形基元提供给输出设备,设备决定如何处理它。在 pdfwrite 的情况下,它将 PDF 标记操作写入输出文件,相当于 PostScript 操作。

显然,非标记操作符不产生图形基元,因此它们不会传递给设备。

如果你想让你的“grabdate”例程在页面上写文本,那么你必须选择一种字体,(可能重新编码)缩放它,设置当前点,然后使用显示操作符发出文本。您必须跟踪当前点,如果它移动到页面边界之外,则采取行动(重新定位,或发出显示页面并开始新页面)

你应该看看 PostScript 操作符; findfont、scalefont、selectfont、setfont、moveto(及其变体 rmoveto) currentpoint、stringwidth 和整个显示运算符系列(show、widthshow、ashow、awidthshow、cshow、kshow、xshow、yshow、xyshow、glyphshow)。

您当前的程序不会在许多 PostScript 解释器上“工作”(在产生任何输出的意义上),因为您从不发出显示页面。你也应该这样做。

关于pdf - 后记 : Reading a file, 写入 pdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16899949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com