<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog @ SIB Visions &#187; Fun</title>
	<atom:link href="http://blog.sibvisions.com/tag/fun/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.sibvisions.com</link>
	<description>Blog @ SIB Visions</description>
	<lastBuildDate>Fri, 10 Apr 2026 10:13:07 +0000</lastBuildDate>
		<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>PDF change metadata</title>
		<link>https://blog.sibvisions.com/2012/02/10/pdf-change-metadata/</link>
		<comments>https://blog.sibvisions.com/2012/02/10/pdf-change-metadata/#comments</comments>
		<pubDate>Fri, 10 Feb 2012 15:55:12 +0000</pubDate>
		<dc:creator>rjahn</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Fun]]></category>

		<guid isPermaLink="false">http://blog.sibvisions.com/?p=1333</guid>
		<description><![CDATA[Sometimes it is useful to change PDF Metadata.
The following code snipped is based on Add an image to an existing PDF

HashMap&#60;String, String&#62; hmpInfo = new HashMap&#60;String, String&#62;&#40;&#41;;
hmpInfo.put&#40;&#34;Title&#34;, &#34;CV&#34;&#41;;
hmpInfo.put&#40;&#34;Author&#34;, &#34;rjahn&#34;&#41;;
PdfDictionary dictTrailer = pdr.getTrailer&#40;&#41;;
if &#40;dictTrailer != null &#38;&#38; dictTrailer.isDictionary&#40;&#41;&#41; 
&#123;
&#160; &#160; &#160; &#160; PdfObject objInfo = PdfReader.getPdfObject&#40;dictTrailer.get&#40;PdfName.INFO&#41;&#41;;
&#160; &#160; &#160; &#160; 
&#160; &#160; &#160; &#160; if &#40;objInfo != [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes it is useful to change PDF Metadata.<br />
The following code snipped is based on <a href="http://blog.sibvisions.com/2012/02/10/add-an-image-to-an-existing-pdf/">Add an image to an existing PDF</a></p>
<div class="codesnip-container" >
<div class="java codesnip" style="font-family:monospace;">HashMap<span class="sy0">&lt;</span>String, String<span class="sy0">&gt;</span> hmpInfo <span class="sy0">=</span> <span class="kw1">new</span> HashMap<span class="sy0">&lt;</span>String, String<span class="sy0">&gt;</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
hmpInfo.<span class="me1">put</span><span class="br0">&#40;</span><span class="st0">&quot;Title&quot;</span>, <span class="st0">&quot;CV&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
hmpInfo.<span class="me1">put</span><span class="br0">&#40;</span><span class="st0">&quot;Author&quot;</span>, <span class="st0">&quot;rjahn&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></p>
<p>PdfDictionary dictTrailer <span class="sy0">=</span> pdr.<span class="me1">getTrailer</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></p>
<p><span class="kw1">if</span> <span class="br0">&#40;</span>dictTrailer <span class="sy0">!=</span> <span class="kw2">null</span> <span class="sy0">&amp;&amp;</span> dictTrailer.<span class="me1">isDictionary</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; PdfObject objInfo <span class="sy0">=</span> PdfReader.<span class="me1">getPdfObject</span><span class="br0">&#40;</span>dictTrailer.<span class="me1">get</span><span class="br0">&#40;</span>PdfName.<span class="me1">INFO</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>objInfo <span class="sy0">!=</span> <span class="kw2">null</span> <span class="sy0">&amp;&amp;</span> objInfo.<span class="me1">isDictionary</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PdfDictionary infoDic <span class="sy0">=</span> <span class="br0">&#40;</span>PdfDictionary<span class="br0">&#41;</span>objInfo<span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw3">Map</span>.<span class="me1">Entry</span><span class="sy0">&lt;</span>String, String<span class="sy0">&gt;</span>entry <span class="sy0">:</span> hmpInfo.<span class="me1">entrySet</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>entry.<span class="me1">getValue</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">length</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">==</span> 0<span class="br0">&#41;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; infoDic.<span class="me1">remove</span><span class="br0">&#40;</span><span class="kw1">new</span> PdfName<span class="br0">&#40;</span>entry.<span class="me1">getKey</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; infoDic.<span class="me1">put</span><span class="br0">&#40;</span><span class="kw1">new</span> PdfName<span class="br0">&#40;</span>entry.<span class="me1">getKey</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>, <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">new</span> PdfString<span class="br0">&#40;</span>entry.<span class="me1">getValue</span><span class="br0">&#40;</span><span class="br0">&#41;</span>, PdfObject.<span class="me1">TEXT_UNICODE</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
<span class="br0">&#125;</span></p>
<p>pdr.<span class="me1">getCatalog</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">remove</span><span class="br0">&#40;</span>PdfName.<span class="me1">METADATA</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</div>
]]></content:encoded>
			<wfw:commentRss>https://blog.sibvisions.com/2012/02/10/pdf-change-metadata/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Add an image to an existing PDF</title>
		<link>https://blog.sibvisions.com/2012/02/10/add-an-image-to-an-existing-pdf/</link>
		<comments>https://blog.sibvisions.com/2012/02/10/add-an-image-to-an-existing-pdf/#comments</comments>
		<pubDate>Fri, 10 Feb 2012 13:47:21 +0000</pubDate>
		<dc:creator>rjahn</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Fun]]></category>

		<guid isPermaLink="false">http://blog.sibvisions.com/?p=1322</guid>
		<description><![CDATA[Do you know the problem: You got a PDF document and want to add an image to a single page, but you have no printer/scanner.
Normally jPdf Tweak solves simple PDF problems, but it is not possible to add a simple image to a PDF file  . It supports watermarks, but it is not supported [...]]]></description>
			<content:encoded><![CDATA[<p>Do you know the problem: <strong>You got a PDF document and want to add an image to a single page</strong>, but you have no printer/scanner.</p>
<p>Normally <a href="http://jpdftweak.sourceforge.net/">jPdf Tweak</a> solves simple PDF problems, but it is not possible to add a simple image to a PDF file <img src='https://blog.sibvisions.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> . It supports watermarks, but it is not supported to set the position or page.</p>
<p>I wrote some lines of code to solve my problem:</p>
<div class="codesnip-container" >
<div class="java codesnip" style="font-family:monospace;">PdfReader pdr <span class="sy0">=</span> <span class="kw1">new</span> PdfReader<span class="br0">&#40;</span><span class="st0">&quot;D:<span class="es0">\\</span>test.pdf&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></p>
<p>PdfStamper pds <span class="sy0">=</span> <span class="kw1">new</span> PdfStamper<span class="br0">&#40;</span>pdr, <span class="kw1">new</span> <span class="kw3">FileOutputStream</span><span class="br0">&#40;</span><span class="st0">&quot;D:<span class="es0">\\</span>test_image.pdf&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span></p>
<p>PdfContentByte pcbPosition<span class="sy0">;</span></p>
<p>PdfGState pgsTransparency<span class="sy0">;</span></p>
<p><span class="kw3">Image</span> img<span class="sy0">;</span></p>
<p>
<span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw4">int</span> i <span class="sy0">=</span> 1, anz <span class="sy0">=</span> pdr.<span class="me1">getNumberOfPages</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span> i <span class="sy0">&lt;=</span> anz<span class="sy0">;</span> i<span class="sy0">++</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//only first page</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>i <span class="sy0">==</span> 1<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pcbPosition <span class="sy0">=</span> pds.<span class="me1">getOverContent</span><span class="br0">&#40;</span>i<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pgsTransparency <span class="sy0">=</span> <span class="kw1">new</span> PdfGState<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pgsTransparency.<span class="me1">setFillOpacity</span><span class="br0">&#40;</span>100 <span class="sy0">/</span> 100f<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; img <span class="sy0">=</span> <span class="kw3">Image</span>.<span class="me1">getInstance</span><span class="br0">&#40;</span>FileUtil.<span class="me1">getContent</span><span class="br0">&#40;</span><span class="st0">&quot;D:<span class="es0">\\</span>image.png&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//x: 0 = left</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//y: 0 = bottom</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; img.<span class="me1">setAbsolutePosition</span><span class="br0">&#40;</span>500f, 250f<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//70 is 100%</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; img.<span class="me1">scalePercent</span><span class="br0">&#40;</span>10<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; img.<span class="me1">setRotationDegrees</span><span class="br0">&#40;</span>0<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pcbPosition.<span class="me1">saveState</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pcbPosition.<span class="me1">setGState</span><span class="br0">&#40;</span>pgsTransparency<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pcbPosition.<span class="me1">addImage</span><span class="br0">&#40;</span>img<span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pcbPosition.<span class="me1">restoreState</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
<span class="br0">&#125;</span></p>
<p>pds.<span class="me1">close</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</div>
<p>Use the current <a href="http://itextpdf.com/">iText</a> version or <a href="https://github.com/ymasory/iText-4.2.0">iText 4.2.0</a> (friendly license).</p>
]]></content:encoded>
			<wfw:commentRss>https://blog.sibvisions.com/2012/02/10/add-an-image-to-an-existing-pdf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
