1、Python + PDFlib
<code>#encoding=utf-8</code>
<code>#author: walker</code>
<code>#date: 2014-03-27</code>
<code>from</code> <code>PDFlib.PDFlib </code><code>import</code> <code>PDFlib</code>
<code>from</code> <code>PDFlib.PDFlib </code><code>import</code> <code>PDFlibException</code>
<code>#给单个文件添加水印,在右上角和左下角各添加一个水印</code>
<code>#所有参数均为全路径文件名</code>
<code>def</code> <code>add_watermark(pdf_file_in, pdf_file_out, image_file):</code>
<code> </code><code>p </code><code>=</code> <code>PDFlib()</code>
<code> </code><code>p.set_option(</code><code>"license=xxxxx"</code><code>) </code><code>#your key</code>
<code> </code><code>p.set_option(</code><code>"errorpolicy=return"</code><code>);</code>
<code> </code>
<code> </code><code>if</code> <code>(p.begin_document(pdf_file_out, "") </code><code>=</code><code>=</code> <code>-</code><code>1</code><code>):</code>
<code> </code><code>raise</code> <code>PDFlibException(</code><code>"Error: "</code> <code>+</code> <code>p.get_errmsg())</code>
<code> </code><code>p.set_info(</code><code>"Author"</code><code>, </code><code>"walker"</code><code>);</code>
<code> </code><code>p.set_info(</code><code>"Title"</code><code>, "");</code>
<code> </code><code>p.set_info(</code><code>"Creator"</code><code>, </code><code>"walker"</code><code>);</code>
<code> </code><code>p.set_info(</code><code>"Subject"</code><code>, "");</code>
<code> </code><code>p.set_info(</code><code>"Keywords"</code><code>, "");</code>
<code> </code><code>#p.set_info("Producer", "walker");</code>
<code> </code><code>#输入文件</code>
<code> </code><code>indoc </code><code>=</code> <code>p.open_pdi_document(pdf_file_in, "");</code>
<code> </code><code>if</code> <code>(indoc </code><code>=</code><code>=</code> <code>-</code><code>1</code><code>):</code>
<code> </code><code>endpage </code><code>=</code> <code>p.pcos_get_number(indoc, </code><code>"length:pages"</code><code>);</code>
<code> </code><code>endpage </code><code>=</code> <code>int</code><code>(endpage)</code>
<code> </code><code>image </code><code>=</code> <code>p.load_image(</code><code>"auto"</code><code>, image_file, "")</code>
<code> </code><code>if</code> <code>image </code><code>=</code><code>=</code> <code>-</code><code>1</code><code>:</code>
<code> </code><code>for</code> <code>pageno </code><code>in</code> <code>range</code><code>(</code><code>1</code><code>, endpage</code><code>+</code><code>1</code><code>):</code>
<code> </code><code>page </code><code>=</code> <code>p.open_pdi_page(indoc, pageno, "");</code>
<code> </code><code>if</code> <code>(page </code><code>=</code><code>=</code> <code>-</code><code>1</code><code>):</code>
<code> </code><code>raise</code> <code>PDFlibException(</code><code>"Error: "</code> <code>+</code> <code>p.get_errmsg())</code>
<code> </code><code>p.begin_page_ext(</code><code>0</code><code>, </code><code>0</code><code>, ""); </code><code>#添加一页</code>
<code> </code>
<code> </code><code>p.fit_pdi_page(page, </code><code>0</code><code>, </code><code>0</code><code>, </code><code>"adjustpage"</code><code>)</code>
<code> </code><code>page_width </code><code>=</code> <code>p.get_value(</code><code>"pagewidth"</code><code>, </code><code>0</code><code>) </code><code>#单位为像素72dpi下像素值</code>
<code> </code><code>page_height </code><code>=</code> <code>p.get_value(</code><code>"pageheight"</code><code>, </code><code>0</code><code>) </code><code>#单位为像素72dpi下像素值</code>
<code> </code><code>imagewidth </code><code>=</code> <code>p.info_image(image, </code><code>"imagewidth"</code><code>, "");</code>
<code> </code><code>imageheight </code><code>=</code> <code>p.info_image(image, </code><code>"imageheight"</code><code>, "");</code>
<code> </code><code>margin </code><code>=</code> <code>1000</code> <code>#用于设置水印边距</code>
<code> </code><code>optlist_top </code><code>=</code> <code>"boxsize={"</code> <code>+</code> <code>str</code><code>(page_width) </code><code>+</code> <code>" "</code> <code>+</code> <code>str</code><code>(page_height) </code><code>+</code> <code>"} "</code>
<code> </code><code>optlist_top </code><code>+</code><code>=</code> <code>"position={"</code> <code>+</code> <code>str</code><code>(margin</code><code>/</code><code>page_width) </code><code>+</code> <code>" "</code> <code>+</code> <code>str</code><code>(margin</code><code>/</code> <code>page_height) </code><code>+</code> <code>"} "</code>
<code> </code><code>optlist_top </code><code>+</code><code>=</code> <code>" fitmethod=clip dpi=96"</code>
<code> </code><code>optlist_bottom </code><code>=</code> <code>"boxsize={"</code> <code>+</code> <code>str</code><code>(page_width) </code><code>+</code> <code>" "</code> <code>+</code> <code>str</code><code>(page_height) </code><code>+</code> <code>"} "</code>
<code> </code><code>optlist_bottom </code><code>+</code><code>=</code> <code>"position={"</code> <code>+</code> <code>str</code><code>(</code><code>100</code> <code>-</code> <code>margin</code><code>/</code><code>page_width) </code><code>+</code> <code>" "</code> <code>+</code> <code>str</code><code>(</code><code>100</code> <code>-</code> <code>margin</code><code>/</code> <code>page_height) </code><code>+</code> <code>"} "</code>
<code> </code><code>optlist_bottom </code><code>+</code><code>=</code> <code>" fitmethod=clip dpi=96"</code>
<code> </code><code>p.fit_image(image, </code><code>0</code><code>, </code><code>0</code><code>, optlist_bottom)</code>
<code> </code><code>p.fit_image(image, </code><code>0</code><code>, </code><code>0</code><code>, optlist_top)</code>
<code> </code><code>p.close_pdi_page(page);</code>
<code> </code><code>p.end_page_ext("");</code>
<code> </code><code>p.close_image(image)</code>
<code> </code><code>p.end_document("")</code>
2、C# + iTextSharp
<code>using</code> <code>System;</code>
<code>using</code> <code>System.IO;</code>
<code>using</code> <code>iTextSharp.text;</code>
<code>using</code> <code>iTextSharp.text.pdf;</code>
<code>//给单个文件添加水印,在右上角和左下角各添加一个水印</code>
<code>//所有参数均为全路径文件名</code>
<code>bool</code> <code>add_watermark(</code><code>string</code> <code>srcPdf, </code><code>string</code> <code>dstPdf, </code><code>string</code> <code>imagepath)</code>
<code>{ </code>
<code> </code><code>iTextSharp.text.Image img = Image.GetInstance(imagepath);</code>
<code> </code><code>PdfReader reader = </code><code>new</code> <code>PdfReader(srcPdf);</code>
<code> </code><code>PdfStamper stamp = </code><code>new</code> <code>PdfStamper(reader, </code><code>new</code> <code>FileStream(dstPdf, FileMode.Create));</code>
<code> </code><code>PdfContentByte page;</code>
<code> </code><code>float</code> <code>width = reader.GetPageSize(1).Width;</code>
<code> </code><code>float</code> <code>height = reader.GetPageSize(1).Height;</code>
<code> </code><code>int</code> <code>num = reader.NumberOfPages;</code>
<code> </code><code>for</code> <code>(</code><code>int</code> <code>i = 1; i <= num; ++i)</code>
<code> </code><code>{</code>
<code> </code><code>page = stamp.GetOverContent(i);</code>
<code> </code><code>img.SetAbsolutePosition(margin, margin);</code>
<code> </code><code>page.AddImage(img);</code>
<code> </code><code>img.SetAbsolutePosition(width - img.Width - margin, height - img.Height - margin);</code>
<code> </code><code>}</code>
<code> </code><code>stamp.Close();</code>
<code> </code><code>reader.Close();</code>
<code> </code><code>return</code> <code>true</code><code>;</code>
<code>}</code>
相关阅读:
本文转自walker snapshot博客51CTO博客,原文链接http://blog.51cto.com/walkerqt/1385138如需转载请自行联系原作者
RQSLT