File 在pdf文件的第一页添加文本
我正在尝试向pdf文件中添加文字注释(而不是注释)。 我创建了一个date.ps文件,其中包含文本注释: %! /Arial findfont 30磅 setfont 新路径 10720移动到 (2013年1月5日付款)展会 展示页 我启动shell命令,其中$I=要标记的pdf文件的名称: gs-q-dNOPAUSE-dSAFER-dBATCH-sOutputFile=$RFP/$DOMAINE/$NEWNAME-sDEVICE=pdfwrite-sPAPERSIZE=a4 date.ps$i 这是可行的,但它创建了一个新的空白第一页,仅文本为“2013年1月5日付款” 我没有发现在原始pdf的第1页上覆盖文本的技巧File 在pdf文件的第一页添加文本,file,pdf,text,add,ghostscript,File,Pdf,Text,Add,Ghostscript,我正在尝试向pdf文件中添加文字注释(而不是注释)。 我创建了一个date.ps文件,其中包含文本注释: %! /Arial findfont 30磅 setfont 新路径 10720移动到 (2013年1月5日付款)展会 展示页 我启动shell命令,其中$I=要标记的pdf文件的名称: gs-q-dNOPAUSE-dSAFER-dBATCH-sOutputFile=$RFP/$DOMAINE/$NEWNAME-sDEVICE=pdfwrite-sPAPERSIZE=a4 date.ps$
你能帮我一下吗?你可以使用免费的: 比如说,
cpdf -add-text "PAID on 5.1.2013" -topleft 100 -font "Helvetica" -font-size 30 in.pdf -o out.pdf
因为您的PostScript执行了一个showpage,所以它会在标记第一个页面后弹出第一个页面,因此剩余的内容会出现在第二个页面和后续页面上。如果你没有;如果不执行showpage,则您所做的标记将出现在第一页上,并且第一个PDF页面将在其“顶部”绘制 更复杂的代码可以使用BeginPage和EndPage在页面内容上方和下方绘制,以及在指定页面上绘制 [稍后补充] 试试这个:
%!
<<
/EndPage
{
0 eq
{
0 eq
{
/Arialabold findfont 22 scalefont setfont newpath 250 820 moveto 1 0 0 setrgbcolor (PAYE PAR CCP LE $DATEPMT) show
} if
true
}
{
pop false
} ifelse
} >> setpagedevice
%!
>设置页面设备
适合我。由于
cpdf
有一个奇怪的商业使用许可证,我试图找到一个替代方案。这里有一个(您需要安装enscript
,ps2pdf
和(pdftk
或qpdf
)。其思想就是使用enscript
从文本创建.ps
,然后使用ps2pdf
将.ps
转换为.pdf
,然后使用pdftk
或qpdf
将其堆叠在原始pdf之上
pdtfk版本:
echo "I will be stamped on top of the page" | enscript -B -f Courier-Bold16 -o- | ps2pdf - | pdftk input.pdf stamp - output output.pdf
qpdf版本:
echo "I will be stamped on top of the page" | enscript -B -f Courier-Bold16 -o- | ps2pdf - | pdftk input.pdf stamp - output output.pdf
如果要在所有页面上重复文本:
tmpfile=$(mktemp) && echo "I will be stamped on top of the page" | enscript -B -f Courier-Bold16 -o- | ps2pdf - "$tmpfile" && qpdf out_merge.pdf --overlay "$tmpfile" --repeat=1-z -- out_oneline.pdf
如果您只想将其放在第一页:
tmpfile=$(mktemp) && echo "I will be stamped on top of the page" | enscript -B -f Courier-Bold16 -o- | ps2pdf - "$tmpfile" && qpdf out_merge.pdf --overlay "$tmpfile" -- out_oneline.pdf
有关更多选项,请参阅文档
注意:
mktemp
仅用于创建一个临时文件以提供一行解决方案,因为qpdf
不接受来自stdin
的输入,我使用的是synology NAS,我没有这样的命令。我可能会安装一个名为xpdf 3.02-1的工具包,你认为它能帮上忙吗?我在windows下试用过,这非常有用,效果很好。问题是我使用的NAS没有编译版本,而且我的编译知识太差了!nix包管理器有它的编译版本,你可以用sh安装nix。不工作,我用ps文件得到同样的结果:%/ArayFiffFoad 30 StaveFoNT StutsNePATH 10 720 MOVET(Paye PAR UBS LE 16.092013)展示,因为它在PDF页面下,它做了一个隐式的ErasPage并填充了白色……也许您可以帮助我更多,您能通过电子邮件与我联系吗?当然,如果您向我提出解决方案,我会为您花费的时间付费。“setpagedevice”您需要在“…”部分填写完整的标记操作。每个页面后都会调用EndPage,此代码测试原因代码以查看其“showpage”(即0),如果是,则测试页面计数以查看其1是否运行代码。非常感谢,这几乎就是我要查找的内容。
但是当我使用2页的pdf时,我得到1页空,第1页对应于pdf的第1页,第三个是空的,第四个用我的文字回复第二个。以下是我的ps文件的完整内容:>setpagedevice。使用gs的shell脚本是:cd/volume1/DATA/A_PAYER gs-q-dNOPAUSE-dSAFER-dBATCH-sOutputFile=./OUT.pdf-sDEVICE=pdfwrite-sPAPERSIZE=a4 datex.ps./IN.pdf