<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-27468065</id><updated>2011-10-18T09:11:36.773+02:00</updated><category term='tutorial create xps windows xp'/><category term='article press release v1.5'/><category term='nixps beta sneak preview xps editor'/><category term='nixps'/><category term='top9'/><category term='xps mxdw fonts'/><category term='ui'/><category term='library vacation'/><category term='xps tutorial'/><category term='xps graphexpo chicago graph expo'/><category term='update'/><category term='graphexpo chicago xps'/><title type='text'>NiXPS</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default?start-index=101&amp;max-results=100'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>195</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-27468065.post-7123143981465151247</id><published>2011-01-14T10:39:00.001+01:00</published><updated>2011-01-14T10:39:58.043+01:00</updated><title type='text'>Create XpsDocument From NOPackage Using MemoryStream</title><content type='html'>A customer asked for a way to create an XpsDocument in .NET using the NiXPS Library. This is the code you need:&lt;pre&gt;&lt;br /&gt;public static void test_XPSDocumentFromMemoryBuffer()&lt;br /&gt;{&lt;br /&gt;    string pIn = "../../examples/testfiles/catalog.xps";&lt;br /&gt;    NOPackage lPackage = NOPackage.readPackageFromFile(pIn);&lt;br /&gt;    UInt32 lBufferSize = 1000 * 1000;   // 1000 kb = 1M&lt;br /&gt;    byte[] lBuffer = new byte[lBufferSize];&lt;br /&gt;    uint lFileSize = 0;&lt;br /&gt;    lPackage.writePackageToBuffer(lBuffer, lBufferSize, ref lFileSize); &lt;br /&gt;    MemoryStream lStream = new MemoryStream(lBuffer, 0, (int)lFileSize);&lt;br /&gt;&lt;br /&gt;    string inMemoryPackageName = "memorystream://myXps.xps";&lt;br /&gt;    Uri packageUri = new Uri(inMemoryPackageName);&lt;br /&gt;&lt;br /&gt;    Package lXPSPackage = Package.Open(lStream);&lt;br /&gt;&lt;br /&gt;    //Add package to PackageStore&lt;br /&gt;    PackageStore.AddPackage(packageUri,lXPSPackage);&lt;br /&gt;&lt;br /&gt;    XpsDocument xpsDoc = new XpsDocument(lXPSPackage,&lt;br /&gt;				CompressionOption.Maximum,&lt;br /&gt;				inMemoryPackageName);&lt;br /&gt;    FixedDocumentSequence fixedDocumentSequence = &lt;br /&gt;				xpsDoc.GetFixedDocumentSequence();&lt;br /&gt;&lt;br /&gt;    // Do operations on xpsDoc here&lt;br /&gt;    // Note: Please note that you must keep the Package object&lt;br /&gt;    // in PackageStore until you are completely done with it since&lt;br /&gt;    // certain operations on XpsDocument can trigger delayed&lt;br /&gt;    // resource loading from the package.&lt;br /&gt;&lt;br /&gt;    PackageStore.RemovePackage(packageUri);&lt;br /&gt;&lt;br /&gt;    xpsDoc.Close();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;When you &lt;a href="http://www.nixps.com/library_apply.php"&gt;download our SDK&lt;/a&gt; you can paste this test in. However you will need to change the threading model of the Main method to STAThread. You can do this by adding [STAThread] just before the Main method like so:&lt;pre&gt;&lt;br /&gt;[STAThread]&lt;br /&gt;public static void Main(string[] args)&lt;br /&gt;{&lt;br /&gt;	// ... rest of code&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;Hope this helps.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-7123143981465151247?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/7123143981465151247/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=7123143981465151247' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/7123143981465151247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/7123143981465151247'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2011/01/create-xpsdocument-from-nopackage-using.html' title='Create XpsDocument From NOPackage Using MemoryStream'/><author><name>Kristof Van Landschoot</name><uri>http://www.blogger.com/profile/11797093785528092995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-2365780501171428127</id><published>2010-11-05T16:45:00.002+01:00</published><updated>2010-11-05T16:49:53.509+01:00</updated><title type='text'>WPF visual to PDF - control page size</title><content type='html'>With our NiPDF library it is very easy to build PDF based on WPF visuals. It is literally a few lines of code which you can find documented on &lt;a href=" http://nixps.com/nipdf/example0001.html"&gt;our website&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This week I got the question from a customer who wanted to influence the page size.&lt;br /&gt;&lt;br /&gt;This is fairly easy to do by means of the PrintTicket class. &lt;br /&gt;In line with the example on our website, the second step becomes:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;// STEP 2: Convert this WPF Visual to an XPS Document&lt;br /&gt;MemoryStream lMemoryStream = new MemoryStream();&lt;br /&gt;{ &lt;br /&gt;  Package package = Package.Open(lMemoryStream, FileMode.Create); &lt;br /&gt; XpsDocument doc = new XpsDocument(package);&lt;br /&gt; XpsDocumentWriter writer = XpsDocument.CreateXpsDocumentWriter(doc); &lt;br /&gt;  //Create PrintTicket for document and set its page size to the proper custom page size&lt;br /&gt; PrintTicket printTicket = new PrintTicket(); &lt;br /&gt;  //Set the page size to a custom 3.5" x 2.5" page&lt;br /&gt; printTicket.PageMediaSize = new PageMediaSize(3.5 * 96.0, 2.5 * 96.0);&lt;br /&gt; writer.Write(visual,printTicket); &lt;br /&gt; doc.Close();&lt;br /&gt; package.Close();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Easy to do, provided you know how to do it - as always!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-2365780501171428127?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/2365780501171428127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=2365780501171428127' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/2365780501171428127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/2365780501171428127'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2010/11/wpf-visual-to-pdf-control-page-size.html' title='WPF visual to PDF - control page size'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-6588878293793793269</id><published>2010-10-27T11:45:00.004+02:00</published><updated>2010-10-27T11:52:29.280+02:00</updated><title type='text'>Experimental NiPDF.JS PDF Browser update</title><content type='html'>We have updated our client-side Javascript PDF browser. When it encounters a flate/zip stream, it will deflate it. And binary stuff is now presented in a much more useful way:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_c1NiDXy7n5c/TMf1sq-dQBI/AAAAAAAAATI/xNVOgQwcpwM/s1600/screenshot.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 302px;" src="http://1.bp.blogspot.com/_c1NiDXy7n5c/TMf1sq-dQBI/AAAAAAAAATI/xNVOgQwcpwM/s400/screenshot.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5532660815047245842" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Give it try at &lt;a href="http://nixps.com/nipdf/pdfbrowse.html"&gt;http://nixps.com/nipdf/pdfbrowse.html&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-6588878293793793269?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/6588878293793793269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=6588878293793793269' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/6588878293793793269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/6588878293793793269'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2010/10/experimental-nipdfjs-pdf-browser-update.html' title='Experimental NiPDF.JS PDF Browser update'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_c1NiDXy7n5c/TMf1sq-dQBI/AAAAAAAAATI/xNVOgQwcpwM/s72-c/screenshot.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-737387980818976206</id><published>2010-10-14T08:38:00.003+02:00</published><updated>2010-10-14T08:41:23.934+02:00</updated><title type='text'>NiPDF.NET: update to text searching for PDF</title><content type='html'>A customer flagged that the PDFs generated with NiPDF weren't text searchable. &lt;br /&gt;Previous versions of the NiPDF library didn't output the ToUnicode character mapping in the PDF, this has been fixed.&lt;br /&gt;&lt;br /&gt;If you go to &lt;a href="http://nipdf.com"&gt;http://nipdf.com&lt;/a&gt; and download the NiPDF SDK you will generate fully searchable PDFs!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-737387980818976206?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/737387980818976206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=737387980818976206' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/737387980818976206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/737387980818976206'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2010/10/nipdfnet-update-to-text-searching-for.html' title='NiPDF.NET: update to text searching for PDF'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-897725179216324886</id><published>2010-10-12T11:37:00.004+02:00</published><updated>2010-10-12T12:11:24.106+02:00</updated><title type='text'>PDF library in Client-Side Javascript - Adventures in Javascript</title><content type='html'>The computer industry is in constant evolution.&lt;br /&gt;One of the recent exciting developments is the fact that the web browser is becoming a lot more powerful than a few years back.&lt;br /&gt;Chrome entered the browser landscape, Safari is going strong, Firefox as alternative browser is a big success, and Microsoft is catching up now with a massive technical leap in their upcoming Internet Explorer 9.&lt;br /&gt;&lt;br /&gt;These recent, powerful changes are not about web &lt;i&gt;pages&lt;/i&gt;.&lt;br /&gt;This is all about web &lt;i&gt;applications&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;With the recent HTML5 developments, the browser is becoming a viable platform to host applications. Applications that do not need a server backend.&lt;br /&gt;&lt;br /&gt;Think about it: in the very near future everyone will have access to a HTML5 browser.&lt;br /&gt;This HTML5 browser will be able to run HTML5 applications, independent of the underlying platform.&lt;br /&gt;This means no configuration management issues, and instant installation, as these apps can be server directly from a bog standard web server.&lt;br /&gt;&lt;br /&gt;There are more advantages: scaling. A regular client-server application needs more power at the server, when the client base grows.&lt;br /&gt;Pure in browser applications do not need a server for processing, pure elastic scaling, no additional investments server side.&lt;br /&gt;And the extra beauty of it: a better use of the available processing power at the client, as in a lot of cases these system are very capable, but running idle.&lt;br /&gt;&lt;br /&gt;So at NiXPS are a big believer in this, and we also think that software developers will start looking for tools and components for this new world. And for this we have started to support our software 100% natively in Javascript.&lt;br /&gt;&lt;br /&gt;We are working on a 100% native Javascript NiPDF library, and as a demo we have build a tool that allows you to look structured at the innards of a PDF file.&lt;br /&gt;You need a browser that supports the HTML5 FileReader object, so currently this means FireFox 3.6+ of Chrome 7.0 beta. Other are catching up soon.&lt;br /&gt;&lt;br /&gt;Take a look at: &lt;a href="http://nixps.com/nipdf/tools/pdfbrowse.html"&gt;http://nixps.com/nipdf/tools/pdfbrowse.html&lt;/a&gt;&lt;br /&gt;It is experimental, but all your feedback is very welcome at info@nixps.com!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_c1NiDXy7n5c/TLQ0BmvxFbI/AAAAAAAAATA/uOmpA4HvbbI/s1600/pdfbrowse.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 306px; height: 400px;" src="http://2.bp.blogspot.com/_c1NiDXy7n5c/TLQ0BmvxFbI/AAAAAAAAATA/uOmpA4HvbbI/s400/pdfbrowse.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5527099844875851186" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-897725179216324886?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/897725179216324886/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=897725179216324886' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/897725179216324886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/897725179216324886'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2010/10/pdf-library-in-client-side-javascript.html' title='PDF library in Client-Side Javascript - Adventures in Javascript'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_c1NiDXy7n5c/TLQ0BmvxFbI/AAAAAAAAATA/uOmpA4HvbbI/s72-c/pdfbrowse.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-8466867747417932362</id><published>2010-09-21T20:38:00.003+02:00</published><updated>2010-09-22T09:40:48.314+02:00</updated><title type='text'>NiXPS launches NiPDF v1.0</title><content type='html'>After many months of work I'm pleased to announce a new product we are launching today: NiPDF v1.0.&lt;br /&gt;&lt;br /&gt;This product is a direct result of our experiences with customers all over the world working in .NET and wanting to generate PDF.&lt;br /&gt;We have learned that generating PDF in .NET is cumbersome and downright painful - and our aim is to put our technology to work to alleviate the pain and simplify this.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;.NET front and center&lt;/b&gt;&lt;br /&gt;A lot of PDF solutions out there are not really .NET.&lt;br /&gt;They are a thin veil of .NET around a big body of native code.&lt;br /&gt;Our NiXPS SDK has exactly the same architecture. &lt;br /&gt;This works, and is often very efficient, but it kind of defeats the purpose of working with managed code.&lt;br /&gt;Often there is a requirement to only work with managed code assemblies.&lt;br /&gt;With our NiPDF v1.0 we introduce a &lt;i&gt;100% managed code library&lt;/i&gt;.&lt;br /&gt;&lt;i&gt;No native code dependency&lt;/i&gt;.&lt;br /&gt;NiPDF is a lean and mean, 100% native, PDF library that allows you to efficiently generate PDF in .NET.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;No special API to learn, no vendor lock-in&lt;/b&gt;&lt;br /&gt;Another drag in today's PDF SDK's is the fact that in order to generate PDF, one needs to code against an API that the third party has defined.&lt;br /&gt;This introduces a learning curve, and introduces vendor lock-in, as your code will depend on the third-party's API.&lt;br /&gt;Thanks to our XPS heritage we are able to offer an innovative solution for this. &lt;br /&gt;Via the .NET built-in ability to convert WPF visuals (and FixedDocuments) to XPS, you can code agains the default WPF API, and in &lt;a href="http://nixps.com/nipdf/example0001.html"&gt;1-2-3&lt;/a&gt; generate a PDF from this with a minumum of calls into our NiPDF library!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;High quality, keeping text and vectors intact&lt;/b&gt;&lt;br /&gt;The NiPDF PDF output keeps text and vectors intact, resulting a small, high quality, fully searchable PDFs.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;NiPDF SDK and NiXPS Converter SDK, brothers in arms&lt;/b&gt;&lt;br /&gt;NiPDF is premier choice for quick and easy PDF generation for .NET.&lt;br /&gt;We continue to develop our NiXPS Converter SDK, which thanks to its native architecture, offers a better alternative for performance critical applications, has a more versatile feature set (f.i. PDF/A generation) and has supports C/C++ and OSX.&lt;br /&gt;&lt;br /&gt;Take a look at the NiPDF product site at &lt;a href="http://nipdf.com"&gt;http://nipdf.com&lt;/a&gt; and download the trial.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-8466867747417932362?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/8466867747417932362/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=8466867747417932362' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/8466867747417932362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/8466867747417932362'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2010/09/nixps-launches-nipdf-v10.html' title='NiXPS launches NiPDF v1.0'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-2889656794725524210</id><published>2010-07-08T12:23:00.003+02:00</published><updated>2010-07-08T12:30:22.483+02:00</updated><title type='text'>Example: create XPS and add hyperlink using NiXPS SDK</title><content type='html'>A customer asked me for a code sample to illustrate the creation of an XPS document, and the ability to make content link to a hyperlink.&lt;br /&gt;&lt;br /&gt;It might be of interst to others, so I am posting it on the blog.&lt;br /&gt;This sample works with NiXPS SDK 2.6.6, and uses .NET.&lt;br /&gt;&lt;br /&gt;First: create an XPS package with a document:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;NOPackage lPackage=NOPackage.createPackage(1,"out.xps");&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Now: create a page and add content using the document model.&lt;br /&gt;We do this by getting the root FixedPage, create a Canvas inside, and store a Glyphs element which can hold a string of text.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;{&lt;br /&gt; NOPage lPage=lPackage.getDocument(0).createPage();&lt;br /&gt; NOXFixedPage lContent=lPage.getFixedPage();&lt;br /&gt; lContent.intialize(8.3*96,11.7*96); // A4: 210x297mm or 8.3x11.7inch&lt;br /&gt; NOXCanvas lCanvas=lContent.createCanvas(0);&lt;br /&gt; lCanvas.intialize();&lt;br /&gt; NOXGlyphs lGlyphs=lCanvas.createGlyphs(0);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;We also need to create and supply a NOFont to be used. We load this up from disk, where we have stored Arial.ttf, an opentype font we would like to use.&lt;br /&gt;We then fill the Glyphs.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; NOFont lFont=lPage.addFont("../testfiles/Arial.ttf");&lt;br /&gt; NOString lURI = new NOString("/" + lFont.getPartName());&lt;br /&gt; lGlyphs.intialize(20, lURI.getHandler(), 300, 50);&lt;br /&gt; lGlyphs.setFill(new NOString("#FF000000").getHandler());&lt;br /&gt; lGlyphs.setUnicodeString(new NOString("Take me to http://nixps.com").getHandler());&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Next: the link. We name the Glyphs, and add a NavigateURI attribute which gives us the intented behaviour to link to a website.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; lGlyphs.setName(new NOString("page_1").getHandler());&lt;br /&gt; lGlyphs.setFixedPageNavigateUri(new NOString("http://www.nixps.com").getHandler());&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Now we're done. So all left is to write out the file and clean-up.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;// write out and close&lt;br /&gt;lPackage.writePackageToFile("out.xps");&lt;br /&gt;NOPackage.destroyPackage(ref lPackage);&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-2889656794725524210?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/2889656794725524210/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=2889656794725524210' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/2889656794725524210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/2889656794725524210'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2010/07/example-create-xps-and-add-hyperlink.html' title='Example: create XPS and add hyperlink using NiXPS SDK'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-7319644476806132973</id><published>2010-07-02T09:48:00.003+02:00</published><updated>2010-07-02T09:52:04.076+02:00</updated><title type='text'>XAML with  databinding to PDF with NiXPS</title><content type='html'>A lot of customers ask me how they can go from XAML with databinding to PDF.&lt;br /&gt;&lt;br /&gt;Our SDK can be a great part of a solution for this, if you go over XPS.&lt;br /&gt;&lt;br /&gt;Here is a great &lt;a href="http://www.bradcurtis.com/2010/02/06/document-and-report-generation-using-xaml-wpf-databinding-and-xps/"&gt;article&lt;/a&gt; that outlines how you can go from XAML with databinding to XPS with WPF.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-7319644476806132973?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/7319644476806132973/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=7319644476806132973' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/7319644476806132973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/7319644476806132973'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2010/07/xaml-with-databinding-to-pdf-with-nixps.html' title='XAML with  databinding to PDF with NiXPS'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-3125029068421775635</id><published>2010-06-01T14:54:00.002+02:00</published><updated>2010-06-01T15:00:16.618+02:00</updated><title type='text'>Typography</title><content type='html'>Stumled upon this little gem of a picture:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_c1NiDXy7n5c/TAUDMsL4AcI/AAAAAAAAARo/Bera0_XJKsY/s1600/200px-Fi_garamond_sort_001.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px; height: 286px;" src="http://2.bp.blogspot.com/_c1NiDXy7n5c/TAUDMsL4AcI/AAAAAAAAARo/Bera0_XJKsY/s400/200px-Fi_garamond_sort_001.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5477788038320357826" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;One picture that explains the concepts of &lt;a href="http://en.wikipedia.org/wiki/Typographic_ligature"&gt;ligature&lt;/a&gt; + &lt;a href="http://en.wikipedia.org/wiki/Type_foundry"&gt;foundry&lt;/a&gt;.&lt;br /&gt;They literally used to melt metal to make these glyphs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-3125029068421775635?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/3125029068421775635/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=3125029068421775635' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/3125029068421775635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/3125029068421775635'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2010/06/typography.html' title='Typography'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_c1NiDXy7n5c/TAUDMsL4AcI/AAAAAAAAARo/Bera0_XJKsY/s72-c/200px-Fi_garamond_sort_001.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-7895996381160194260</id><published>2010-05-17T16:58:00.002+02:00</published><updated>2010-05-17T17:01:40.673+02:00</updated><title type='text'>XPS on iPhone</title><content type='html'>We have send out a press release to celebrate our release of NiXPS View for iPhone, the world's first application for iPhone that allows you to preview XPS files.&lt;br /&gt;&lt;br /&gt;You can read our PR &lt;a href="http://nixps.com/news.php?id=20100517"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;We have added &lt;a href="http://nixps.com/iphone/index.html"&gt;an overview on our website&lt;/a&gt;, which also covers how you can use the app.&lt;br /&gt;&lt;br /&gt;Give it a try and let us know what you think!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-7895996381160194260?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/7895996381160194260/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=7895996381160194260' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/7895996381160194260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/7895996381160194260'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2010/05/xps-on-iphone.html' title='XPS on iPhone'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-2338822258316314549</id><published>2010-05-13T00:03:00.001+02:00</published><updated>2010-05-13T00:04:33.531+02:00</updated><title type='text'>NiXPS View for iPhone is now available on the App Store</title><content type='html'>Freshly approved by Apple, go get it &lt;a href="http://itunes.apple.com/us/app/nixps-view/id369689325?mt=8"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-2338822258316314549?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/2338822258316314549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=2338822258316314549' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/2338822258316314549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/2338822258316314549'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2010/05/nixps-view-for-iphone-is-now-available.html' title='NiXPS View for iPhone is now available on the App Store'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-7478687692079731018</id><published>2010-04-29T10:23:00.001+02:00</published><updated>2010-04-29T10:25:01.730+02:00</updated><title type='text'>The upcoming Internet Explorer 9 supports XPS printing</title><content type='html'>IE9 moves to the XPS print path, read more about it &lt;a href="http://blogs.technet.com/print/archive/2010/04/28/ie9-supports-xps-printing.aspx"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-7478687692079731018?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/7478687692079731018/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=7478687692079731018' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/7478687692079731018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/7478687692079731018'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2010/04/upcoming-internet-explorer-9-supports.html' title='The upcoming Internet Explorer 9 supports XPS printing'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-2247218035086080340</id><published>2010-04-28T13:34:00.005+02:00</published><updated>2010-04-28T13:46:05.978+02:00</updated><title type='text'>NiXPS View for iPhone</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_c1NiDXy7n5c/S9gddvUgIlI/AAAAAAAAARg/sXnhpUZxDMw/s1600/phone.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 215px; height: 400px;" src="http://1.bp.blogspot.com/_c1NiDXy7n5c/S9gddvUgIlI/AAAAAAAAARg/sXnhpUZxDMw/s400/phone.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5465150544569967186" /&gt;&lt;/a&gt;&lt;br /&gt;We have ported our NiXPS SDK to the iPhone OS 3 platform, and build a viewer application around it.&lt;br /&gt;&lt;br /&gt;The viewer allows you to download XPS files from the web and view them.&lt;br /&gt;&lt;br /&gt;Thanks to the rich user interface platform that Apple offers on the iPhone, we were able to build a very nice and natural interface to view XPS files.&lt;br /&gt;&lt;br /&gt;We have submitted our application for review by Apple last Monday, so we hope to have it available to customers in a few weeks. I'll write more in detail and post more screenshots then.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-2247218035086080340?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/2247218035086080340/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=2247218035086080340' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/2247218035086080340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/2247218035086080340'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2010/04/nixps-view-for-iphone.html' title='NiXPS View for iPhone'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_c1NiDXy7n5c/S9gddvUgIlI/AAAAAAAAARg/sXnhpUZxDMw/s72-c/phone.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-8573039742269646884</id><published>2010-03-26T21:04:00.002+01:00</published><updated>2010-03-26T21:11:36.256+01:00</updated><title type='text'>Optimizing, optimizing, optimizing....</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_c1NiDXy7n5c/S60TpQmenzI/AAAAAAAAARY/rWxj2gEy6xQ/s1600/shark.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 292px;" src="http://3.bp.blogspot.com/_c1NiDXy7n5c/S60TpQmenzI/AAAAAAAAARY/rWxj2gEy6xQ/s400/shark.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5453036323367460658" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Spend most of the week swimming with the shark, Apple's great code profiling tool.&lt;br /&gt;&lt;br /&gt;Profiling is a humbling experience for a developer - where big ego's, and long runtimes, slowly, but decisively shrink to it's razor sharp essence.&lt;br /&gt;&lt;br /&gt;Have a nice weekend!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-8573039742269646884?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/8573039742269646884/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=8573039742269646884' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/8573039742269646884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/8573039742269646884'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2010/03/optimizing-optimizing-optimizing.html' title='Optimizing, optimizing, optimizing....'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_c1NiDXy7n5c/S60TpQmenzI/AAAAAAAAARY/rWxj2gEy6xQ/s72-c/shark.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-6171321900597210374</id><published>2010-03-09T16:56:00.002+01:00</published><updated>2010-03-09T17:04:43.301+01:00</updated><title type='text'>NiXPS SDK v2.6.6 released!</title><content type='html'>We have released NiXPS SDK v2.6.6 today.&lt;br /&gt;This is a maintenance update, free for all current customers who are under maintenance.&lt;br /&gt;&lt;br /&gt;We roll out some optimizations in reading, writing and converting very large documents (+1000 pages). &lt;br /&gt;You should see a significant speed boost, and reduced memory usage, when handling these type of files.&lt;br /&gt;The XPS document outline (table of contents) is now also optionally converted into a PDF document outline.&lt;br /&gt;And we have fixed a few minor bugs.&lt;br /&gt;&lt;br /&gt;Again a lot of fixes and optimizations were the result of issues reported by our customers.&lt;br /&gt;Your continued feedback allows us to further improve our software and provide a field tested, high quality SDK.&lt;br /&gt;Thank you very much!&lt;br /&gt;&lt;br /&gt;You can find the changelog for this v2.6.6 release &lt;a href="http://nixps.com/changelog.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Download a trial version &lt;a href="http://nixps.com/library_apply.php"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-6171321900597210374?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/6171321900597210374/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=6171321900597210374' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/6171321900597210374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/6171321900597210374'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2010/03/nixps-sdk-v266-released.html' title='NiXPS SDK v2.6.6 released!'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-6939052820556974526</id><published>2010-03-08T22:11:00.002+01:00</published><updated>2010-03-08T22:13:55.798+01:00</updated><title type='text'>Palm goes C too</title><content type='html'>Palm announces support for &lt;i&gt;native plugins&lt;/i&gt; for its WebOS platform (read &lt;a href="http://developer.palm.com/index.php?Itemid=20&amp;id=1850&amp;option=com_content&amp;view=article"&gt;here&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Android, Chrome OS, iPhone, Symbian, OSX, Windows, ... go native when speed is required.&lt;br /&gt;&lt;br /&gt;Speed still matters in the Web 2.0 age.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-6939052820556974526?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/6939052820556974526/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=6939052820556974526' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/6939052820556974526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/6939052820556974526'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2010/03/palm-goes-c-too.html' title='Palm goes C too'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-8118095230658854634</id><published>2010-02-20T15:08:00.003+01:00</published><updated>2010-02-20T15:11:13.921+01:00</updated><title type='text'>Photoshop turns 20</title><content type='html'>If a product becomes the synonym for what it represents-  that is the ultimate definition of success.&lt;br /&gt;&lt;br /&gt;This picture is photoshopped. You &lt;i&gt;know&lt;/i&gt; what that means.&lt;br /&gt;&lt;br /&gt;The software applications blows out 20 candles - much software development respect!&lt;br /&gt;&lt;br /&gt;Read its history &lt;a href="http://www.webdesignerdepot.com/2010/02/20-years-of-adobe-photoshop/"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-8118095230658854634?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/8118095230658854634/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=8118095230658854634' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/8118095230658854634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/8118095230658854634'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2010/02/photoshop-turns-20.html' title='Photoshop turns 20'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-920548667656979236</id><published>2010-02-13T14:51:00.001+01:00</published><updated>2010-02-13T14:51:34.766+01:00</updated><title type='text'>On Client Platforms</title><content type='html'>Suppose you are going to develop your next application that needs to run on an as broad selection of  user's client devices or computers, what development platform are you going to target?&lt;br /&gt;&lt;br /&gt;There are a lot of client platform possibilities that a developer can choose to develop their application for.&lt;br /&gt;All of these client platforms have their technical and business merits and drawbacks.&lt;br /&gt;&lt;br /&gt;In this post I give my take on some of the major possibilities, feel free to comment or send in your thoughts!&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Note:&lt;/u&gt; &lt;br /&gt;I list the main points is three categories:&lt;br /&gt;&lt;i&gt;The Good&lt;/i&gt;: are properties of the technology that are a clear advantage&lt;br /&gt;&lt;i&gt;The Bad&lt;/i&gt;: are properties that are limiting or stumbling blocks, and cannot be overcome&lt;br /&gt;&lt;i&gt;The Ugly&lt;/i&gt;: are properties that are limiting or stumbling blocks, that can be overcome or mitigated by the developer of the application&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. Native Application&lt;/b&gt;&lt;br /&gt;An application that the user installs and runs on their computer/device.&lt;br /&gt;For instance: native Windows application&lt;br /&gt;&lt;br /&gt;The Good&lt;br /&gt;-integration in the overall user experience of the OS (or hardware: f.i. iPhone), native look and feel&lt;br /&gt;-performance&lt;br /&gt;-both an on-line and off-line solution&lt;br /&gt;-mature development environments&lt;br /&gt;-large ecosystem of 3rd party library/components&lt;br /&gt;&lt;br /&gt;The Bad&lt;br /&gt;-locked to a specific OS/device, for each OS a version needs to be developed&lt;br /&gt;-application needs installation, possible roadblock as sometimes not even allowed (f.i. corporate policy)&lt;br /&gt;&lt;br /&gt;The Ugly&lt;br /&gt;-updates: need to be installed each time per user&lt;br /&gt;&lt;br /&gt;This platform is mostly pushed by Apple, and Microsoft&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. Flash application&lt;/b&gt;&lt;br /&gt;A application that runs on the Adobe Flash runtime in a browser.&lt;br /&gt;&lt;br /&gt;The Good&lt;br /&gt;-OS/browser/device independent&lt;br /&gt;-large installed base of Flash runtimes (see: riastats.com), shrinking slightly&lt;br /&gt;-no installation required, if plug-in is available&lt;br /&gt;-updates easy, app is downloaded each time&lt;br /&gt;&lt;br /&gt;The Bad&lt;br /&gt;-browser plug-in needed&lt;br /&gt;-some platforms not supported (f.i. iPhone)&lt;br /&gt;&lt;br /&gt;The Ugly&lt;br /&gt;-performance&lt;br /&gt;-good integration in OS is challenging (no native look &amp; feel; local file access, etc...)&lt;br /&gt;-technically challenging to implement all required functionality&lt;br /&gt;-development tools are so-so&lt;br /&gt;-lack of large ecosystem of 3rd party library/components&lt;br /&gt;-flash blockers, user apathy&lt;br /&gt;&lt;br /&gt;Biggest supporter for this is Adobe.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3. Silverlight application&lt;/b&gt;&lt;br /&gt;A application that runs on the Microsoft Silverlight runtime in a browser.&lt;br /&gt;&lt;br /&gt;The Good&lt;br /&gt;-OS/browser/device independent&lt;br /&gt;-no installation required, if plug-in is available&lt;br /&gt;-updates easy, app is downloaded each time&lt;br /&gt;-mature underlying technology (.NET subset)&lt;br /&gt;&lt;br /&gt;The Bad&lt;br /&gt;-browser plug-in needed&lt;br /&gt;-small installed base, but growing (see: riastats.com)&lt;br /&gt;-some platforms not supported (f.i. iPhone, Linux)&lt;br /&gt;&lt;br /&gt;The Ugly&lt;br /&gt;-performance uncertain&lt;br /&gt;-good integration in OS is challenging (no native look &amp; feel; local file access, etc...)&lt;br /&gt;-technically challenging to implement all required functionality&lt;br /&gt;-Silverlight plug-in probably not installed, so user will need to do this&lt;br /&gt;-lack of large ecosystem of 3rd party library/components&lt;br /&gt;-user apathy&lt;br /&gt;&lt;br /&gt;This pushed heavily by Microsoft too, but with clear focus on Windows.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;4. HTML/Javascript application&lt;/b&gt;&lt;br /&gt;A application that runs entirely in a browser, using Javascript and HTML&lt;br /&gt;&lt;br /&gt;The Good&lt;br /&gt;-OS/browser/device independent&lt;br /&gt;-only a recent browser needed, virtually available everywhere&lt;br /&gt;-large and growing ecosystem of 3rd party library/components&lt;br /&gt;&lt;br /&gt;The Bad&lt;br /&gt;-no local storage of files&lt;br /&gt;-basically an on-line only solution&lt;br /&gt;&lt;br /&gt;The Ugly&lt;br /&gt;-performance&lt;br /&gt;-there are technical limitations on what can be accomplished with HTML5/Javascript&lt;br /&gt;-development environments non-existent&lt;br /&gt;-good integration in OS is very challenging&lt;br /&gt;-technically challenging to implement all required functionality&lt;br /&gt;-some popular browsers (Microsoft IE) lack modern Javascript/HTML5, so graceful fallback needed&lt;br /&gt;-Javascript + HTML not so elegant combo from a software development point of view: impact on maintenance, debugging, etc...&lt;br /&gt;&lt;br /&gt;This is a methodology that is being pushed by Google.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;5. Java applet&lt;/b&gt;&lt;br /&gt;A application that runs on the Java runtime in a browser.&lt;br /&gt;&lt;br /&gt;The Good&lt;br /&gt;-OS/browser/device independent&lt;br /&gt;-no installation required, if plug-in is available&lt;br /&gt;-updates easy, app is downloaded each time&lt;br /&gt;-mature underlying technology (Java)&lt;br /&gt;-mature development environments&lt;br /&gt;-large ecosystem of 3rd party library/components&lt;br /&gt;&lt;br /&gt;The Bad&lt;br /&gt;-browser plug-in needed&lt;br /&gt;-unpredictable installed base&lt;br /&gt;-some platforms not supported (f.i. iPhone)&lt;br /&gt;&lt;br /&gt;The Ugly&lt;br /&gt;-good integration in OS is challenging&lt;br /&gt;-Java applets seem to be a dying platform&lt;br /&gt;&lt;br /&gt;This was push somewhat by Sun, taken over by Oracle now. New follow-up tech JavaFX didn't catch on.&lt;br /&gt;&lt;br /&gt;There are of course various others: Adobe AIR (need specific runtime installed), Java application (also special runtime needed), XBAP, Prism, etc...&lt;br /&gt;But I wanted to focus on the main important ones.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-920548667656979236?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/920548667656979236/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=920548667656979236' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/920548667656979236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/920548667656979236'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2010/02/on-client-platforms.html' title='On Client Platforms'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-104535204587350623</id><published>2010-02-05T08:53:00.002+01:00</published><updated>2010-02-05T09:14:39.779+01:00</updated><title type='text'>Speed matters</title><content type='html'>Facebook uses a lot of PHP, and given the scale of the service, they must be watching performance very closely.&lt;br /&gt;Bandwidth and infrastructure will be their main costs, so it makes economic sense to try to run as much of Facebook on as little infrastructure as possible.&lt;br /&gt;And one of their tools they have announced this week: &lt;a href="http://developers.facebook.com/news.php?blog=1&amp;story=358"&gt;HipHop&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;HipHop is a toolchain that preprocesses PHP into C++, which can subsequently be compiled by a C compiler, and then used with their webservers. Facebook says they are seeing a 50% increase in performance.&lt;br /&gt;&lt;br /&gt;This is beautiful engineering: they can now run double the load on the same infrastructure.&lt;br /&gt;&lt;br /&gt;Evangelists always cleam that dynamic (or interpreted) languages are a win-win.&lt;br /&gt;You win on ease of use, as a dynamic language is easier to program for, easier to debug and easier to maintain.&lt;br /&gt;And you supposedly win on performance, as they run as quick as compiled code.&lt;br /&gt;The latter is never true in practice, no matter what complicated theoretical explanation they always give to say it really is so.&lt;br /&gt;&lt;br /&gt;There are numerous real world examples:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Google wants you to use a Java-like on Android Phones, but if you want it to go fast, use C and compile to binary. (a brilliant video to drive the point home &lt;a href="http://www.youtube.com/watch?v=It8xPqkKxis"&gt;here&lt;/a&gt;). Java is not fast, using it on a small phone cpu is a challenge.&lt;br /&gt;&lt;li&gt;Apple supposedly have written their first iPhone widgets (time, weather, stocks, etc...) with javascript/html - but decided to rewrite them in Objective-C because performance was poor&lt;br /&gt;&lt;li&gt;Windows Vista contained a lot of .NET during development, but that was ripped out and changed to native x86 for speed reasons.&lt;br /&gt;&lt;li&gt;Using PHP based Wordpress for a large site is only really doable when you use static caching, and do not run PHP at all for most of the requests. &lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;A lot of the evangelism for dynamic (and interpreted) languages is like marketing propaganda; they sell you a dream, but a lot of dreams do not survive a confrontation with reality. &lt;br /&gt;&lt;br /&gt;The fastest and most efficient way to run code is to use the least amount of the best instructions for a given cpu.&lt;br /&gt;&lt;br /&gt;Speed matters in the real world.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-104535204587350623?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/104535204587350623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=104535204587350623' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/104535204587350623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/104535204587350623'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2010/02/speed-matters.html' title='Speed matters'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-4758896892042894157</id><published>2010-01-11T17:08:00.003+01:00</published><updated>2010-01-11T21:07:49.719+01:00</updated><title type='text'>Microsoft joins SVG working group</title><content type='html'>Microsoft &lt;a href="http://www.sdtimes.com/MICROSOFT_JOINS_SVG_WORK_GROUP/By_Alex_Handy/About_MICROSOFT_and_SVG/34041"&gt;announced&lt;/a&gt; that they took a seat on the &lt;a href="http://www.w3.org/Graphics/SVG/"&gt;SVG working group&lt;/a&gt;.&lt;br /&gt;This good news for the SVG format, as a lot big players are backing it now.&lt;br /&gt;&lt;br /&gt;NiXPS has been &lt;a href="http://nixps.blogspot.com/2008/11/xps-export-to-svg.html"&gt;supporting&lt;/a&gt; SVG for almost two years now. It is an interesting technology, but it practice it was being let down by a lot of broken/missing/poor support in various software components (Webkit SVG has a few issues, Internet Explorer support is laky, Adobe has an on/off relationship with SVG, etc...).&lt;br /&gt;&lt;br /&gt;It is good news that Microsoft has decided to back the format more officially, it might improve Windows support for it, and make it a much more dependable format for the future.&lt;br /&gt;&lt;br /&gt;Here at NiXPS we will keep following it closely.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-4758896892042894157?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/4758896892042894157/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=4758896892042894157' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/4758896892042894157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/4758896892042894157'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2010/01/microsoft-joins-svg-work-group.html' title='Microsoft joins SVG working group'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-6620384937519584054</id><published>2010-01-07T09:13:00.008+01:00</published><updated>2010-01-07T09:54:06.484+01:00</updated><title type='text'>HP Slate - platforms, platforms and some more platforms</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.blogcdn.com/www.engadget.com/media/2010/01/01-06-10hpslate.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 281px; height: 500px;" src="http://www.blogcdn.com/www.engadget.com/media/2010/01/01-06-10hpslate.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;Microsoft's CEO Steve Ballmer showed a prototype of a new Tablet PC like device designed by HP, and running Windows 7: the HP Slate.&lt;br /&gt;With the rumour mill going in overdrive about an imminent Apple Tablet-like product, and a large part of the industry totally ecstatic about 'touch computing', this is hitting all the right buttons.&lt;br /&gt;&lt;br /&gt;I kinda think the device looks very nice - a bit like an oversized iPod Touch, which is a good thing.&lt;br /&gt;&lt;br /&gt;The last couple of years a lot of attempts are made to open up a new categories of computing devices:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Smartphones&lt;/b&gt;. with poster child Apple, and runners up Nokia and Blackberry - and since a few days also Google with its Nexus One. There is a blurry line between regular mobile phones and smartphones, but I think it would be reasonable to say that smartphones are defined by the fact that it's fairly easy for 3rd parties to develop software for.&lt;br /&gt;&lt;li&gt;&lt;b&gt;Netbooks&lt;/b&gt;. Invented by Asus, very popular small laptops. Here the blurry line between netbooks and laptops. But here the defining factors are size and prioce, typically Atom powered.&lt;br /&gt;&lt;li&gt;&lt;b&gt;Smartbooks&lt;/b&gt;. A new category - it's a netbook that is not based on an x86, and runs some other os than Windows. Typically ARM and android combo.&lt;br /&gt;&lt;li&gt;&lt;b&gt;E-books&lt;/b&gt;. Small computer to read books - typically a special screen technology to make reading more pleasant. People tend to forget, but these machines already exist for 10+ years.&lt;br /&gt;&lt;li&gt;&lt;b&gt;Tablets&lt;/b&gt;. Laptop like computers that have a large touch screen, that can mostly be swiveled so that the device looks to be 'only screen'. Also already in existence for 10+ years.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;And people still buy desktop PCs (and Macs) and laptops, of course.&lt;br /&gt;&lt;br /&gt;I'm not quite sure where to fit in the iPod Touch. It's a touch based, tablet like computer. But it's smaller than your typical tablet. I like it, as it is really portable, but makes more sense in it's iPhone incarnation (if it wasn't for the price).&lt;br /&gt;&lt;br /&gt;These are a lot of computing devices, with a lot of different architectures.&lt;br /&gt;Intersting times ahead for small, independent software vendors ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-6620384937519584054?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/6620384937519584054/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=6620384937519584054' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/6620384937519584054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/6620384937519584054'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2010/01/hp-slate-platforms-platforms-and-some.html' title='HP Slate - platforms, platforms and some more platforms'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-3769907519266088793</id><published>2009-12-24T12:59:00.004+01:00</published><updated>2009-12-24T13:01:49.207+01:00</updated><title type='text'>Merry Christmas and a happy 2010</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_c1NiDXy7n5c/SzNXtfFqeCI/AAAAAAAAAQg/dbO7JbtosIE/s1600-h/2010.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 341px;" src="http://1.bp.blogspot.com/_c1NiDXy7n5c/SzNXtfFqeCI/AAAAAAAAAQg/dbO7JbtosIE/s400/2010.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5418771215607822370" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;(download xps &lt;a href="http://nixps.com/downloads/2010.xps"&gt;here&lt;/a&gt;)&lt;br /&gt;&lt;/center&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-3769907519266088793?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/3769907519266088793/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=3769907519266088793' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/3769907519266088793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/3769907519266088793'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/12/merry-christmas-and-happy-2010.html' title='Merry Christmas and a happy 2010'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_c1NiDXy7n5c/SzNXtfFqeCI/AAAAAAAAAQg/dbO7JbtosIE/s72-c/2010.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-7214276959755858071</id><published>2009-12-13T13:36:00.005+01:00</published><updated>2009-12-13T14:04:50.816+01:00</updated><title type='text'>EXI</title><content type='html'>I've been tied up with a lot of work the last couple of weeks, resulting in too much blog radio silence for my liking.&lt;br /&gt;&lt;br /&gt;We have released a v2.6.5, which I will blog about more the coming days.&lt;br /&gt;And we're working heavily on our next major SDK release v3, which will feature some impressive technological advancements.&lt;br /&gt;&lt;br /&gt;All new v2.6 SDK customers will receive the v3 for free. All existing v2.6 SDK customers will receive the v3 for free if they are under maintenance. &lt;br /&gt;&lt;br /&gt;One thing caught my attention this week: &lt;a href="http://www.sdtimes.com/content/article.aspx?ArticleID=33980&amp;utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+SdTimesLatestNews+%28SD+Times+All+News%29"&gt;'Efficient XML Interchange' gets W3C green light&lt;/a&gt;. &lt;i&gt;Efficient XML Interchange&lt;/i&gt;. First time I heard about that one. This appears to be a binary representation of an XML document, the spec is being &lt;a href="http://www.w3.org/XML/EXI/"&gt;drafted by the W3C&lt;/a&gt;. I've browsed it lightly, and it seems to be a binary representation that reduces the overhead for XML, and facilitates SAX parsing.&lt;br /&gt;I find it a bit of an odd thing. XML is verbose, but this verbosity helps humans reading, writing and understanding it. And a computer can always zip it. Turning it into a binary format, kind of defeats the purpose, and makes it just another binary format.&lt;br /&gt;&lt;br /&gt;I definitely need to study it further. Sharing the parser state, could be an interesting thing to have, but that would only matter for big XML files, I guess. And what if you do not want to be forced in a SAX style arrangement? &lt;br /&gt;&lt;br /&gt;But it exists, so I assume it must be scratching an itch!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-7214276959755858071?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/7214276959755858071/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=7214276959755858071' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/7214276959755858071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/7214276959755858071'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/12/exi.html' title='EXI'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-2859745152847850401</id><published>2009-11-16T15:49:00.001+01:00</published><updated>2009-11-16T15:53:48.974+01:00</updated><title type='text'>NiXPS SDK v2.6.4 released!</title><content type='html'>We have released NiXPS SDK v2.6.4 today.&lt;br /&gt;This is a maintenance update, free for all current customers who are under maintenance.&lt;br /&gt;&lt;br /&gt;This release brings mainly bug fixes, and a few optimizations.&lt;br /&gt;We also ensured that our managed DLL is strong named.&lt;br /&gt;&lt;br /&gt;Again a lot of fixes were the result of issues reported by our customers.&lt;br /&gt;The continued feedback we are getting allows us to further improve our software and provide a field tested, high quality SDK.&lt;br /&gt;Thank you very much!&lt;br /&gt;&lt;br /&gt;You can find the changelog for this v2.6.4 release &lt;a href="http://nixps.com/changelog.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Download a trial version &lt;a href="http://nixps.com/library_apply.php"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-2859745152847850401?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/2859745152847850401/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=2859745152847850401' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/2859745152847850401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/2859745152847850401'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/11/nixps-sdk-v264-released.html' title='NiXPS SDK v2.6.4 released!'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-8403470914775758231</id><published>2009-11-15T12:44:00.009+01:00</published><updated>2009-11-15T13:11:27.910+01:00</updated><title type='text'>Why PDF portofolio's are a bad idea: a user's poor experience</title><content type='html'>I bought a new TV yesterday, a Philips 37PFL5604H. Good price, decent quality; chosen as the best buy based on a test of 20+ TVs by local consumer mag Test-Aankoop; but I digress.&lt;br /&gt;&lt;br /&gt;It's 2009, and no paper manual to be found in the box. &lt;br /&gt;This is ok, never use them frequently anyway. And they use up limited physical shelve space. &lt;br /&gt;&lt;br /&gt;Philips included a sticker where they say that the manual is available on the machine itself via a help menu. Seems like a good idea, but as some other residents of the house were already watching, my suggestion that 'I want to have a look at the manual' were greeted with angry looks.&lt;br /&gt;&lt;br /&gt;Ok - on to the Philips website to download an electronic version.&lt;br /&gt;Which was remarkably easy to do, I quickly found a PDF of the manual, and downloaded the file with the prosaic name '37pfl5604h_12_dfu_nld.pdf'. &lt;br /&gt;&lt;br /&gt;Opened it on may mac, and I was greeted with:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_c1NiDXy7n5c/Sv_rdCxPOFI/AAAAAAAAAP4/KD19woK6SLY/s1600-h/Picture+1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 326px;" src="http://1.bp.blogspot.com/_c1NiDXy7n5c/Sv_rdCxPOFI/AAAAAAAAAP4/KD19woK6SLY/s400/Picture+1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5404296962060007506" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Oh, the joy! In stead of showing me the manual, I got the invitation &lt;b&gt;to download and install another piece of software&lt;/b&gt;, otherwise I would be deprived of the ability &lt;i&gt;to read or print the damn manual&lt;/i&gt;.&lt;br /&gt;My regular PDF viewing software, Preview.app, which could be regarded as fairly up to date, was sadly not at liberty to preview &lt;i&gt;this&lt;/i&gt; PDF.&lt;br /&gt;&lt;br /&gt;So caved in, and installed the latest version of Adobe's Reader, as apparently PDF might be an open, accessibly format, as long as you work with it using Adobe software.&lt;br /&gt;&lt;br /&gt;Waiting to be amazed by the sheer progress that portofolio's bring to the concept of an electronic manual, I got this one (after declining an Adobe Updater request to update itself, and another update offer for the software I just downloaded):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_c1NiDXy7n5c/Sv_tDJv7JUI/AAAAAAAAAQA/UCGeuI56ANU/s1600-h/Picture+2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 309px;" src="http://1.bp.blogspot.com/_c1NiDXy7n5c/Sv_tDJv7JUI/AAAAAAAAAQA/UCGeuI56ANU/s400/Picture+2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5404298716280202562" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;?&lt;br /&gt;&lt;br /&gt;Ok, just give me that manual already. And I click on the right (Volledige Gebruikshandleiding.pdf), and make an attempt to get it out so I can go back to Preview.app to read it.&lt;br /&gt;Then I get this gem:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_c1NiDXy7n5c/Sv_tjqREkNI/AAAAAAAAAQI/a_iONpGvknA/s1600-h/Picture+3.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 278px;" src="http://4.bp.blogspot.com/_c1NiDXy7n5c/Sv_tjqREkNI/AAAAAAAAAQI/a_iONpGvknA/s400/Picture+3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5404299274764980434" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Achtung! You dare to save this document, and possibly use non Adobe software with this document! Beware, bad things might happen!!&lt;/i&gt;&lt;br /&gt;Or something along those lines.&lt;br /&gt;Anyway, it seems to extract alright, despite the dire warning, and then I have a new pdf, which does open in Preview.app.&lt;br /&gt;&lt;br /&gt;But sadly, they have spend so much time and effort in generating a PDF portofolio that can only be opened with some latest version of the Adobe Reader, but failed to include something basic like a clickable table of contents.&lt;br /&gt;&lt;br /&gt;Philips should reconsider this: go back to regular PDF (or *gasp* XPS) so anyone can open it, and include links in the manual - they're very useful!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-8403470914775758231?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/8403470914775758231/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=8403470914775758231' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/8403470914775758231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/8403470914775758231'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/11/why-pdf-portofolios-are-bad-idea-users.html' title='Why PDF portofolio&apos;s are a bad idea: a user&apos;s poor experience'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_c1NiDXy7n5c/Sv_rdCxPOFI/AAAAAAAAAP4/KD19woK6SLY/s72-c/Picture+1.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-276128342510471157</id><published>2009-11-11T15:56:00.002+01:00</published><updated>2009-11-11T15:57:07.196+01:00</updated><title type='text'>Intelligent words on standards</title><content type='html'>&lt;a href="http://adambosworth.net/2009/10/29/talking-to-dc/"&gt;Here's&lt;/a&gt; a nice article on what (and what not) defines a good standard. Nice read.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-276128342510471157?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/276128342510471157/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=276128342510471157' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/276128342510471157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/276128342510471157'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/11/intelligent-words-about-standards.html' title='Intelligent words on standards'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-8501192885081488142</id><published>2009-11-02T22:24:00.004+01:00</published><updated>2009-11-03T11:38:49.288+01:00</updated><title type='text'>Open Government: PDF not so good</title><content type='html'>&lt;a href="http://sunlightlabs.com/blog/2009/adobe-bad-open-government/"&gt;Here's&lt;/a&gt; an interesting article which describes the issues one faces with processing information that the government publishes, and why PDF is not such a great format for this.&lt;br /&gt;Note that XPS has the advantage that it is XML based, which allows parsing and processing by XML enabled software.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-8501192885081488142?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/8501192885081488142/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=8501192885081488142' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/8501192885081488142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/8501192885081488142'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/11/open-governmenet.html' title='Open Government: PDF not so good'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-4543635397827133419</id><published>2009-10-19T22:04:00.002+02:00</published><updated>2009-10-19T22:47:58.800+02:00</updated><title type='text'>Software Design Review</title><content type='html'>I'm a regular reader of a &lt;a href="http://blogs.law.harvard.edu/philg/"&gt;Philip Greenspun's blog&lt;/a&gt;. &lt;br /&gt;He has written an interesting &lt;a href="http://philip.greenspun.com/software/design-review"&gt;article&lt;/a&gt; on the subject of 'Software Design Review'.&lt;br /&gt;&lt;br /&gt;The problem he tries to tackle is a classic in the field of software development: how can non-technical management manage a software project. It sounds a bit silly, but it really is a problem.&lt;br /&gt;Small and large software project all over the world fail miserably for years, and still are failing.&lt;br /&gt;From small 'in company' projects, to big government funded undertakings, the reality anno 2009 still is that these projects are delivered not in the given time budget, often perform poorly, do not function properly, etc...&lt;br /&gt;&lt;br /&gt;Philip Greenspun's argues that the software development process is too opaque, and that it needs proper third party design review at the start, during and at the end of the project.&lt;br /&gt;&lt;br /&gt;It's an interesting proposal, and it it can be seen as having an external technical  on-site stakeholder present all the time. This certainly makes sense, as I agree that a lot of projects are suffering from a lack of focus, and regularly a re-calibration of the business goals is healthy to spot problems early on, and deliver on-spec, on-time, on-budget.&lt;br /&gt;&lt;br /&gt;However I do taste quite a bit of bureaucracy in the proposal, with al lot of documentation that has to be produces during all the steps.&lt;br /&gt;A lot of outsiders to the field tend to compare software building, with real building (like in a building a house). But this analogy doesn't hold true. &lt;br /&gt;First of all, software is not build from ready made, fully specced, 'parts' Nobody guarantees you anything when talking about 'software parts'. Some have SLA's, but even then a lot of things are 'unknown', 'not tested', 'never tried', 'fixed  in next version' etc...&lt;br /&gt;Experience also learns that it is very hard to have a fully fleshed out and final design before construction, as the 'architecture' tends to evolve based on changing requirements. This is why the &lt;a href="http://en.wikipedia.org/wiki/Agile_software_development"&gt;Agile development practice&lt;/a&gt; leads to better results than the &lt;a href="http://en.wikipedia.org/wiki/Waterfall_model"&gt;Waterfall method&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;But I do support the call to lift the practice of software development to a higher level. And being both a software developer and running a business, I also do think that the practice of developing software needs a more formal methodology, and lead to more predictable results.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-4543635397827133419?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/4543635397827133419/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=4543635397827133419' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/4543635397827133419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/4543635397827133419'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/10/software-design-review.html' title='Software Design Review'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-2632126511961147436</id><published>2009-10-14T11:54:00.002+02:00</published><updated>2009-10-14T13:28:26.243+02:00</updated><title type='text'>NiXPS View 3.0 features: XPS Notes</title><content type='html'>One of the exciting new features of NiXPS View v3.0 is the ability to add notes to an XPS document.&lt;br /&gt;&lt;br /&gt;We invested a lot of time and in effort in this, as we were faced with a few challenges. &lt;br /&gt;Not the least the fact that the XPS specification doesn't have the annotations functionality built-in.&lt;br /&gt;Which either gave us the option to not implement it at all (like competitors do), or work around this limitation.&lt;br /&gt;&lt;br /&gt;We feel that notes are a compelling addition to the to the XPS format, especially on Windows, where this brings XPS to a much higher, more usefull level. So technically we are working around the limitations of the XPS spec by putting the notes in the XPS content. This ensures that other, &lt;i&gt;non-notes aware&lt;/i&gt; XPS Viewers show the notes information.&lt;br /&gt;In NiXPS View you can manipulate an delete the notes, in other viewers you merely view them.&lt;br /&gt;To counter the effect of not being able to move a note in a non-NiXPS Viewer, we made them transparent, allowing to see what the note covers (in NiXPS View you can hide the notes, or move it).&lt;br /&gt;&lt;br /&gt;So in summary: NiXPS View allows you to &lt;span style="font-weight:bold;"&gt;annotate XPS&lt;/span&gt; files, and in such a way that they are &lt;span style="font-weight:bold;"&gt;visible in every XPS viewer&lt;/span&gt; too.&lt;br /&gt;&lt;br /&gt;Here is a demo of the notes feature:&lt;br /&gt;&lt;br /&gt;&lt;object width="600" height="450"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=7060940&amp;amp;server=vimeo.com&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=7060940&amp;amp;server=vimeo.com&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="600" height="450"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href="http://vimeo.com/7060940"&gt;NiXPS View v3.0 Notes Demo&lt;/a&gt; from &lt;a href="http://vimeo.com/user930945"&gt;nixps&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-2632126511961147436?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/2632126511961147436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=2632126511961147436' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/2632126511961147436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/2632126511961147436'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/10/nixps-view-30-features-xps-notes.html' title='NiXPS View 3.0 features: XPS Notes'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-8675821631882777864</id><published>2009-10-13T12:18:00.003+02:00</published><updated>2009-10-13T12:26:58.608+02:00</updated><title type='text'>Adobe recommends disabling JavaScript to avoid PDF hack attack (again)</title><content type='html'>&lt;a href="http://www.computerweekly.com/Articles/2009/10/12/238093/adobe-recommends-disabling-javascript-to-avoid-pdf-hack.htm"&gt;Dixit computerweekly&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Ah - the pain of being popular.&lt;br /&gt;&lt;br /&gt;Or maybe, because the format got a bit out of hand.&lt;br /&gt;The other day I found this gem: &lt;a href="http://www.pdf-d.org/"&gt;PDF/D&lt;/a&gt;&lt;br /&gt;Oh yeah, yet another PDF/something subspec, this time a PDF subspec that is really, &lt;i&gt;really&lt;/i&gt;, for documents.&lt;br /&gt;Hence the 'D' - see?&lt;br /&gt;And they have committees and consortium and everything like the real grown-ups have.&lt;br /&gt;&lt;br /&gt;I think we're close to having a PDF spec for every letter of the roman alphabet, the joy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-8675821631882777864?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/8675821631882777864/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=8675821631882777864' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/8675821631882777864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/8675821631882777864'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/10/adobe-recommends-disabling-javascript.html' title='Adobe recommends disabling JavaScript to avoid PDF hack attack (again)'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-5086908800353596662</id><published>2009-09-30T13:00:00.003+02:00</published><updated>2009-09-30T20:52:48.000+02:00</updated><title type='text'>XPS Imposition</title><content type='html'>I've written a small example script for NiXPS View v3.0 that implements XPS imposition.&lt;br /&gt;&lt;br /&gt;Given a multipage file, it imposes 2 pages on 1 landscape A4 - so a 16 page document will yield an 8 page document, where each page has 2 pages on it.&lt;br /&gt;&lt;br /&gt;The script is fairly simple, about 50 lines of code:&lt;br /&gt;&lt;br /&gt;First, define our A4 paper size:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;// paper size, use A4&lt;br /&gt;lMaxWidth=1056;&lt;br /&gt;lMaxHeight=816;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Then create a new XPS file:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;// create a new XPS file, with a single document&lt;br /&gt;lNewXPS=new NOPackage();&lt;br /&gt;lNewXPS=lNewXPS.create(true,"spreads.xps");&lt;br /&gt;lNewDoc=lNewXPS.getDocument(0);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Next, we walk over all the pages is the currently active document, and put 2 pages on each page. We do some RenderTransform magic to position the pages correctly:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;// get the doc&lt;br /&gt;lDocument=App.getDocument();&lt;br /&gt;lNumberOfPages=lDocument.getNumberOfPages();&lt;br /&gt;&lt;br /&gt;for (i=0; i&amp;lt;lNumberOfPages; i++)&lt;br /&gt;{&lt;br /&gt; if (i % 2==0)&lt;br /&gt; {&lt;br /&gt;  // create a new page&lt;br /&gt;  lNewPage=lNewDoc.createPage();&lt;br /&gt;  lNewFixedPage=lNewPage.getFixedPage();&lt;br /&gt;  lNewFixedPage.setWidth(lMaxWidth);&lt;br /&gt;  lNewFixedPage.setHeight(lMaxHeight);&lt;br /&gt;  lOffsetX=0;&lt;br /&gt;  lNum=0;&lt;br /&gt; } else&lt;br /&gt; {&lt;br /&gt;  lOffsetX=lMaxWidth/2;&lt;br /&gt;  lNum=1;&lt;br /&gt; }&lt;br /&gt; // access the page&lt;br /&gt; lPage=lDocument.getPage(i);&lt;br /&gt; lFixedPage=lPage.getFixedPage();&lt;br /&gt; lPageWidth=lFixedPage.getWidth();&lt;br /&gt; lPageHeight=lFixedPage.getHeight();&lt;br /&gt;&lt;br /&gt; // calculate the factor&lt;br /&gt; lFactorWidth=(lMaxWidth/2)/lPageWidth;&lt;br /&gt; lFactorHeight=lMaxHeight/lPageHeight;&lt;br /&gt; lFactor=lFactorWidth;&lt;br /&gt; if (lFactorHeight&amp;lt;lFactor)&lt;br /&gt;  lFactor=lFactorHeight;&lt;br /&gt;&lt;br /&gt; // copy page on top&lt;br /&gt; lNewPage.copyPageOnTop(lPage);&lt;br /&gt; lCanvas=lNewFixedPage.getCanvas(lNum);&lt;br /&gt; lCanvas.setRenderTransform(lFactor+",0,0,"+lFactor+","+lOffsetX+",0");&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;And that's it. Only thing left to do now at this point is give the newly created XPS file to the application, so the user can work with it further.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;App.addPackage(lNewXPS);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;As you can see you can fairly easy leverage the NiXPS SDK in Javascript this way. It's great for tools and customizations, and also for experimenting, as it is also fairly easy to convert this script to a C-Sharp or C++ source, and use it in conjunction with our SDK.&lt;br /&gt;&lt;br /&gt;You can download the script, and find more on scripting on &lt;a href="http://nixps.com/scripting"&gt;http://nixps.com/scripting&lt;/a&gt;&lt;br /&gt;You can read more about our NiXPS SDK &lt;a href="http://nixps.com/library.html"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-5086908800353596662?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/5086908800353596662/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=5086908800353596662' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/5086908800353596662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/5086908800353596662'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/09/xps-imposition.html' title='XPS Imposition'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-7662395795962878490</id><published>2009-09-30T09:27:00.003+02:00</published><updated>2009-09-30T09:32:51.549+02:00</updated><title type='text'>Fun: Arial or Helvetica?</title><content type='html'>For the &lt;i&gt;Typophiles&lt;/i&gt; amongst you: so you say &lt;i&gt;'Helvetica is so much nicer than Arial, everyone can see that'&lt;/i&gt;? &lt;a href="http://www.ironicsans.com/helvarialquiz/"&gt;Prove it!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;More background on the Arial/Helvetica debate &lt;a href="http://en.wikipedia.org/wiki/Arial"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;(via &lt;a href="http://www.daringfireball.com"&gt;Daring Fireball&lt;/a&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-7662395795962878490?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/7662395795962878490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=7662395795962878490' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/7662395795962878490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/7662395795962878490'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/09/fun-arial-or-helvetica.html' title='Fun: Arial or Helvetica?'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-2429394670944404248</id><published>2009-09-29T14:01:00.005+02:00</published><updated>2009-09-29T14:39:25.043+02:00</updated><title type='text'>NiXPS View 3.0 features: Scripting</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_c1NiDXy7n5c/SsH9618mnqI/AAAAAAAAAPc/G1xYlkcG_q4/s1600-h/scripts_menu.png"&gt;&lt;img style="float:left; margin:0 10px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 195px; height: 195px;" src="http://1.bp.blogspot.com/_c1NiDXy7n5c/SsH9618mnqI/AAAAAAAAAPc/G1xYlkcG_q4/s400/scripts_menu.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5386865816667332258" /&gt;&lt;/a&gt;&lt;br /&gt;An exciting new addition to NiXPS View v3.0 is its ability to run scripts.&lt;br /&gt;&lt;br /&gt;Granted, this is a fairly technical feature, but it can be very useful to extend the NiXPS View applications with more 'vertical' features.&lt;br /&gt;&lt;br /&gt;Scripting is essentially programming, so to a certain degree you need to be a 'computer geek' to be able to grok how to do this. But scripting has a fairly low barrier of entry. Especially if the scripting is based on something relatively ubiquitous Javascript.&lt;br /&gt;&lt;br /&gt;Javascript powers virtually all websites around the internet, and chances are that if you ever had a go at building your own website, that you have encountered, and even tried writing, a Javascript.&lt;br /&gt;&lt;br /&gt;Fact is: Javascript is fairly easy to learn and use, and if technology is not really your thing, which is very possible, than it isn't hard to find someone with the technical ability required to hack together a decent script.&lt;br /&gt;&lt;br /&gt;We leverage our NiXPS SDK in the scripting environment, and together with some hooks for the application, one can build fairly powerful scripts which very little coding.&lt;br /&gt;&lt;br /&gt;To aid the development of scripts, we have started a wiki where we give a small introduction to how to get around making scripts for NiXPS View v3.0. You can find this at &lt;a href="http://nixps.com/scripting"&gt;http://nixps.com/scripting&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_c1NiDXy7n5c/SsH_Aq4ZlVI/AAAAAAAAAPk/xCxqOjMrvPw/s1600-h/nixps_script.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 128px; height: 128px;" src="http://3.bp.blogspot.com/_c1NiDXy7n5c/SsH_Aq4ZlVI/AAAAAAAAAPk/xCxqOjMrvPw/s400/nixps_script.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5386867016287753554" /&gt;&lt;/a&gt;&lt;br /&gt;We are big proponents of 'learning by example', and for this we are posting example scripts on the wiki. This is a great way to experiment, and get the hang of writing small scripts.&lt;br /&gt;And for technical help you could also post your question on the &lt;a href="http://groups.google.com/group/nixps"&gt;NiXPS mailing list&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;One of the first scripts that we are posting in the example section is a script that performs XPS imposition.&lt;br /&gt;I'm going to write a bit more about this in a next blog post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-2429394670944404248?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/2429394670944404248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=2429394670944404248' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/2429394670944404248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/2429394670944404248'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/09/nixps-view-30-features-scripting.html' title='NiXPS View 3.0 features: Scripting'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_c1NiDXy7n5c/SsH9618mnqI/AAAAAAAAAPc/G1xYlkcG_q4/s72-c/scripts_menu.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-4218813262160021378</id><published>2009-09-24T15:26:00.004+02:00</published><updated>2009-09-24T21:11:50.301+02:00</updated><title type='text'>NiXPS View 3.0 features: UI</title><content type='html'>This is the first of a series of posts that takes an in-depth look at our latest NiXPS View release.&lt;br /&gt;&lt;br /&gt;The subject of this post is UI, one of the most , if the most, important aspects of a desktop application. I've &lt;a href="http://nixps.blogspot.com/2009/08/desktop-ui-design.html"&gt;written before&lt;/a&gt; about how important, and how much work it is to get a UI right.&lt;br /&gt;We've invested a lot of time and effort to make the UI of NiXPS View v3.0 more efficient, and aesthetically pleasing.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Toolbar&lt;/b&gt;&lt;br /&gt;One of the things that you'll first notice when starting up the application, is the new toolbar:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_c1NiDXy7n5c/Srt57W2bCmI/AAAAAAAAAPM/UQoOIXAMmmU/s1600-h/toolbar.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 21px;" src="http://2.bp.blogspot.com/_c1NiDXy7n5c/Srt57W2bCmI/AAAAAAAAAPM/UQoOIXAMmmU/s400/toolbar.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5385031840104647266" /&gt;&lt;/a&gt;&lt;br /&gt;We have chosen not to fill this up with 'everything but the kitchen sink', like  a lot of applications tend to do, but in stead we have opted to only offer the most used features, and put all others on the menu. This makes the application look a lot less complex, which is good, as complexity alienates users. Advanced functionality can be discovered in the menus.&lt;br /&gt;&lt;br /&gt;So the toolbar contains:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;page down and page up&lt;br /&gt;&lt;li&gt;zoom in and out&lt;br /&gt;&lt;li&gt;the tools: pan, zoom, text select &amp; edit and the note tool&lt;br /&gt;&lt;li&gt;a button to toggle the sidebar&lt;br /&gt;&lt;li&gt;the quick search&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;These are the most important functions one need when interacting with an electronic document.&lt;br /&gt;We have decided against putting the 'print' in the toolbar, as it would add to the visual clutter, and everyone is accustomed to finding the print feature in the file menu.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Sidebar&lt;/b&gt;&lt;br /&gt;The sidebar contains all kinds of 'lists': an optional document outline (aka table of contents), page thumbnails, document thumbnails and the search results. These are very useful lists, but showing them by default make the UI too busy. We chose an approach to only show the sidebar when there is a reason for it (if the document has an outline, it will show by default; if the user searches, the results will be shown), otherwise it is hidden, but can be discovered by the user via the sidebar button.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Quick search&lt;/b&gt;&lt;br /&gt;Searching through a document is a very important function; we spend a lot of time speeding it up, and made sure it works well with large documents. The moment you start typing in the quick search control, the app will start searching, without blocking the UI. This is a very natural, and pleasing way to do a search. We also provide extensive feedback during the search, so the user knows what is going on when the search takes a long while, which can be the case for very large documents.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;OS specifics&lt;/b&gt;&lt;br /&gt;We carefully crafted the application to really 'fit in' the native OS it runs on.&lt;br /&gt;On Windows this means that we start-up with an empty windows, which is a drag target for opening files. Dropping a file on the icon will also open the file.&lt;br /&gt;The application will open documents in separate windows, as this gives a clear 1 file = 1 window metaphor, which we fee is more natural than an MDI interface, which quickly gives a 'cramped' and 'busy' feel.&lt;br /&gt;&lt;br /&gt;On OSX we make sure we do not show an empty window on start-up. We also implemented the proxy icon, which is a great way to map a document to it's place in the finder.&lt;br /&gt;Being a document centric app, we also made sure that starting in v3, XPS files can be viewed via QuickLook - all you need is the NiXPS View v3.0 installed on your Mac.&lt;br /&gt;&lt;br /&gt;Here's a small demo of our NiXPS View v3.0 running on Windows 7:&lt;br&gt;&lt;br /&gt;&lt;object width="600" height="450"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=6736035&amp;amp;server=vimeo.com&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=6736035&amp;amp;server=vimeo.com&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="600" height="450"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;&lt;a href="http://vimeo.com/6736035"&gt;NiXPS View v3.0 UI Demo&lt;/a&gt; from &lt;a href="http://vimeo.com/user930945"&gt;nixps&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-4218813262160021378?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/4218813262160021378/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=4218813262160021378' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/4218813262160021378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/4218813262160021378'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/09/nixps-view-30-features-ui.html' title='NiXPS View 3.0 features: UI'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_c1NiDXy7n5c/Srt57W2bCmI/AAAAAAAAAPM/UQoOIXAMmmU/s72-c/toolbar.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-1574051838507749810</id><published>2009-09-23T15:00:00.001+02:00</published><updated>2009-09-23T15:01:40.073+02:00</updated><title type='text'>PR online: NiXPS View v3.0 brings annotations, scripting and PDF/A conversion to XPS</title><content type='html'>&lt;a href="http://nixps.com/news.php?id=20090923"&gt;Here's&lt;/a&gt; the link to the PR.&lt;br /&gt;Download it in xps format &lt;a href="http://nixps.com/news/20090923.xps"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-1574051838507749810?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/1574051838507749810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=1574051838507749810' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/1574051838507749810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/1574051838507749810'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/09/pr-online-nixps-view-v30-brings.html' title='PR online: NiXPS View v3.0 brings annotations, scripting and PDF/A conversion to XPS'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-7152810771737980661</id><published>2009-09-18T17:36:00.004+02:00</published><updated>2009-09-18T17:58:25.196+02:00</updated><title type='text'>NiXPS View v3.0 released!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_c1NiDXy7n5c/SrOpHzL0vUI/AAAAAAAAAPE/gPgpDY_0MVQ/s1600-h/domore.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 330px;" src="http://1.bp.blogspot.com/_c1NiDXy7n5c/SrOpHzL0vUI/AAAAAAAAAPE/gPgpDY_0MVQ/s400/domore.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5382831931101855042" /&gt;&lt;/a&gt;&lt;br /&gt;Today we are releasing NiXPS View v3.0! &lt;br /&gt;We have worked hard to make this version the best version ever, and we are introducing a truckload of new and unique features:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Notes can be added on XPS documents&lt;br /&gt;&lt;li&gt;Scripts allow you to automate and extend&lt;br /&gt;&lt;li&gt;We've added a text correction tool&lt;br /&gt;&lt;li&gt;PDF conversion was enhanced, and we now also support PDF/A export&lt;br /&gt;&lt;li&gt;The UI has been reworked and polished, with a much improved Quicksearch and improved document interactivity with the support for links and a more natural pan tool&lt;br /&gt;&lt;li&gt;And much more!&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;For a short period of time we are offering this fantastic new version at a special launch price of USD 49 (EU 35)! &lt;br /&gt;(Existing v2.6 customers get this version for free.)&lt;br /&gt;&lt;br /&gt;Give it a try and let us know what you think!&lt;br /&gt;&lt;br /&gt;You can read more about this release &lt;a href="http://nixps.com/view3/"&gt;here&lt;/a&gt;.&lt;br /&gt;You can download a 30-day trial &lt;a href="http://nixps.com/trial_view3.html"&gt;here&lt;/a&gt;.&lt;br /&gt;You can buy a license &lt;a href="http://nixps.com/purchase.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-7152810771737980661?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/7152810771737980661/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=7152810771737980661' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/7152810771737980661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/7152810771737980661'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/09/nixps-view-v30-released.html' title='NiXPS View v3.0 released!'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_c1NiDXy7n5c/SrOpHzL0vUI/AAAAAAAAAPE/gPgpDY_0MVQ/s72-c/domore.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-5450195988722516770</id><published>2009-09-10T17:05:00.002+02:00</published><updated>2009-09-10T17:07:13.815+02:00</updated><title type='text'>Quick, look!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_c1NiDXy7n5c/SqkTrgj4UfI/AAAAAAAAAO8/HFMRmHYGUfM/s1600-h/quicklook.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 202px;" src="http://2.bp.blogspot.com/_c1NiDXy7n5c/SqkTrgj4UfI/AAAAAAAAAO8/HFMRmHYGUfM/s400/quicklook.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5379852868066497010" /&gt;&lt;/a&gt;&lt;br /&gt;We introduced the world's first XPS Macintosh viewer exactly 2 years ago (&lt;a href="http://nixps.com/news.php?id=20070911"&gt;more here&lt;/a&gt;, or &lt;a href="http://blogs.msdn.com/adrianford/archive/2007/09/07/more-nixps.aspx"&gt;here&lt;/a&gt;, or &lt;a href="http://www.printweek.com/news/738399/Mac-users-easy-route-XPS-NiXPS-v15/"&gt;here&lt;/a&gt;).&lt;br /&gt;We are very committed to the Mac, and to honour this we are introducing QuickLook support in our upcoming NiXPS View 3.0.&lt;br /&gt;Because, we really think you can do more with XPS!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-5450195988722516770?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/5450195988722516770/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=5450195988722516770' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/5450195988722516770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/5450195988722516770'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/09/quick-look.html' title='Quick, look!'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_c1NiDXy7n5c/SqkTrgj4UfI/AAAAAAAAAO8/HFMRmHYGUfM/s72-c/quicklook.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-7472671248614563921</id><published>2009-09-07T16:42:00.005+02:00</published><updated>2009-09-07T16:48:39.320+02:00</updated><title type='text'>NiXPS SDK powers future products of Dane Prairie Systems LLC</title><content type='html'>&lt;br&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.win2pdf.com"&gt;&lt;img target="_new" style=" margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 173px; height: 44px;" src="http://3.bp.blogspot.com/_c1NiDXy7n5c/SqUb-LqXvOI/AAAAAAAAAO0/jik4wQ68A9Q/s200/20090909_1.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5378736085060271330" /&gt;&lt;/a&gt;&lt;br&gt;&lt;br /&gt;NiXPS is proud to announce that Dane Prairie Systems LLC has chosen its NiXPS SDK v2.6.3 for inclusion in the next generation of their software products.&lt;br /&gt;Read more &lt;a href="http://nixps.com/news.php?id=20090909" target="_new"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-7472671248614563921?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/7472671248614563921/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=7472671248614563921' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/7472671248614563921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/7472671248614563921'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/09/nixps-sdk-powers-future-products-of.html' title='NiXPS SDK powers future products of Dane Prairie Systems LLC'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_c1NiDXy7n5c/SqUb-LqXvOI/AAAAAAAAAO0/jik4wQ68A9Q/s72-c/20090909_1.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-6732096747321406802</id><published>2009-09-03T17:55:00.003+02:00</published><updated>2009-09-03T18:01:21.914+02:00</updated><title type='text'>Javascript and XPS, a match made in heaven.</title><content type='html'>Javascript is pretty ubiquitous these days. Great for quick, usefull scripts.&lt;br /&gt;Like drawing a barcode on top of an XPS, for instance.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_c1NiDXy7n5c/Sp_oBl3QEGI/AAAAAAAAAOs/hvRIa69mT1s/s1600-h/barcode.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 294px;" src="http://4.bp.blogspot.com/_c1NiDXy7n5c/Sp_oBl3QEGI/AAAAAAAAAOs/hvRIa69mT1s/s400/barcode.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5377271594145026146" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Do more with XPS!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-6732096747321406802?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/6732096747321406802/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=6732096747321406802' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/6732096747321406802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/6732096747321406802'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/09/javascript-and-xps-match-made-in-heaven.html' title='Javascript and XPS, a match made in heaven.'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_c1NiDXy7n5c/Sp_oBl3QEGI/AAAAAAAAAOs/hvRIa69mT1s/s72-c/barcode.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-4736534896956970177</id><published>2009-09-02T18:02:00.005+02:00</published><updated>2009-09-02T18:08:44.877+02:00</updated><title type='text'>Meet our twins</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_c1NiDXy7n5c/Sp6XLt8r0HI/AAAAAAAAAOc/e2XzlI8WtDQ/s1600-h/mac.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 297px;" src="http://2.bp.blogspot.com/_c1NiDXy7n5c/Sp6XLt8r0HI/AAAAAAAAAOc/e2XzlI8WtDQ/s400/mac.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5376901232695431282" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_c1NiDXy7n5c/Sp6XUCIk7rI/AAAAAAAAAOk/0v6XDmrQFVw/s1600-h/pc.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 350px; height: 250;" src="http://1.bp.blogspot.com/_c1NiDXy7n5c/Sp6XUCIk7rI/AAAAAAAAAOk/0v6XDmrQFVw/s400/pc.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5376901375552974514" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Same genes, different character, equally loved.&lt;br /&gt;Our upcoming NiXPS View v3.0 for Mac and PC.&lt;br /&gt;&lt;br /&gt;Do more with XPS.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-4736534896956970177?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/4736534896956970177/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=4736534896956970177' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/4736534896956970177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/4736534896956970177'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/09/meet-our-twins.html' title='Meet our twins'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_c1NiDXy7n5c/Sp6XLt8r0HI/AAAAAAAAAOc/e2XzlI8WtDQ/s72-c/mac.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-3154377897760185716</id><published>2009-08-28T16:51:00.003+02:00</published><updated>2009-08-28T16:58:50.736+02:00</updated><title type='text'>NiXPS' offices on a 1611 AD map</title><content type='html'>I stumbled upon this gem: &lt;a href="http://www.wdl.org/en/item/2685"&gt;a map of low countries&lt;/a&gt; from 1611.&lt;br /&gt;It maps large parts of present day Belgium, The Netherlands, Luxembourg and the north of France.&lt;br /&gt;&lt;br /&gt;NiXPS is located in the area of Ghent, Belgium. And the town called '7.Eeken' (meaning in English:'7 oak trees'), is currently known as 'Zeveneken', and is about 1 km. from our office.&lt;br /&gt;&lt;br /&gt;Here's a detailed view, with our offices marked:&lt;br&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_c1NiDXy7n5c/SpfwToXhUOI/AAAAAAAAAOQ/ACkLMO7_8Mc/s1600-h/map.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 211px;" src="http://1.bp.blogspot.com/_c1NiDXy7n5c/SpfwToXhUOI/AAAAAAAAAOQ/ACkLMO7_8Mc/s400/map.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5375028900334227682" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;That map is almost 400 years old, and it's pretty detailed. Fascinating.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-3154377897760185716?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/3154377897760185716/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=3154377897760185716' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/3154377897760185716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/3154377897760185716'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/08/nixps-offices-on-1611-ad-map.html' title='NiXPS&apos; offices on a 1611 AD map'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_c1NiDXy7n5c/SpfwToXhUOI/AAAAAAAAAOQ/ACkLMO7_8Mc/s72-c/map.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-7376514651979777238</id><published>2009-08-27T14:34:00.003+02:00</published><updated>2009-08-27T14:35:32.538+02:00</updated><title type='text'>Do more with XPS!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_c1NiDXy7n5c/SpZ9Z-7v4_I/AAAAAAAAAOI/ZawsPJGd_bk/s1600-h/note.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 210px; height: 190px;" src="http://3.bp.blogspot.com/_c1NiDXy7n5c/SpZ9Z-7v4_I/AAAAAAAAAOI/ZawsPJGd_bk/s400/note.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5374621090657068018" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-7376514651979777238?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/7376514651979777238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=7376514651979777238' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/7376514651979777238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/7376514651979777238'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/08/do-more-with-xps.html' title='Do more with XPS!'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_c1NiDXy7n5c/SpZ9Z-7v4_I/AAAAAAAAAOI/ZawsPJGd_bk/s72-c/note.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-504795890431162718</id><published>2009-08-20T08:54:00.004+02:00</published><updated>2009-08-20T08:57:59.442+02:00</updated><title type='text'>PDF files that can only be opened by Adobe Reader</title><content type='html'>Apparently it's possible to create PDF files that can only be opened by the latest version of Adobe Reader&lt;br /&gt;More &lt;a href="http://www.4xpdf.com/2009/08/this-pdf-form-restricts-some-operations/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Talk about vendor lock-in.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-504795890431162718?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/504795890431162718/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=504795890431162718' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/504795890431162718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/504795890431162718'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/08/pdf-files-that-can-only-be-opened-by.html' title='PDF files that can only be opened by Adobe Reader'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-4408704556251176907</id><published>2009-08-16T14:48:00.003+02:00</published><updated>2009-08-16T15:04:05.963+02:00</updated><title type='text'>Desktop UI design</title><content type='html'>&lt;a href="http://www.brandonwalkin.com/blog/2009/08/10/managing-ui-complexity/"&gt;Here&lt;/a&gt;'s a nice article that touches some interesting toppics on UI design for desktop applications.&lt;br /&gt;&lt;br /&gt;The UI is one of the most important aspects of an application, and designing a UI that let's your user take advantage of all your brilliant code in a non-intrusive, elegant and comprehensible way, is very, very hard.&lt;br /&gt;There is a lot of software out there with horrible user interfaces, and we &lt;i&gt;really&lt;/i&gt; do not want to be part of that.&lt;br /&gt;Not a lot is published on the subject of UI design &amp; UI theory, so experience driven information like the one in the article is very helpful in designing a better user interface.&lt;br /&gt;&lt;br /&gt;Over at NiXPS we are in the midst of preparing a new release of our NiXPS View application, and we encountering a lot of these conundrums ourselves. We are building a better UI, and we are very happy with how our next release is getting along. I'm going to show you some of this in a next post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-4408704556251176907?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/4408704556251176907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=4408704556251176907' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/4408704556251176907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/4408704556251176907'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/08/desktop-ui-design.html' title='Desktop UI design'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-546498394152426441</id><published>2009-08-12T20:38:00.002+02:00</published><updated>2009-08-12T20:48:47.120+02:00</updated><title type='text'>Microsoft and Nokia team up</title><content type='html'>Microsoft and Nokia &lt;a href="http://arstechnica.com/microsoft/news/2009/08/microsoft-and-nokia-bringing-office-to-symbian-next-year.ars"&gt;announced&lt;/a&gt; a partnership around Office Mobile today.&lt;br /&gt;Microsoft is going to bring the Office Mobile to the Nokia handsets, which are mainly based on the Symbian operating system.&lt;br /&gt;&lt;br /&gt;This is interesting, as Microsoft competes against Nokia with their own Windows Phone (former Windows Mobile) OS software.&lt;br /&gt;On the other hand, it is not unusual for Microsoft to port it's software to other operating platforms,  Office runs on Mac for years.&lt;br /&gt;Also, Windows doesn't make a phone of their own, as such they are not directly competing against Nokia, which is mainly a handset maker (with a software portfolio - QT springs to mind).&lt;br /&gt;&lt;br /&gt;This is again a sign that the mobile computing space is heating up, it's an arena where the big corps are actively playing a lot of chess...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-546498394152426441?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/546498394152426441/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=546498394152426441' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/546498394152426441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/546498394152426441'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/08/microsoft-and-nokia-team-up.html' title='Microsoft and Nokia team up'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-4226401264469355657</id><published>2009-08-06T10:48:00.003+02:00</published><updated>2009-08-06T11:35:47.524+02:00</updated><title type='text'>XML issue, NiXPS SDK unaffected</title><content type='html'>The Register &lt;a href="http://www.theregister.co.uk/2009/08/06/xml_flaws/"&gt;reports&lt;/a&gt; the discovery of an XML flaw that appears to affect a lot of different XML libraries, as such it seems to be more of a design issue with XML, than a regular software bug.&lt;br /&gt;&lt;br /&gt;XPS contains a lot of XML, so it's an issue that is of interest to the XPS community.&lt;br /&gt;&lt;br /&gt;The details are scarce, but by looking at the references &lt;a href="https://www.cert.fi/en/reports/2009/vulnerability2009085.html"&gt;on the CERT advisory&lt;/a&gt; it seems to be related to the DTD an XML file can contain; and more specifically related to recursive DTD references.&lt;br /&gt;The Apache software foundation publishes a very popular XML parsing library, Xerces.&lt;br /&gt;They have implemented a fix, and &lt;a href="http://svn.apache.org/viewvc?view=rev&amp;revision=781488"&gt;the commit message&lt;/a&gt; appears to be: 'Avoid recursion when parsing simply nested DTD structures.' So we can safely assume that DTD recursion is at play here.&lt;br /&gt;&lt;br /&gt;Our NiXPS SDK does not contain a third party XML parsing library, as we regarded the XML processing very vital and core to XPS processing, that we decided not to use a third party library for this.&lt;br /&gt;&lt;br /&gt;The XML parsing implementation in the NiXPS SDK is immune to this DTD recursion issue.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-4226401264469355657?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/4226401264469355657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=4226401264469355657' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/4226401264469355657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/4226401264469355657'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/08/xml-issue-nixps-sdk-unaffected.html' title='XML issue, NiXPS SDK unaffected'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-4967400032730388770</id><published>2009-07-29T11:54:00.002+02:00</published><updated>2009-07-29T12:02:59.830+02:00</updated><title type='text'>Accenture chooses the NiXPS SDK</title><content type='html'>I do not have the habit of announcing every deal we make here at NiXPS, but last week we have received a purchase order from global consulting giant &lt;a href="http://www.accenture.com"&gt;Accenture&lt;/a&gt;. They are doing a project for one of their customers, and after careful evaluation, chose us.&lt;br /&gt;&lt;br /&gt;Accenture is one of the biggest customers NiXPS has to date, and  we are very pleased that they adopts the NiXPS technology for their XPS processing requirement.&lt;br /&gt;&lt;br /&gt;It shows that XPS is becoming a reality for those who are needing and building electronic document solutions. &lt;br /&gt;For NiXPS it is encouraging that we see that we are at the forefront of technolgy for editing, manipulating and converting XPS documents.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-4967400032730388770?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/4967400032730388770/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=4967400032730388770' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/4967400032730388770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/4967400032730388770'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/07/accenture-chooses-nixps-sdk.html' title='Accenture chooses the NiXPS SDK'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-523877015921149177</id><published>2009-07-23T14:08:00.004+02:00</published><updated>2009-07-23T17:40:03.021+02:00</updated><title type='text'>PDF: Flashy, but insecure again</title><content type='html'>&lt;center&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_c1NiDXy7n5c/SmhT5PaJZ-I/AAAAAAAAAN4/n05fSkfXBgM/s1600-h/flash.jpg"&gt;&lt;img style="float:center; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 124px; height: 67px;" src="http://4.bp.blogspot.com/_c1NiDXy7n5c/SmhT5PaJZ-I/AAAAAAAAAN4/n05fSkfXBgM/s400/flash.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5361627599238424546" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/center&gt;&lt;br /&gt;A brand new security exploit in PDF allows an attacker to plant malware on the computer of unsuspecting people receiving PDF documents, &lt;a href="http://www.theinquirer.net/inquirer/news/1469229/adobe-flash-flaws-exploited"&gt;read the overview here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Javascript is not the attack vector this time, it's the embedded Flash runtime mandated by the PDF 1.8 spec that presents itself useful to exploiters. &lt;br /&gt;&lt;br /&gt;Oh dear.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-523877015921149177?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/523877015921149177/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=523877015921149177' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/523877015921149177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/523877015921149177'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/07/pdf-flashy-but-insecure-again.html' title='PDF: Flashy, but insecure again'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_c1NiDXy7n5c/SmhT5PaJZ-I/AAAAAAAAAN4/n05fSkfXBgM/s72-c/flash.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-2564852605201110099</id><published>2009-07-21T13:28:00.002+02:00</published><updated>2009-07-21T13:55:09.336+02:00</updated><title type='text'>OpenXPS approved by ECMA</title><content type='html'>ECMA send out a &lt;a href="http://www.ecma-international.org/news/PressReleases/PR_Ecma_TC46_has_delivered_the_OpenXPS_Standard.htm"&gt;press release&lt;/a&gt; where they announce that OpenXPS has been formally approved as a standard:  &lt;a href="http://www.ecma-international.org/publications/standards/Ecma-388.htm"&gt;ECMA-388&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;It's good to have this vendor neutral standardization of the XPS specification.&lt;br /&gt;&lt;br /&gt;Of course, now we have the interesting situation wher all the software that is installed in the field adheres to the original (Microsoft's) XPS specification. Windows Vista en Windows 7 will not generate OpenXPS, but Microsoft's XPS for the time being (read more about Microsoft's stance &lt;a href="http://blogs.msdn.com/xps/archive/2009/07/16/hello-ecma-388-1st-edition.aspx"&gt;here&lt;/a&gt;).&lt;br /&gt;It is reasonable to assume that OpenXPS will become the defacto standard for XPS over time, but a lot of this depends on the appearance of devices and software that are supporting OpenXPS.&lt;br /&gt;&lt;br /&gt;NiXPS has been following the development of OpenXPS closely, and we are working on supporting it in our future products!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-2564852605201110099?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/2564852605201110099/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=2564852605201110099' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/2564852605201110099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/2564852605201110099'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/07/openxps-approved-by-ecma.html' title='OpenXPS approved by ECMA'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-7685851041103927452</id><published>2009-07-17T14:38:00.003+02:00</published><updated>2009-07-17T15:01:45.392+02:00</updated><title type='text'>Reducing PDF size with NiXPS SDK v2.6.3</title><content type='html'>Our latest SDK release has a few options which potentially reduce the size of a converted PDF.&lt;br /&gt;&lt;br /&gt;It's all about fonts. In some cases it is allowed in a PDF file not to embed fonts. This is the case for the so called 'Base 14' fonts, a list of 14 fonts that need not to be embedded. A PDF viewing or processing device is required to have this font available as part of its implementation.&lt;br /&gt;&lt;br /&gt;For very small, text centric, PDF files, the biggest contributor to file size is the embedded font. &lt;br /&gt;&lt;br /&gt;Of course, not embedding the font is potentially problematic, as this defeats the foundation that the document should be portable, and a such contain everything to be able to properly reproduce the document.&lt;br /&gt;&lt;br /&gt;Nonetheless, in some cases it is a tradeoff some people like to take, and in v2.6.3 we have a few options which help out.&lt;br /&gt;&lt;br /&gt;The first option is the "Base14FontEmbedding" option. If you set its value to "DoNotEmbed", the PDF converter will not embed the font when it is one of the base 14 set.&lt;br /&gt;&lt;br /&gt;The second option, "Base14SimilarFonts", goes even a bit further, as it will replace fonts that are similar to the base 14 set, by a base 14 font, and subsequently not embed it.&lt;br /&gt;&lt;br /&gt;Setting these options on documents that contain a lot of text in Helvetica, Times or Arial will yield significantly smaller PDF files.&lt;br /&gt;&lt;br /&gt;To summarize, use it like this:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; NOPackage lPackage = NOPackage.readPackageFromFile("in.xps");&lt;br /&gt; &lt;br /&gt; NOOptions lOptions = new NOOptions();&lt;br /&gt; lOptions.setOption("Base14FontEmbedding","DoNotEmbed");&lt;br /&gt; lOptions.setOption("Base14SimilarFonts","DoNotEmbed"); // only if you want to replace similar fonts by a base 14&lt;br /&gt; &lt;br /&gt; NOProgressReporter lReporter = new NOProgressReporter();&lt;br /&gt; lPackage.exportToPDFWithOptions("out.pdf", lReporter, lOptions);&lt;br /&gt; &lt;br /&gt; NOPackage.destroyPackage(ref lPackage);&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-7685851041103927452?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/7685851041103927452/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=7685851041103927452' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/7685851041103927452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/7685851041103927452'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/07/reducing-pdf-size-with-nixps-sdk-v263.html' title='Reducing PDF size with NiXPS SDK v2.6.3'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-7330256936444458141</id><published>2009-06-16T15:44:00.002+02:00</published><updated>2009-06-16T15:54:24.893+02:00</updated><title type='text'>Convert XPS to PDF/A</title><content type='html'>Our latest release of NiXPS SDK v2.6.3 features the ability to convert XPS to &lt;a href="http://en.wikipedia.org/wiki/PDF/A"&gt;PDF/A&lt;/a&gt;. PDF/A-1b - Level B compliance in Part 1 to be precise.&lt;br /&gt;&lt;br /&gt;To enable this, we have introduced a new API call: NOPackage.exportToPDFWithOptions.&lt;br /&gt;It takes in an NOOptions object instance, which is an object that allows you to control aspects of the XPS to PDF conversion process. It contains key/value pairs, which can be set by means of the NOOptions.setOption(key,value) call.&lt;br /&gt;&lt;br /&gt;Here is a code sample that demonstrates the conversion to PDF/A:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; NOPackage lPackage = NOPackage.readPackageFromFile("in.xps");&lt;br /&gt; &lt;br /&gt; NOOptions lOptions = new NOOptions();&lt;br /&gt; lOptions.setOption("PDF Conformance","PDF/A-1B");&lt;br /&gt; &lt;br /&gt; NOProgressReporter lReporter = new NOProgressReporter();&lt;br /&gt; lPackage.exportToPDFWithOptions("out.pdf", lReporter, lOptions);&lt;br /&gt; &lt;br /&gt; NOPackage.destroyPackage(ref lPackage);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Of course, this is supported in our C/C++ API (Mac OSX &amp; Windows 32/54 bit), but is also available in C#, VB.NET and the other .NET based languages.&lt;br /&gt;&lt;br /&gt;If you are working with the Windows Presentation Foundation, it is now very easy to convert your XAML content, via an XPSDocumentWriter, to PDF/A, by means of the NiXPS SDK.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-7330256936444458141?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/7330256936444458141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=7330256936444458141' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/7330256936444458141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/7330256936444458141'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/06/convert-xps-to-pdfa.html' title='Convert XPS to PDF/A'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-4882224342532260227</id><published>2009-06-15T10:56:00.003+02:00</published><updated>2009-06-15T12:44:57.330+02:00</updated><title type='text'>NiXPS SDK v2.6.3 released</title><content type='html'>We have released NiXPS SDK v2.6.3 today.&lt;br /&gt;This is a maintenance update, free for all current customers of the NiXPS SDK.&lt;br /&gt;&lt;br /&gt;We have invested a lot of time and effort in further optimizing the rendering and conversion, both speed and quality wise.&lt;br /&gt;As a result you'll notice quicker rendering and conversion performance, smaller output files and an overall quality boost.&lt;br /&gt;&lt;br /&gt;With v2.6.3 it is now becomes possible to generate PDF files that adhere to the PDF/A-1b ( ISO 19005-1:2005) standard.&lt;br /&gt;This is a PDF substandard intended to limit the scope of the PDF specification to yield PDF files that can be trusted to be archived for long time. Some customers are operating in a setting that have a PDF/A requirement, and this ability will enable them to fulfill this. I am going to run a separate post on how you can setup the NiXPS SDK to generate PDF/A, in stead of 'regular' PDF.&lt;br /&gt;&lt;br /&gt;The object API also gets a boost. Text selection operations are further optimized, which can yield speed increases of 5-10 times.&lt;br /&gt;&lt;br /&gt;And, being a maintenance update, we are also fixing a few bugs with this release.&lt;br /&gt;Almost all of them were  reported by our customers, which I would like to thank again for providing their feedback to us.&lt;br /&gt;A lot of customers are relying on our software in their products or server production setting, and the feedback we are getting allows us to further improve our software and provide a field tested, high quality SDK.&lt;br /&gt;&lt;br /&gt;You can find the changelog for this v2.6.3 release &lt;a href="http://nixps.com/changelog.html"&gt;here&lt;/a&gt;.&lt;br /&gt;You can apply for your trial version &lt;a href="http://nixps.com/library_apply.php"&gt;here&lt;/a&gt;. &lt;br /&gt;You'll receive a link to download the SDK.&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-4882224342532260227?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/4882224342532260227/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=4882224342532260227' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/4882224342532260227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/4882224342532260227'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/06/nixps-sdk-v263-released.html' title='NiXPS SDK v2.6.3 released'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-1796012287306506210</id><published>2009-06-12T09:30:00.003+02:00</published><updated>2009-06-12T09:41:00.952+02:00</updated><title type='text'>Windows 7 to be shipped in Europe without Internet Explorer</title><content type='html'>It has been &lt;a href="http://arstechnica.com/microsoft/news/2009/06/windows-7-to-be-shipped-in-europe-sans-internet-explorer.ars"&gt;reported&lt;/a&gt; that Windows 7 will be sold without Internet Explorer in the European Union.&lt;br /&gt;&lt;br /&gt;This is ridiculous.&lt;br /&gt;&lt;br /&gt;The EU closely monitors Microsoft, and rightly so. But this is not a good evolution.&lt;br /&gt;If anything has been proven the last couple of years, it is that even when Microsoft supplies an internet browser with Windows, there is still competition possible. The Firefox rise is a testament to this.&lt;br /&gt;&lt;br /&gt;Every OS that comes to the market now has an internet browser. It is like a file explorer, command shell, calculator, text editor, etc... Microsoft should be allowed to innovate in this space, and provide a browser with their OS.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-1796012287306506210?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/1796012287306506210/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=1796012287306506210' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/1796012287306506210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/1796012287306506210'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/06/windows-7-to-be-shipped-in-europe.html' title='Windows 7 to be shipped in Europe without Internet Explorer'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-4833786971983878384</id><published>2009-06-05T15:55:00.005+02:00</published><updated>2009-06-05T16:12:52.216+02:00</updated><title type='text'>New stuff coming for NiXPS SDK v2.6.3</title><content type='html'>Our next NiXPS SDK v2.6.3 will have some new features we have been working on:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;PDF/A: it will be possible to convert an XPS file to a PDF that adheres to the PDF/A-1b standard.&lt;br /&gt;&lt;li&gt;The ability to detect, and not subset, base 14 fonts when doing an XPS to PDF conversion. Which potentially reduces the resulting PDF file.&lt;br /&gt;&lt;li&gt;More control over the metadata stored in the resulting PDF.&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;We also did a lot of work to improve the quality, speed and memory use of the rendering, and the XPS processing in general.&lt;br /&gt;&lt;br /&gt;Expect the release next week. At the same time I will post an article on how the new functionality can be used.&lt;br /&gt;&lt;br /&gt;Have a nice weekend!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-4833786971983878384?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/4833786971983878384/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=4833786971983878384' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/4833786971983878384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/4833786971983878384'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/06/new-stuff-coming-for-nixps-sdk-v263.html' title='New stuff coming for NiXPS SDK v2.6.3'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-5810864673007162277</id><published>2009-06-05T09:21:00.004+02:00</published><updated>2009-06-05T16:11:51.121+02:00</updated><title type='text'>Last one about Adobe</title><content type='html'>Adobe has announced the steps it is going to taken with regards to the increasing amount of PDF security issues the world is being exposed to.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.adobe.com/asset/2009/05/adobe_reader_and_acrobat_secur.html"&gt;Here's the post&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;In summary, Adobe is going to do 3 things:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;b&gt;Code Hardening&lt;/b&gt;: (aka) From now on Adobe will start releasing code without bugs, really.&lt;br /&gt;&lt;li&gt;&lt;b&gt;Incident Response Process Improvements&lt;/b&gt;: (aka) Adobe will not wait weeks and weeks anymore before reacting on the next major security issue that pops with their software.&lt;br /&gt;&lt;li&gt;&lt;b&gt;Regular Security Update&lt;/b&gt;: (aka) Start your update engines! Adobe is going preparing an update treadmill so you can have all those valuable security patches quicker, and more regularly. &lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;This last one actually puzzles me a bit, because it's not that the 'Adobe Updater' is a silent app on my machines.&lt;br /&gt;&lt;br /&gt;Anyway, it's clear that the horse has left the stable, and Adobe is going in über damage control and starts to chase it.&lt;br /&gt;&lt;br /&gt;Fact is: with PDF more security troubles lie ahead, and Adobe admits this.&lt;br /&gt;Adobe says that they will be better prepared to react. &lt;br /&gt;Are you?&lt;br /&gt;&lt;br /&gt;(and now I'm going to get off Adobe's/PDF's back for a while)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-5810864673007162277?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/5810864673007162277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=5810864673007162277' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/5810864673007162277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/5810864673007162277'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/06/last-one-about-adobe.html' title='Last one about Adobe'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-3052997064634321071</id><published>2009-06-01T17:56:00.009+02:00</published><updated>2009-06-02T09:17:47.886+02:00</updated><title type='text'>Has PDF failed as a preferred document distribution format?</title><content type='html'>&lt;a href=""&gt;Has PDF failed as a preferred document distribution format?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Yes.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;It shows that PDF is ubiquitous and important enough that the bad guys see it as worthwhile to target&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;No.&lt;br /&gt;&lt;br /&gt;MP3, JPG and PNG are examples of equally ubiquitous formats that suffer less exploits. &lt;br /&gt;The PDF format allows Javascript payloads that execute when attempting to view the file, this can be put to use as a formidable vector for exploit code.&lt;br /&gt;PDF v1.8 viewers even contain a virtual machine to run flash programs.&lt;br /&gt;From the e-security perspective, a 'vanilla' PDF document should be treated as an unknown application.&lt;br /&gt;&lt;br /&gt;What to do?&lt;br /&gt;&lt;br /&gt;Stop using 'plain' PDF, enforce a sub standard like PDF/A, PDF/X or other from the rich PDF patchwork.&lt;br /&gt;Check out alternatives: XPS is a format that keeps behaving like a (fixed) document under all circumstances.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-3052997064634321071?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/3052997064634321071/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=3052997064634321071' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/3052997064634321071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/3052997064634321071'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/06/has-pdf-failed-as-preferred-document.html' title='Has PDF failed as a preferred document distribution format?'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-408039468572186753</id><published>2009-05-26T10:17:00.002+02:00</published><updated>2009-05-26T10:22:54.742+02:00</updated><title type='text'>The New Yorker cover painted on an iPhone</title><content type='html'>The cover of the New Yorker this week has been painted by an artist using only his phone (&lt;a href="http://www.newyorker.com/online/blogs/tny/2009/05/jorge-colombo-iphone-cover.html"&gt;read story here&lt;/a&gt;). It's nice to see how creative people always use and adapt technology, and use it to create beautiful things.&lt;br /&gt;Here's an animation how you see the picture come to life, because the software used has a 'capture' feature to record the artists work stroke by stroke.&lt;br /&gt;Imagine great masters like Vincent Van Gogh using a device like this, we would have a redo/undo stack of their paintings ;-)&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://c.brightcove.com/services/viewer/federated_f8/1827871374" bgcolor="#FFFFFF" flashVars="videoId=24059201001&amp;linkBaseURL=http://www.newyorker.com/video?videoID=24059201001&amp;playerId=1827871374&amp;viewerSecureGatewayURL=https://console.brightcove.com/services/amfgateway&amp;servicesURL=http://services.brightcove.com/services&amp;cdnURL=http://admin.brightcove.com&amp;domain=embed&amp;autoStart=false&amp;" base="http://admin.brightcove.com" name="flashObj" width="466" height="395" seamlesstabbing="false" type="application/x-shockwave-flash" swLiveConnect="true" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"&gt;&lt;/embed&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-408039468572186753?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/408039468572186753/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=408039468572186753' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/408039468572186753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/408039468572186753'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/05/new-yorker-cover-painted-on-iphone.html' title='The New Yorker cover painted on an iPhone'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-7277288471615849990</id><published>2009-05-21T09:12:00.008+02:00</published><updated>2009-05-26T10:13:09.519+02:00</updated><title type='text'>In Belgium nobody can hear you scream (or can they?)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_c1NiDXy7n5c/ShU2HOkyXII/AAAAAAAAANU/AkvtrD6Lw-8/s1600-h/Belgium_flag.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 360px; height: 240px;" src="http://2.bp.blogspot.com/_c1NiDXy7n5c/ShU2HOkyXII/AAAAAAAAANU/AkvtrD6Lw-8/s400/Belgium_flag.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5338232431116967042" /&gt;&lt;/a&gt;&lt;br /&gt;Belgium is a very small country in Western Europe, internationally it's known for its chocolate, for hosting the capital of the European Union, and having one of the most complicated, yet stable, governmental system known in the Western world.&lt;br /&gt;&lt;br /&gt;NiXPS is located in Ghent, Belgium. In the part we call 'Flanders' (like in 'Ned', yeah ;-)).&lt;br /&gt;Bruno Lowagie, the creator and head developer of &lt;a href="http://www.lowagie.com/iText/"&gt;iText&lt;/a&gt;,an open source PDF generating and manipulating library, is also a Belgian resident.&lt;br /&gt;We're both located in the area of Ghent, and I think we even studied at the same university (of Ghent).&lt;br /&gt;I don't know Bruno Lowagie personally, but I'm following his project because it's also software in the document space, and because it's nice to see another local having success with a software project.&lt;br /&gt;&lt;br /&gt;Now, Bruno Lowagie is having an encounter with our notorious tax authorities. I've been bitten by them in the past too.&lt;br /&gt;Of course all around the world everyone thinks they are paying too much taxes, and have a reserved attitude towards their respective taxmen. But believe me, Belgium is bad, seriously bad. &lt;br /&gt;&lt;br /&gt;Belgium has one of of the highest corporate tax and income tax rates in the world. And a very expensive social security system which lays another large percentage of taxation. It's not unusual to pay up to 60% of your income to tax and social security payments. This is ridiculous, but on the other side there are literally thousand of ways one can apply for subsidies, apply for special reductions, get benefits, etc... to try to offset the tax burden.&lt;br /&gt;As a result the taxation rules are so complex, they are published in a couple of 'yellowpages style' volumes.&lt;br /&gt;You actually need professional tax and legal counsel to work your way through it, and even the tax authorities admit that. Figuratively speaking, by filling a few forms this way, and not the other way, could cost you thousands and thousands of euros.&lt;br /&gt;&lt;br /&gt;Now the taxation officials in Belgium are really working overtime to make sure you are bombarded and taxed as much as possible by attempting to 'reclassify' and 'reinterperet' your income, and throw away business expenses, as so you pay as much taxes (and social security payments) as possible. They are also allowed to do this with your income and expenses up to 7 years back in time, so this is a very lucrative business for them, and as a result ensure you never have peace of mind.&lt;br /&gt;&lt;br /&gt;This is the context in which you have to read this:&lt;br /&gt;&lt;a href="http://www.techcrunch.com/2009/05/20/open-source-developer-intends-to-block-belgian-government-from-using-his-technology-over-tax-dispute/"&gt;Bruno Lowagie had a visit from the Belgian tax authorities&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I feel for him, as I've been there also, having to pay a ridiculous large sum of money that feels like the government is extorting money from you like some regular mob.&lt;br /&gt;I support him in his efforts, and I think it's a nice touch to blacklist all the different Belgian government bodies from enjoying from his work.&lt;br /&gt;&lt;br /&gt;This is a great, real-life, testament to how Belgium/Flanders treats it's innovative people.&lt;br /&gt;&lt;br /&gt;Good luck, Bruno!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-7277288471615849990?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/7277288471615849990/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=7277288471615849990' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/7277288471615849990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/7277288471615849990'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/05/in-belgium-nobody-can-hear-you-scream.html' title='In Belgium nobody can hear you scream (or can they?)'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_c1NiDXy7n5c/ShU2HOkyXII/AAAAAAAAANU/AkvtrD6Lw-8/s72-c/Belgium_flag.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-7229084078161952227</id><published>2009-05-12T16:34:00.003+02:00</published><updated>2009-05-12T16:50:57.529+02:00</updated><title type='text'>OpenXPS final draft released</title><content type='html'>A lot of things are happening around XPS the last couple of weeks:&lt;br /&gt;&lt;br /&gt;ECMA has posted the final draft of the OpenXPS specification on its website &lt;a href="http://www.ecma-international.org/memento/TC46-availabledocs.htm"&gt;here&lt;/a&gt;.&lt;br /&gt;This will be submitted to the June 2009 ECMA General Assembly for vote.&lt;br /&gt;If this draft will be accepted, then XPS will officially become and independent standard, which is great news for the format!&lt;br /&gt;&lt;br /&gt;Microsoft also announced that XPS will be part of Office 2007 Service Pack 2 by default, currently you either have to print to the MXDW or install an after market free plug-in to export XPS directly. No more of that with SP2!&lt;br /&gt;&lt;br /&gt;And I'm finally running Windows 7 RC, which has a revamped XPS viewer. It runs by default out of the browser, which I think is a good thing. The default XPS Viewer is a polished nice little app, great for viewing XPS, and raises the bar for NiXPS View.&lt;br /&gt;&lt;br /&gt;We are preparing a next version of our NiXPS View, and it's going to be truly fantastic. Very soon I will post some screenshots and an insider's perspective on what we're working on.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-7229084078161952227?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/7229084078161952227/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=7229084078161952227' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/7229084078161952227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/7229084078161952227'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/05/openxps-final-draft-released.html' title='OpenXPS final draft released'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-4280314665905664431</id><published>2009-04-29T15:45:00.002+02:00</published><updated>2009-04-29T16:02:43.400+02:00</updated><title type='text'>Javascript torpedo goes at it again</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_c1NiDXy7n5c/SfhdlKv031I/AAAAAAAAANM/fgHZIU6UrII/s1600-h/torpedo.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 270px;" src="http://3.bp.blogspot.com/_c1NiDXy7n5c/SfhdlKv031I/AAAAAAAAANM/fgHZIU6UrII/s400/torpedo.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5330113052114476882" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;No more than 2 months ago, I wrote about how the JavaScript feature of PDF is turning it into a weapon for malware creators (read &lt;a href="http://www.blogger.com/post-edit.g?blogID=27468065&amp;postID=1195293265162132438"&gt;here&lt;/a&gt;).&lt;br /&gt;Adobe patched their reader, but it looks like they will need to plug some more holes, as 2 new security issues have popped up involving again the embedded javascript ability of the the PDF format (info &lt;a href="http://www.theregister.co.uk/2009/04/28/adobe_reader_flaw/"&gt;here&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Fair enough, you need to be popular to attract the the attention of virus writers, but still it would be a lot harder for anyone to write a useful exploit, if the PDF wasn't helping so much with it being able to just execute stuff like it is an application.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-4280314665905664431?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/4280314665905664431/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=4280314665905664431' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/4280314665905664431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/4280314665905664431'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/04/javascript-torpedo-goes-at-it-again.html' title='Javascript torpedo goes at it again'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_c1NiDXy7n5c/SfhdlKv031I/AAAAAAAAANM/fgHZIU6UrII/s72-c/torpedo.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-4351883506764304500</id><published>2009-04-21T10:13:00.002+02:00</published><updated>2009-04-21T10:20:23.154+02:00</updated><title type='text'>Follow us on Twitter</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_c1NiDXy7n5c/Se2Al2k2xqI/AAAAAAAAANE/AYlDJWey8ss/s1600-h/twitter_logo_header.png"&gt;&lt;img style="float:center; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 155px; height: 36px;" src="http://1.bp.blogspot.com/_c1NiDXy7n5c/Se2Al2k2xqI/AAAAAAAAANE/AYlDJWey8ss/s200/twitter_logo_header.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5327055322042779298" /&gt;&lt;/a&gt;&lt;br /&gt;We're always looking to reach out to our customers and prospects. So I thought to give Twitter a go.&lt;br /&gt;Expect the latest updates and ramblings about NiXPS, software development, XPS and generally running a software business.&lt;br /&gt;And do not hesitate to post direct questions, we're here to help.&lt;br /&gt;So if you feel like it: follow NiXPS on Twitter, our name: nixps&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-4351883506764304500?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/4351883506764304500/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=4351883506764304500' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/4351883506764304500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/4351883506764304500'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/04/follow-us-on-twitter.html' title='Follow us on Twitter'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_c1NiDXy7n5c/Se2Al2k2xqI/AAAAAAAAANE/AYlDJWey8ss/s72-c/twitter_logo_header.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-7105450795581435302</id><published>2009-04-10T12:38:00.003+02:00</published><updated>2009-04-10T12:43:44.670+02:00</updated><title type='text'>RIPs should consume XPS natively</title><content type='html'>I'm mailing with someone who has trouble getting his XPS data printed on their digital presses. The RIPs cannot handle the XPS format, and so the customer needs to convert the files to PS via driver sofware, leading to gigantic PS files and more troubles down the flow.&lt;br /&gt;&lt;br /&gt;It shouldn't be like that.&lt;br /&gt;&lt;br /&gt;XPS is a perfectly fine format for a RIP to take in, it's well specified, and any conversion to an intermediate format like PS is bound to introduce trouble (huge files, slow performance, rendering issues, etc...).&lt;br /&gt;&lt;br /&gt;Good to read the EFI has included native support for XPS in the new release of their Micropress RIP, used in a lot of devices on the market (&lt;a href="http://www.efi.com/documents/products/production/efi-micropress/pdf/EFI_MicroPress_8_Brochure_UK_A4.pdf"&gt;link to brochure&lt;/a&gt;).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-7105450795581435302?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/7105450795581435302/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=7105450795581435302' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/7105450795581435302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/7105450795581435302'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/04/rips-should-consume-xps-natively.html' title='RIPs should consume XPS natively'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-3103543950969019390</id><published>2009-03-31T09:19:00.002+02:00</published><updated>2009-03-31T09:21:38.303+02:00</updated><title type='text'>NiXPS SDK v2.6.2 maintenance update released</title><content type='html'>We have release NiXPS SDK v2.6.2, which is a maintenance update.&lt;br /&gt;&lt;br /&gt;This is a release with bugfixes, optimizations and a few new features.&lt;br /&gt;&lt;br /&gt;One notable new feature is the fact that from now on you can reference the DLL in your .NET project.&lt;br /&gt;You need to reference the binaries that are located in the 'bin/dotnet' directory for this, as these are the only ones that contain the C# classes (the former glue code you could find in the .NET example).&lt;br /&gt;You should not need the C# glue code anymore.&lt;br /&gt;&lt;br /&gt;You can find the changelog for this v2.6.2 release &lt;a href="http://nixps.com/changelog.html"&gt;here&lt;/a&gt;.&lt;br /&gt;You can apply for your trial version &lt;a href="http://nixps.com/library_apply.php"&gt;here&lt;/a&gt;. &lt;br /&gt;You'll receive a link to download the SDK.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-3103543950969019390?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/3103543950969019390/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=3103543950969019390' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/3103543950969019390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/3103543950969019390'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/03/nixps-sdk-v262-maintenance-update.html' title='NiXPS SDK v2.6.2 maintenance update released'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-1283285881878568420</id><published>2009-03-19T15:35:00.005+01:00</published><updated>2009-03-19T15:49:07.922+01:00</updated><title type='text'>NiXPS assembly can now be referenced in .NET</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_c1NiDXy7n5c/ScJY5il_xrI/AAAAAAAAAM8/MCdhxBDygXg/s1600-h/assembly.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 231px;" src="http://2.bp.blogspot.com/_c1NiDXy7n5c/ScJY5il_xrI/AAAAAAAAAM8/MCdhxBDygXg/s400/assembly.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5314908255812568754" /&gt;&lt;/a&gt;&lt;br /&gt;A lot of our customers are using the NiXPS SDK in a .NET environment. &lt;br /&gt;As our SDK is essentially a 'native' (unmanaged) library, it can be used in .NET via managed/unmanaged interop.&lt;br /&gt;We have shielded this complexity for the user, and provide a C# object model that in its implementation calls further into the native NiXPS dll.&lt;br /&gt;&lt;br /&gt;Now, for v2.6.2 we went a step further and are releasing a fully integrated .NET assembly. &lt;br /&gt;This assembly is a class library that contains the object model, and has also the native NiXPS dll embedded.&lt;br /&gt;&lt;br /&gt;As a result a .NET developer doesn't need the C# glue objects anymore, he now only needs to reference the NiXPS assembly to be able to work with our SDK.&lt;br /&gt;&lt;br /&gt;(This will be part of the upcoming v2.6.2 release; the integrated .NET assemblies can be found in the bin/.net folder in the SDK archive.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-1283285881878568420?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/1283285881878568420/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=1283285881878568420' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/1283285881878568420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/1283285881878568420'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/03/nixps-assembly-can-now-be-referenced-in.html' title='NiXPS assembly can now be referenced in .NET'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_c1NiDXy7n5c/ScJY5il_xrI/AAAAAAAAAM8/MCdhxBDygXg/s72-c/assembly.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-8871258277499617052</id><published>2009-03-17T16:09:00.008+01:00</published><updated>2009-03-18T09:28:45.566+01:00</updated><title type='text'>Combine XPS documents: add header and footer</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_c1NiDXy7n5c/Sb_AhE0MxJI/AAAAAAAAAM0/FqtUMAFUkys/s1600-h/copyontop.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 217px;" src="http://2.bp.blogspot.com/_c1NiDXy7n5c/Sb_AhE0MxJI/AAAAAAAAAM0/FqtUMAFUkys/s400/copyontop.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5314177759781373074" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In a document workflow it is very common that different parts of a document come from separate sources. &lt;br /&gt;&lt;br /&gt;The typical example is the document flow of invoices.&lt;br /&gt;Generally invoices are generated by software that is tied to the accountancy department of a company. This invoice is then printed on company letterhead, and send out.&lt;br /&gt;&lt;br /&gt;Ideally: to keep documents fully electronic, this last stage, combine invoice and letterhead, needs to be done in software. And both XPS and NiXPS can come to the rescue here.&lt;br /&gt;&lt;br /&gt;First of all, getting an XPS version of an invoice out of your accounting software is very easy. With help of the free virtual XPS printer that is delivered with windows you can print from your software to an XPS file.&lt;br /&gt;Of course, in a document flow invoice generation is much more automated. Chances are the accounting software can be customized to print, or even an integration with .NET is possible, so XPS can be generated on the fly.&lt;br /&gt;&lt;br /&gt;Then combining this invoice with a company logo and a footer can be done with our upcoming NiXPS SDK v2.6.2 and the new function: copyPageOnTop().&lt;br /&gt;&lt;br /&gt;Literally in a few lines of C# it is possible to combine any number of XPS pages, the NiXPS SDK takes care of the housekeeping needed to do this.&lt;br /&gt;&lt;br /&gt;Let me walk you through an example for this; We have an invoice (invoice.xps) file, which we will combine with our company logo (logo.xps) and a footer (footer.xps).&lt;br /&gt;&lt;br /&gt;First thing to do in the function: open up all our XPS files:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public static void Main(string[] args)&lt;br /&gt;{&lt;br /&gt;    NOPackage lInvoice = NOPackage.readPackageFromFile("../testfiles/invoice.xps");&lt;br /&gt;    NOPackage lLogo = NOPackage.readPackageFromFile("../testfiles/logo.xps");&lt;br /&gt;    NOPackage lFooter = NOPackage.readPackageFromFile("../testfiles/footer.xps");&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The logo.xps has the logo in page 1. Our invoice is also a one pager; So to combine them we will copy page 1 of the logo.xps on top of page 1 of invoice.xps.&lt;br /&gt;This will return a handle to a NOXCanvas:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;    NOXCanvas lLogoCanvas=lInvoice.getDocument(0).getPage(0).copyPageOnTop(lLogo.getDocument(0).getPage(0));&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This NOXCanvas is a handle to the content that was inserted. &lt;br /&gt;This allows to do some customization: in this example we will apply a transformation matrix to scale the logo to 60%, and move it to position (30,30):&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;    lLogoCanvas.setRenderTransform("0.6,0,0,0.6,30,30");&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Same thing for the footer, copy page on top, and transform:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;    NOXCanvas lFooterCanvas = lInvoice.getDocument(0).getPage(0).copyPageOnTop(lFooter.getDocument(0).getPage(0));&lt;br /&gt;    lFooterCanvas.setRenderTransform("0.72,0,0,0.72,0,100");&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Write out the file and clean-up:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;    lInvoice.writePackageToFile("../output/out.xps");&lt;br /&gt;&lt;br /&gt;    NOPackage.destroyPackage(ref lInvoice);&lt;br /&gt;    NOPackage.destroyPackage(ref lLogo);&lt;br /&gt;    NOPackage.destroyPackage(ref lFooter);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;And that's it! &lt;br /&gt;&lt;br /&gt;&lt;i&gt;To download the SDK in trial: fill out &lt;a href="http://www.nixps.com/library_apply.php"&gt;this form&lt;/a&gt;, you'll receive a download link (and no spam).&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-8871258277499617052?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/8871258277499617052/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=8871258277499617052' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/8871258277499617052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/8871258277499617052'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/03/combine-xps-documents-add-header-and.html' title='Combine XPS documents: add header and footer'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_c1NiDXy7n5c/Sb_AhE0MxJI/AAAAAAAAAM0/FqtUMAFUkys/s72-c/copyontop.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-2483504109274507526</id><published>2009-03-10T21:09:00.001+01:00</published><updated>2009-03-10T21:11:07.380+01:00</updated><title type='text'>NiXPS Edit v2.6 reviewed at IT Enquirer</title><content type='html'>There's a review of our NiXPS Edit v2.6 XPS editor over at IT Enquirer: &lt;a href="http://www.it-enquirer.com/main/ite/more/nixps_xps/"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-2483504109274507526?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/2483504109274507526/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=2483504109274507526' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/2483504109274507526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/2483504109274507526'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/03/nixps-edit-v26-reviewed-at-it-enquirer.html' title='NiXPS Edit v2.6 reviewed at IT Enquirer'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-1033240860695227903</id><published>2009-02-26T08:43:00.002+01:00</published><updated>2009-02-26T08:49:31.720+01:00</updated><title type='text'>XPS: Sense Of Something Coming</title><content type='html'>&lt;i&gt;(I was contacted by the nice people over at &lt;a href="http://digitaldocuments.debenu.com/"&gt;digitaldocuments.debenu.com&lt;/a&gt; to write an article about XPS for their blog. This is the article, it is also published on &lt;a href="http://www.pdfpdfpdfpdf.com/2009/02/xps-sense-of-something-coming/"&gt;4xPDF&lt;/a&gt;)&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Introduction&lt;/b&gt;&lt;br /&gt;We are living in economic turbulent times, and everybody is into Web 2.0 (2.5?), social networking, new cloud services and rich internet application platforms and yet I want to talk about something so relatively low tech as an electronic document format. More specifically about an electronic document format with the boring name 'XML paper specification', or XPS for short.&lt;br /&gt;&lt;br /&gt;I understand that you would like to tune out, but hold on for a minute and let me finish my introduction here, and then decide.&lt;br /&gt;&lt;br /&gt;We take documents for granted, but look around in your world and notice we still tend to have a lot of paper documents around.&lt;br /&gt;With computers on the desktop came word processing software and printers. We adopted this 'en masse', to the effect that I can easily assume that most of the paper documents in your world are generated on a computer, and printed.&lt;br /&gt;We seem to have moved to electronic document generation almost exclusively. But we still print.&lt;br /&gt;&lt;br /&gt;Compared to document generation, using computers to share documents is far less developed. For a lot of good, practical reasons.&lt;br /&gt;We expect a document to stay properly laid out, using correct typography which we have developed over hundreds of years.&lt;br /&gt;Generating this with software is fairly easy, but when shared to others electronically, we cannot be certain that our recipient has the exact same software program, with the exact same configuration so that she will be able to see the document as it is intended.&lt;br /&gt;&lt;br /&gt;Everyone knows the irritating issues that come up when sharing native word processing files: changed fonts, text jumping around or other unwanted effects.&lt;br /&gt;To solve this we should move to an electronic document format that is really intended to be an 'electronic representation of a printed document'.&lt;br /&gt;With the focus on correct representation everywhere, instead of on editing.&lt;br /&gt;&lt;br /&gt;XPS is such a format. PDF too (more on that one later). Important to understand here is that when I am talking about 'electronic documents', I mean these 'fixed document equivalent to paper' formats, intended to be extremely reliable when it comes to representation. And as you'll see, we are not using these formats nearly enough, and as a result we print, print, print...&lt;br /&gt;&lt;br /&gt;&lt;b&gt;XPS&lt;/b&gt;&lt;br /&gt;The XML paper specification (XPS for short) is an electronic document format which aims to be a faithful representation of a printed document.&lt;br /&gt;It has a modern, rich graphical model. With full support for advanced typography, full color images, all kinds for graphic primitives, and more.&lt;br /&gt;It was developed by Microsoft, with the aid of print software specialist Global Graphics, and released in 2007 as part of Windows Vista.&lt;br /&gt;&lt;br /&gt;This means that you can generate XPS on Vista from any application. Even from an old Windows app from the nineties, it doesn't matter, as it works via a 'virtual printer driver'.&lt;br /&gt;Viewing is also available by default, so if you have Vista, you can view XPS files without needing to install any extra software.&lt;br /&gt;What's more, all components can also be downloaded and installed on Windows XP.&lt;br /&gt;&lt;br /&gt;The first implementations, and the specification, originated from Microsoft.&lt;br /&gt;But to allow a healthy ecosystem to develop, it is unacceptable for the format to be proprietary.&lt;br /&gt;To this end the XPS specification was made public by Microsoft, and handed over to the independent standards group ECMA to review, and take control of the further specification process (in ECMA's Technical Committee 46).&lt;br /&gt;This effectively allows XPS to grow into an open specification: nobody needs to pay any royalties to use XPS or to make software or hardware that work with XPS.&lt;br /&gt;It's also up to ECMA to grow the standard.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Microsoft's XPS goals&lt;/b&gt;&lt;br /&gt;Of course Microsoft have their own agenda around XPS.&lt;br /&gt;A lot of people seem to think this is to fight Adobe, but I believe there are various goals Microsoft wants to achieve, and that XPS is the key to them all.&lt;br /&gt;&lt;br /&gt;First of all it's all about printing on Windows. This was not an area of much innovation in the last couple of Windows releases. Groundwork had been laid down with Windows 95 (if not with Windows 3.1) by using the Graphical Display Interface (GDI) for printing. This means that printing on Windows works more or less the same as putting things on screen, with very similar api's.&lt;br /&gt;This works, but less and less so.&lt;br /&gt;Printers are very high resolution devices with incredible color possibilities, the GDI interface cannot take full advantage of this.&lt;br /&gt;The introduction of GDI+ mitigated the issues somewhat but fact of the matter remained: printing on windows needed major plumbing to become relevant again.&lt;br /&gt;&lt;br /&gt;For Vista Microsoft redesigned the printing path based on a very modern filter structure, and on a very powerful, graphically rich intermediate format: XPS.&lt;br /&gt;Do not underestimate this: this has an impact on every printer device manufacturer all over the world. The days of GDI/GDI+ print path are numbered, and the XPS print path is now the way to do printing on Windows.&lt;br /&gt;&lt;br /&gt;As an extra benefit, Windows now has something Mac OS X has had for ages with their print to PDF functionality: an electronic print-out format.&lt;br /&gt;Windows can print to an EMF/WMF file but these are very difficult and obscure files to share or archive and have all sorts of downsides.&lt;br /&gt;Starting with Vista, XPS fills this need.&lt;br /&gt;&lt;br /&gt;Secondly, it's about a unified description of graphics for applications and print.&lt;br /&gt;One of the few advantages of GDI was that the interface was the same for screen and for print. Microsoft decided that they wanted a similar situation but arranged this on another level. Their new user interface toolkit, Windows Presentation Foundation, drastically improves the graphic capabilities of the Windows platform. WPF works with a resource format, XAML, that amongst others allows the description of a UI. Microsoft chose to keep the XPS syntax very close to the XAML syntax (or vica versa). As a result some of the good things of GDI are kept: what you describe for print can be used on screen.&lt;br /&gt;This time not in the form of a programming interface but in the form of an open, standardized, XML based page description language.&lt;br /&gt;&lt;br /&gt;This is a concept that since the days of Next with Display Postscript makes a lot of sense. Printing and UI are fundamentally different things, but basic high level graphical elements are the same for both: text (and fonts), line drawing, images, etc...&lt;br /&gt;&lt;br /&gt;The third goal I believe Microsoft wants to achieve is to provide an electronic fixed page format platform for the Windows desktop. This opened a front against Adobe PDF. But then again, given the advantages that XPS brings on the other fronts mentioned, it doesn't make a lot of sense for Microsoft not to bring XPS more to the surface. With features like document outline, embedded links, etc... XPS can become the electronic document of choice for the Windows platform.&lt;br /&gt;And as Microsoft is really a platforms company they position XPS in this context also as a platform to build solutions on. Autodesk has done this with their DWFX format which uses the XPS format as a foundation.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;XPS' advantages over PDF&lt;/b&gt;&lt;br /&gt;But what would be the advantages for a consumer or business to adopt XPS?&lt;br /&gt;And moreover, with PDF being the de facto fixed format for the desktop, do we really need another format?&lt;br /&gt;&lt;br /&gt;The short answer: yes. Let me explain.&lt;br /&gt;&lt;br /&gt;XPS is made for print. The format is intended to be used natively by printer software and hardware.&lt;br /&gt;This has a few consequences: no dynamic content, no scripting support, no embedded movies, etc... None of that - XPS is pure for print.&lt;br /&gt;&lt;br /&gt;This is fantastic, as this ties the format as close to a printed page as possible. And that is what you really need if you were to throw away your paper documents and rely on the electronic version of it.&lt;br /&gt;You also do not want a lot of conversion to happen with you electronic document before it ends up on paper as every conversion is a risk to changes and loss of quality.&lt;br /&gt;If you for instance print a Word document on a regular non-XPS printer, the following conversions happen with your data:&lt;br /&gt;A .docx file gets converted by Word to GDI calls (conversion 1), then the GDI calls get converted by the printer driver to an EMF (or PCL, or PS) file (conversion 2), which gets converted by the printer to ink/toner on paper (conversion 3).&lt;br /&gt;&lt;br /&gt;As XPS printers can take in XPS natively you do away with conversion 1, and the conversion chain becomes:&lt;br /&gt;An .xps file gets converted by the printer to ink/toner on paper (only 1 conversion ).&lt;br /&gt;This is much more reliable. Printers are submitted to rigorous output testing so you can rely on the XPS getting converted to paper correctly.&lt;br /&gt;&lt;br /&gt;Note that PDF was not made for print, in fact in 1993 it was all about the web. Granted the format evolved considerably, exploding into a babylonian amount of 'sub standards' like PDF/X, PDF/A, etc... PDF is constantly being made suitable for print.&lt;br /&gt;Only on the very high-end you have output devices that can natively take in PDF, and these are very recent developments typically only possible the last couple of years.&lt;br /&gt;For the most of us printing on the desktop, PDF gets converted like this:&lt;br /&gt;A .pdf gets converted by Adobe Reader to GDI calls (conversion 1), then the GDI calls get converted by the printer driver to an EMF (or PCL, or PS) file (conversion 2), which gets converted by the printer to ink on paper (conversion 3).&lt;br /&gt;This is exactly the same as any other application file format and this is worse than XPS.&lt;br /&gt;&lt;br /&gt;XPS is also an open format and technically very modern and sane. It relies on open standards like zip, xml, tiff, png etc...&lt;br /&gt;Generating and parsing XPS is fairly easy, again something that can not be said for PDF.&lt;br /&gt;&lt;br /&gt;And to be frank: the main advantage for XPS is its potential ecosystem.&lt;br /&gt;All other qualities like the rich graphic model, the XML foundation, print qualities, etc... are all very important, but the real kicker is the fact that XPS comes along with Windows. Electronic documents are only going to work if we can all generate and view them reliably. Getting the required software to be able to do this in everybody's hands takes ages. Microsoft is uniquely positioned to be able to push XPS generation and viewing capabilities in a lot of people's homes and businesses via Windows. This is huge, and by doing this Microsoft planted the seeds of a very viable ecosystem.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;XPS' challenges&lt;/b&gt;&lt;br /&gt;Of course there are challenges for the format to become successful.&lt;br /&gt;&lt;br /&gt;Vista has not been a success. Only about 20% of the computer using population is running the OS and has the XPS generation and viewing capabilities.  Most of them are also consumers and you really need business uptake as these tend to be a lot more document intensive.&lt;br /&gt;However, this is a matter of time. The Windows marketshare may be erroding slightly, chances are that the coming years a lot of people will run Vista, or its successor Windows 7.&lt;br /&gt;Which, from an XPS standpoint, will be the same. As Windows 7 features the same XPS generation and viewing tools, albeit slightly improved (the XPS viewer is a real standalone app in 7, in Vista it is hosted in IE7).&lt;br /&gt;&lt;br /&gt;The format is used under the hood for XPS based printers, but the format will only shine when more applications are directly generating XPS.&lt;br /&gt;Starting with Windows 7 Microsoft is making it easier for Win32 developers to take advantage of XPS. A lot is again dependent on the ecosystem. When we will gradually become less dependent on XP and run more Vista or Windows 7, software vendors will be more inclined to take advantage of this new technology.&lt;br /&gt;&lt;br /&gt;And of course one of the big challenges is the market's resistance against Microsoft originating technologies.&lt;br /&gt;I get this a lot when talking to various people about XPS.&lt;br /&gt;And I understand the concern, but one needs to look at the facts and plan for the future.&lt;br /&gt;Microsoft knows it operates in a much different market than ten years ago.&lt;br /&gt;Standards need to be open, otherwise they won't be accepted anymore.&lt;br /&gt;Interoperability is important, as people do not want to get locked-in anymore.&lt;br /&gt;But everybody should still welcome a good, sound technology that aims to bring electronic document nirvana closer.&lt;br /&gt;&lt;br /&gt;&amp;copy; Nick De Roeck (nick@nixps.com); February 25th, 2009&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-1033240860695227903?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/1033240860695227903/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=1033240860695227903' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/1033240860695227903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/1033240860695227903'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/02/xps-sense-of-something-coming.html' title='XPS: Sense Of Something Coming'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-1195293265162132438</id><published>2009-02-23T14:49:00.006+01:00</published><updated>2009-02-23T15:20:40.700+01:00</updated><title type='text'>Executable code in documents leads to trouble</title><content type='html'>There's a malformed PDF file going around that takes advantage of a buffer overflow in the Adobe Reader v9 software in combination with the Javascript features of PDF. The result is your PC being taken over (&lt;a href="http://networkcomputing.in/Information-Security-023Feb009-Adobe-Warns-Of-Critical-Vulnerability-In-Acrobat-Reader.aspx"&gt;more here&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;The advice is to &lt;i&gt;disable Javascript&lt;/i&gt;, which prevents the attack. (PDF/-J?)&lt;br /&gt;&lt;br /&gt;Supporting programmable code in a document file format is a bad idea, in my opinion. As this effectively transforms something fairly static called 'a document' into something very dynamic called 'an application'.&lt;br /&gt;&lt;br /&gt;Please note that in this case a software bug (buffer overrun) gets exploited by the embedded, special crafted JavaScript code. Buffer overruns are sadly very common in released software (unchecked buffers), but they would typically only crash your application. By offering a means for anyone to run a script from inside a PDF file, the attacker could do all kinds of interesting stuff to maximize the damage. For instance the JavaScript in this attack checks which browser you run, so it can adapt its behaviour accordingly.&lt;br /&gt;&lt;br /&gt;Documents should not contain any code, or they should be treated like applications (and checked for viruses, etc...). &lt;br /&gt;&lt;br /&gt;XPS does not have any script support, so it regularly comes up in discussion as an argument &lt;i&gt;against&lt;/i&gt; XPS. This is ridiculous. Not having any programmability in your fixed document format is a &lt;i&gt;feature&lt;/i&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-1195293265162132438?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/1195293265162132438/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=1195293265162132438' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/1195293265162132438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/1195293265162132438'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/02/executable-code-in-documents-leads-to.html' title='Executable code in documents leads to trouble'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-5349813472017677384</id><published>2009-02-14T00:31:00.002+01:00</published><updated>2009-02-14T13:14:57.646+01:00</updated><title type='text'>1234567890 is now</title><content type='html'>At this current moment, Sat Feb 14 00:31:30 CET 2009 to be precise, the current Unix time is 1234567890. &lt;br /&gt;Unix time is a universal time format that is defined as the number of seconds elapsed since midnight Coordinated Universal Time (UTC) of January 1, 1970, not counting leap seconds. It is also returned by the Standard C Library function time().&lt;br /&gt;All very geeky, but if you're a programmer these things are part of the canon.&lt;br /&gt;Now, the extra geeky thing is that if you would ask a computer at this exact moment the Unix time, you would get: 1234567890. Which are all the numbers, in the exact order they can be found, on a keyboard.&lt;br /&gt;&lt;br /&gt;Ok - I have to get a life, because I seem to spend it quite a lot of it behind a computer ;-)&lt;br /&gt;&lt;br /&gt;Anyway: Happy Valentine's Day!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-5349813472017677384?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/5349813472017677384/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=5349813472017677384' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/5349813472017677384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/5349813472017677384'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/02/1234567890-is-now.html' title='1234567890 is now'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-1391622624729050477</id><published>2009-02-11T09:41:00.002+01:00</published><updated>2009-02-12T10:23:02.245+01:00</updated><title type='text'>PR: v2.6.1 releases</title><content type='html'>&lt;i&gt;February 10,2009&lt;/i&gt; - NiXPS releases today a new version of its unique, cross platform XPS tools facilitating the use of XPS in professional document management environments. More &lt;a href="http://nixps.com/news.php?id=20090210"&gt;here&lt;/a&gt;...&lt;br /&gt;&lt;br&gt;&lt;i&gt;Update: News media pick-up:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.seyboldreport.com/nixps-releases-future-driven-xps-tools-and-technology"&gt;Seybold&lt;/a&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.quickprinting.com/web/online/Industry-News-and-Trends/NiXPS-Releases-Future-driven-XPS-Tools-and-Technology/1$8976"&gt;Quick Printing&lt;/a&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.mactech.com/news/?p=1011637"&gt;MacTech&lt;/a&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.packagingessentials.com/grnews.asp?id=2009-02-10-18.54.19.000000"&gt;Packaging Essentials&lt;/a&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-1391622624729050477?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/1391622624729050477/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=1391622624729050477' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/1391622624729050477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/1391622624729050477'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/02/pr-v261-releases.html' title='PR: v2.6.1 releases'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-4417308401584367588</id><published>2009-01-28T13:28:00.002+01:00</published><updated>2009-01-28T13:35:17.593+01:00</updated><title type='text'>NiXPS Edit and View v2.6.1 released</title><content type='html'>We released brand new versions of our XPS desktop tools: NiXPS Edit &amp; NiXPS View.&lt;br /&gt;&lt;br /&gt;Notable changes:&lt;br /&gt;&lt;br /&gt;NiXPS View v2.6.1 now features PDF export.&lt;br /&gt;&lt;br /&gt;NiXPS Edit can now export XPS pages to SVG, and has a new interactive text editing tool which greatly facilitates text corrections.&lt;br /&gt;&lt;br /&gt;Head over to &lt;a href="http://nixps.com"&gt;our website&lt;/a&gt; for a trial download!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-4417308401584367588?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/4417308401584367588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=4417308401584367588' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/4417308401584367588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/4417308401584367588'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/01/nixps-edit-and-view-v261-released.html' title='NiXPS Edit and View v2.6.1 released'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-1177809181539449952</id><published>2009-01-19T10:25:00.002+01:00</published><updated>2009-01-19T10:35:00.017+01:00</updated><title type='text'>A Closer Look At The XPS Viewer In Windows 7</title><content type='html'>There's quite a bit of buzz about Windows 7, and also about the XPS support in Windows 7.&lt;br /&gt;Windows 7 contains the XPS virtual printer (MXDW) and a reworked XPS Viewer that is now by default a standalone application (in contract of the rather steange choice in Vista to host it always in Internet Explorer).&lt;br /&gt;&lt;br /&gt;I'm a regular reader of &lt;a href="http://digitaldocuments.debenu.com"&gt;the Digital Document blog from Debenu&lt;/a&gt;. It's primarily focused on PDF, but it holds a healthy, refreshing and open view on other things like XPS.&lt;br /&gt;And great debate: we're now having an exchange about the merits of PDF and XPS when pitched against each other. Follow it &lt;a href="http://digitaldocuments.debenu.com/2009/01/17/a-closer-look-at-the-xps-viewer-in-windows-7/"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-1177809181539449952?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/1177809181539449952/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=1177809181539449952' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/1177809181539449952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/1177809181539449952'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/01/closer-look-at-xps-viewer-in-windows-7.html' title='A Closer Look At The XPS Viewer In Windows 7'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-6353202558935757548</id><published>2009-01-08T15:10:00.002+01:00</published><updated>2009-01-08T15:15:08.432+01:00</updated><title type='text'>NiXPS SDK v2.6.1 update released</title><content type='html'>Today we are releasing NiXPS SDK v2.6.1, which is a maintenance update.&lt;br /&gt;&lt;br /&gt;Mainly bugfixes in this release, with one notable exception: the inclusion of the &lt;i&gt;NiXPS Printer driver&lt;/i&gt;, which in combination with our NiXPS Converter SDK, allows to convert filetypes to XPS.&lt;br /&gt;You can read more about using this printer driver in &lt;a href="http://nixps.blogspot.com/2008/12/convert-any-file-to-xps.html"&gt;this blogpost&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;You can find the changelog for this v2.6.1 release &lt;a href="http://nixps.com/changelog.html"&gt;here&lt;/a&gt;.&lt;br /&gt;You can apply for your trial version &lt;a href="http://nixps.com/library_apply.php"&gt;here&lt;/a&gt;. &lt;br /&gt;You'll receive a link to download the SDK.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-6353202558935757548?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/6353202558935757548/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=6353202558935757548' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/6353202558935757548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/6353202558935757548'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2009/01/nixps-sdk-v261-update-released.html' title='NiXPS SDK v2.6.1 update released'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-326546982837624764</id><published>2008-12-29T17:05:00.003+01:00</published><updated>2008-12-30T10:11:17.917+01:00</updated><title type='text'>2009: Out with the old, in with the new!</title><content type='html'>&lt;a href="http://en.wikipedia.org/wiki/Gregorian_calendar"&gt;The Gregorian Calendar&lt;/a&gt; we all love and use (note: shameless Western bias), is yet again forcing us within a few days to add another year to the counter, running the total up to 2009!&lt;br /&gt;&lt;br /&gt;Traditionally people tend to look back, evaluate and hope for the best in the future. My - this is very appropriate these days.&lt;br /&gt;&lt;br /&gt;2008 was an interesting year for NiXPS. We released tons of new software, travelled around the world to give demo's and we had the chance to meet  lot of interesting people and, most importantly, customers!&lt;br /&gt;It is great to see that XPS is slowly making progress, and more an more people are building fantastic products and applications around it. We have yet to see a big uptake of the format on the desktop, but I'm convinced that this will happen, sooner or later. &lt;br /&gt;&lt;br /&gt;This brings us to 2009. In more ways than one do we throw out the old and welcome the new!&lt;br /&gt;&lt;br /&gt;Not only a new year, but also a new team. NiXPS found a new motivated team of investors, who took the commitment to support NiXPS in continuing and expanding its business. This is fantastic news, and holds great promise for the years to come.&lt;br /&gt;2009 will probably be the year that Windows 7 will be released, which will strengthen the XPS ecosystem, as Windows 7 build upon the XPS foundation laid down with Windows Vista.&lt;br /&gt;There's a good chance that 2009 will also be the year of the formal ECMA approved XPS specification, the people over at TC46 are very busy with that.&lt;br /&gt;NiXPS will continue to improve its current products, and release some more. We have a lot of interesting projects scheduled for 2009, I hope to able to tell you more about this very soon.&lt;br /&gt;&lt;br /&gt;And I also hope for the world at large that we we will learn from the crisis that is upon is in 2008, and make a better future for all of us in 2009.&lt;br /&gt;&lt;br /&gt;Warm wishes from the NiXPS team to all of you, and may 2009 turn out be a '&lt;a href="http://en.wikipedia.org/wiki/Grand_cru"&gt;Grand Cru&lt;/a&gt;' for you!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-326546982837624764?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/326546982837624764/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=326546982837624764' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/326546982837624764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/326546982837624764'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2008/12/2009-out-with-old-in-with-new.html' title='2009: Out with the old, in with the new!'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-8502257075394493918</id><published>2008-12-15T10:56:00.011+01:00</published><updated>2008-12-15T18:02:14.556+01:00</updated><title type='text'>Convert any File to XPS!</title><content type='html'>People have been asking about how to convert all sorts of formats to XPS and now we're pleased to announce there is a way to do so.  All you need to do is install a printer driver and make one call to our library.&lt;br /&gt;&lt;br /&gt;Any file format that can be printed by a program on your system will be able to generate an XPS file without any user interaction and our library will trigger the necessary calls to do so.&lt;br /&gt;&lt;br /&gt;Let me explain what you need to do.&lt;br /&gt;&lt;br /&gt;Our next version of the library comes with a printer driver.  You need to install this printer driver on the system where you want to generate the XPS files.  Download and unzip our library.  In the Control Panel for your Printer you "Add a printer".&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_bysMikSzf9U/SUYv_ggeRGI/AAAAAAAAAHw/QeU-B9k8QGg/s1600-h/Capture1.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 250px;" src="http://1.bp.blogspot.com/_bysMikSzf9U/SUYv_ggeRGI/AAAAAAAAAHw/QeU-B9k8QGg/s320/Capture1.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5279960381242885218" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Add a local printer.  When you get the following dialog:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_bysMikSzf9U/SUY2N3s7o6I/AAAAAAAAAH4/IURPAvtdeAc/s1600-h/Capture2.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 250px;" src="http://3.bp.blogspot.com/_bysMikSzf9U/SUY2N3s7o6I/AAAAAAAAAH4/IURPAvtdeAc/s320/Capture2.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5279967225057092514" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;choose to create a new local port for it.  Pressing the Next button will prompt you for a suitable name.  Choose something like "C:/NiXPS/output.xps"&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_bysMikSzf9U/SUY2zljiazI/AAAAAAAAAIA/31-9-E6epb4/s1600-h/Capture3.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 250px;" src="http://1.bp.blogspot.com/_bysMikSzf9U/SUY2zljiazI/AAAAAAAAAIA/31-9-E6epb4/s320/Capture3.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5279967873020881714" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The prompt appears to choose a printer driver.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_bysMikSzf9U/SUY3Cjq58AI/AAAAAAAAAII/DpQMupdwcG0/s1600-h/Capture4.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 250px;" src="http://4.bp.blogspot.com/_bysMikSzf9U/SUY3Cjq58AI/AAAAAAAAAII/DpQMupdwcG0/s320/Capture4.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5279968130212950018" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Choose Have Disk... and when the dialog appears to insert the manufacturer's installation disk, click on Browse...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_bysMikSzf9U/SUY4tA121_I/AAAAAAAAAIQ/hRNegT79T-w/s1600-h/Capture5.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 169px;" src="http://3.bp.blogspot.com/_bysMikSzf9U/SUY4tA121_I/AAAAAAAAAIQ/hRNegT79T-w/s320/Capture5.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5279969959109646322" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now browse to the place where you just downloaded our library and in the folder driver choose the xdsmpl.inf file.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_bysMikSzf9U/SUZRFAffKkI/AAAAAAAAAIY/wlTSZYT8XnA/s1600-h/Capture6.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 236px;" src="http://4.bp.blogspot.com/_bysMikSzf9U/SUZRFAffKkI/AAAAAAAAAIY/wlTSZYT8XnA/s320/Capture6.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5279996759611746882" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Click OK and Next and give the printer a name:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_bysMikSzf9U/SUZRodys-AI/AAAAAAAAAIg/LlHQbxdDGHs/s1600-h/Capture7.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 250px;" src="http://2.bp.blogspot.com/_bysMikSzf9U/SUZRodys-AI/AAAAAAAAAIg/LlHQbxdDGHs/s320/Capture7.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5279997368772392962" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can accept the default to not share the printer.  Print a test page or skip that and just click Finish and you're all set:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_bysMikSzf9U/SUZSVMfYhBI/AAAAAAAAAIw/Ey06lRv42Mk/s1600-h/Capture8.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 250px;" src="http://1.bp.blogspot.com/_bysMikSzf9U/SUZSVMfYhBI/AAAAAAAAAIw/Ey06lRv42Mk/s320/Capture8.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5279998137222071314" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;What you have just done is install a printer driver like the (on Vista) preinstalled Microsoft XPS Document Writer that can print to XPS files.  The difference however is that this one is mute.  It won't come up and ask where to save the file and it won't open the XPS file afterward.&lt;br /&gt;&lt;br /&gt;That way it can be used to generate XPS documents from whatever files are printable on your system.  In other words if you have a file format you want to convert to XPS and you have an application that can print the file format you now have a solution to convert that format to XPS.&lt;br /&gt;&lt;br /&gt;From our library all it takes is one call:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;static public UInt32 convertToXPSViaPrinter(string pSourceFile,&lt;br /&gt;                                            string pDestinationFile,&lt;br /&gt;                                            string pPrinterOutputFile,&lt;br /&gt;                                            string pXPSPrinterDriverName,&lt;br /&gt;                                            UInt32 pTimeOut)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;You give it paths to the source file and the resulting destination file, you give it the location of the printers output file which is the one you set up while you were creating the local port and you give it the printer name you just installed.  All of that and a timeout in seconds so that when things go horribly wrong your system does not hang.  The method returns whether it was successful or not.  There is an example that uses this in the sample project in the SDK.&lt;br /&gt;&lt;br /&gt;That's it.  It should work on Windows XP and Windows Vista, both for 32 and 64 bit applications.&lt;br /&gt;&lt;br /&gt;Let us know what you think.&lt;br /&gt;kristof&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-8502257075394493918?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/8502257075394493918/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=8502257075394493918' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/8502257075394493918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/8502257075394493918'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2008/12/convert-any-file-to-xps.html' title='Convert any File to XPS!'/><author><name>Kristof Van Landschoot</name><uri>http://www.blogger.com/profile/11797093785528092995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_bysMikSzf9U/SUYv_ggeRGI/AAAAAAAAAHw/QeU-B9k8QGg/s72-c/Capture1.PNG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-8342716006456753245</id><published>2008-12-02T13:39:00.004+01:00</published><updated>2010-09-23T16:12:41.610+02:00</updated><title type='text'>WPF to PDF</title><content type='html'>&lt;i&gt;Update 09/23/2010: We have released a 100% managed SDK called NiPDF v1.0 which makes it even easier to go from WPF to PDF. Take a look at the code sample &lt;a href="http://nixps.com/nipdf/example0001.html"&gt;here&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;The Windows Presentation Foundation (WPF short) is the UI programming framework that Microsoft introduced with the release of .NET v2.0. It is a very comprehensive, and powerful UI model that seems to be &lt;a href="http://stackoverflow.com/questions/tagged/wpf"&gt;picking up steam&lt;/a&gt; in developer cycles.&lt;br /&gt;&lt;br /&gt;Creating an XPS file from a WPF &lt;i&gt;visual&lt;/i&gt; is very easy; if you combine this with our NiXPS SDK to convert XPS to PDF, you can very quickly add a nice PDF output feature to your WPF application.&lt;br /&gt;&lt;br /&gt;As a matter of fact I've gave it a try, and the following code snippit draws a WPF visual, converts it to XPS and then uses the NiXPS SDK to write out a pdf:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.ComponentModel;&lt;br /&gt;using System.Data;&lt;br /&gt;using System.Text;&lt;br /&gt;using System.Runtime.InteropServices;&lt;br /&gt;using System.Windows;&lt;br /&gt;using System.Windows.Media;&lt;br /&gt;using System.IO.Packaging;&lt;br /&gt;using System.IO;&lt;br /&gt;using System.Windows.Xps.Packaging;&lt;br /&gt;using System.Printing;&lt;br /&gt;using System.Windows.Xps;&lt;br /&gt;&lt;br /&gt;namespace NiXPSObjects &lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;class WPF2PDF&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;static Visual CreateVisual()&lt;br /&gt;{&lt;br /&gt;    const double Inch = 96;&lt;br /&gt;    DrawingVisual visual = new DrawingVisual();&lt;br /&gt;    DrawingContext dc = visual.RenderOpen();&lt;br /&gt;    Pen bluePen = new Pen(Brushes.Blue, 1);&lt;br /&gt;    dc.DrawRectangle(Brushes.Yellow, bluePen, new Rect(Inch / 2, Inch / 2, Inch * 1.5, Inch * 1.5));&lt;br /&gt;    Brush pinkBrush = new SolidColorBrush(Color.FromArgb(128, 255, 0, 255));&lt;br /&gt;    Pen blackPen = new Pen(Brushes.Black, 1);&lt;br /&gt;    dc.DrawEllipse(pinkBrush, blackPen, new Point(Inch * 2.25, Inch * 2), Inch * 1.25, Inch);&lt;br /&gt;    dc.Close();&lt;br /&gt;    return visual;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public static void Main(string[] args)&lt;br /&gt;{&lt;br /&gt; try&lt;br /&gt; {&lt;br /&gt;        // create XPS file based on a WPF Visual, and store it in a memorystream&lt;br /&gt;        MemoryStream lMemoryStream = new MemoryStream();&lt;br /&gt;        Package package = Package.Open(lMemoryStream, FileMode.Create);&lt;br /&gt;        XpsDocument doc = new XpsDocument(package);&lt;br /&gt;        XpsDocumentWriter writer = XpsDocument.CreateXpsDocumentWriter(doc);&lt;br /&gt;        writer.Write(CreateVisual());&lt;br /&gt;        doc.Close();&lt;br /&gt;        package.Close();&lt;br /&gt;&lt;br /&gt;        // now open this XPS stream in the NiXPS SDK, and export it as pdf&lt;br /&gt;        NOPackage lPackage = NOPackage.readPackageFromBuffer("file.xps", lMemoryStream.GetBuffer(), (uint) lMemoryStream.Length);&lt;br /&gt;        NOProgressReporter lReporter = new NOProgressReporter();&lt;br /&gt;        lPackage.getDocument(0).exportToPDF("file.pdf", lReporter);&lt;br /&gt;        NOPackage.destroyPackage(ref lPackage);&lt;br /&gt; } catch (NOException e)&lt;br /&gt; {&lt;br /&gt;  System.Console.Out.WriteLine( "EXCEPTION: 0x" + string.Format("{0:X}", e.getError()) );&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;As a WPF developer you are getting 2 important benefits here:&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;You can use the XPS as the printing output of your application. Giving your end-user a higher quality print-out.&lt;br /&gt;&lt;li&gt;Allowing your user to save the output as PDF and/or XPS, which are ideal formats for sharing. &lt;br /&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-8342716006456753245?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/8342716006456753245/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=8342716006456753245' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/8342716006456753245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/8342716006456753245'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2008/12/wpf-to-pdf.html' title='WPF to PDF'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-2386972030415508645</id><published>2008-11-25T15:28:00.005+01:00</published><updated>2008-11-25T15:39:04.499+01:00</updated><title type='text'>Draw onto an XPS file</title><content type='html'>Here's another example of the capabilities of our new NiXPS SDK v2.6.&lt;br /&gt;&lt;br /&gt;The NiXPS SDK v2.6 has the ability to do processing on existing XPS files. This means that you can modify, or in this case decorate, XPS files that are coming f.i. from a different source.&lt;br /&gt;In this example I demonstrate how easy it is to get access to the content stream of an XPS page, and as an example draw a red square on the page. &lt;br /&gt;This code could be a nice starting point for an application that would like to add a barcode, draw a watermark, etc...&lt;br /&gt;&lt;br /&gt;So, to start off, we are going to process a given XPS file, and write the result out to another location (in C#):&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public static void test_open_drawrectangle_save()&lt;br /&gt;{&lt;br /&gt; string pIn="../../examples/testfiles/Office2007_Powerpoint_Drawing_Fills_Texture.xps";&lt;br /&gt; string pOut="../../examples/output/open_drawrectangle_save.xps";&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Next, read the XPS file, and get a handler to the page, and page content.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; NOPackage lPackage = NOPackage.readPackageFromFile(pIn);&lt;br /&gt; // get first page&lt;br /&gt; NOPage lPage = lPackage.getDocument(0).getPage(0);&lt;br /&gt;&lt;br /&gt; // get content stream&lt;br /&gt; NOXFixedPage lContent = lPage.getFixedPage();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Now, let's do some drawing. We add a path, with a square geometry and in a transparant red&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; // append a rectangle&lt;br /&gt; // a rectangle is a path, we will add this in a seperate canvas (group)&lt;br /&gt; // and we will put this canvas at the end of the stack, so it will be displayed on top&lt;br /&gt; NOXPath lPath=lContent.createCanvas(lContent.getNumCanvas()).createPath(0);&lt;br /&gt; lPath.intialize();&lt;br /&gt;&lt;br /&gt; // geometry: (100,100)-(200,200)&lt;br /&gt; lPath.setData("M 100,100 L 200,100 L 200,200 L 100,200 Z");&lt;br /&gt;&lt;br /&gt; // color: ARGB - so full red, transparant overlay&lt;br /&gt; lPath.setFill("#99FF0000");&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;That's about it. Now save and close:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; // write the XPS file out&lt;br /&gt; lPackage.writePackageToFile(pOut);&lt;br /&gt;&lt;br /&gt; NOPackage.destroyPackage(ref lPackage);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The result is the input file, with a red, transparent square that lies over on the first page.&lt;br /&gt;As the NiXPS SDK uses XPS natively, the only change you'll find in the file is that square, all the rest is exactly the smae as the input document.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-2386972030415508645?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/2386972030415508645/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=2386972030415508645' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/2386972030415508645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/2386972030415508645'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2008/11/draw-on-xps-file.html' title='Draw onto an XPS file'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-8634727334796967621</id><published>2008-11-20T15:42:00.003+01:00</published><updated>2008-11-20T15:56:14.650+01:00</updated><title type='text'>HP Laserjet XPS driver</title><content type='html'>A lot of printers were released this year that support XPS printing, but most of them were big, 'copier' like, office machines.&lt;br /&gt;&lt;br /&gt;This month HP released an &lt;a href="http://h20000.www2.hp.com/bizsupport/TechSupport/SoftwareDescription.jsp?lang=en&amp;cc=US&amp;swItem=lj-65762-1&amp;prodTypeId=18972&amp;prodSeriesId=503548"&gt;XPS driver&lt;/a&gt; for their entry level &lt;a href="http://h10010.www1.hp.com/wwpc/be/nl/sm/WF06b/18972-18972-3328059-236263-236263-3662025-3662038.html"&gt;Laserjet P2030&lt;/a&gt; range. At around 175&amp;euro;, a good laser printer for mere mortals.&lt;br /&gt;&lt;br /&gt;This shows again that, albeit slowly, XPS is spreading.&lt;br /&gt;Developers will be able to leverage the fantastic new graphic capabilities that XPS brings to the Windows platform, and users will soon be able to take full advantage of the fact that both end-user and printer use the same file format. Resulting in less costly and error-prone document conversions, and true 'what you see is what you get' document printing on Windows.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-8634727334796967621?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/8634727334796967621/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=8634727334796967621' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/8634727334796967621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/8634727334796967621'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2008/11/hp-laserjet-xps-driver.html' title='HP Laserjet XPS driver'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-7867672627902475308</id><published>2008-11-13T20:25:00.004+01:00</published><updated>2008-11-14T11:49:57.251+01:00</updated><title type='text'>XPS Export to SVG</title><content type='html'>The following short demo video shows how you can write an app in C# in a few minutes that converts XPS file to SVG, using our new NiXPS SDK v2.6.&lt;br&gt;&lt;br /&gt;&lt;center&gt;&lt;br /&gt;&lt;object width="400" height="300"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=2240702&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=2240702&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/2240702"&gt;Using the NiXPS SDK in C#.&lt;/a&gt; from &lt;a href="http://vimeo.com/user930945"&gt;nixps&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;br /&gt;&lt;/center&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-7867672627902475308?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/7867672627902475308/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=7867672627902475308' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/7867672627902475308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/7867672627902475308'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2008/11/xps-export-to-svg.html' title='XPS Export to SVG'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-8513635238274134558</id><published>2008-11-12T15:24:00.006+01:00</published><updated>2008-11-12T17:30:25.552+01:00</updated><title type='text'>NiXPS SDK v2.6 Released!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_c1NiDXy7n5c/SRrnQs69X6I/AAAAAAAAALU/Hg0nJ0KC_2I/s1600-h/rel-2-6-box.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 185px;" src="http://4.bp.blogspot.com/_c1NiDXy7n5c/SRrnQs69X6I/AAAAAAAAALU/Hg0nJ0KC_2I/s320/rel-2-6-box.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5267776988285591458" /&gt;&lt;/a&gt;&lt;br /&gt;Today we are releasing a new version of our NiXPS software development kit: NiXPS SDK v2.6 (read the PR &lt;a href="http://nixps.com/news.php?id=20081112"&gt;here&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;As more and more customers are using .NET, we worked really hard in providing a much better C# interface.&lt;br /&gt;We already have a very elegant C++ object model, which allows you to do all kinds of high-level and low-level modifications to an XPS file, but in C# you were left with the base C api. The same power was there, but not very convenient to use.&lt;br /&gt;All of this changes now in the v2.6, as we have invested time and effort in offering the exact same object model for C# users, than the one that is (and keeps being) available for C++ users of the library.&lt;br /&gt;&lt;br /&gt;However, there are also goodies for C/C++ developers.&lt;br /&gt;&lt;br /&gt;We include a new conversion output: Scalable Vector Graphics (SVG), and made various improvements on the core technology based on feedback we have received from customers.&lt;br /&gt;&lt;br /&gt;As we are big proponents of learning by example, we also increased the amount of examples we are supplying in our SDK. We plan on bringing these on-line too.&lt;br /&gt;The examples are available for both C/C++ developers and C# developers.&lt;br /&gt;&lt;br /&gt;A lot of these examples are a result of feedback we get from prospects and customers. The information shared between our technical support and customers could benefit everyone working with, or thinking about working with, NiXPS software. &lt;br /&gt;That's why we are setting up a forum with the intentions to share information, experiences, questions, etc... about NiXPS software.&lt;br /&gt;I would like to invite you to join the &lt;a href="http://groups.google.com/group/nixps"&gt;NiXPS Google group&lt;/a&gt;. There is not much content there yet, but I'm sure this will change if more people join over time.&lt;br /&gt;&lt;br /&gt;Finally some more info about NiXPS SDK v2.6:&lt;br /&gt;A full overview of this new release, including &lt;a href="http://nixps.com/matrix_lib.html"&gt;a feature matrix&lt;/a&gt;, can be found &lt;a href="http://nixps.com/library.html"&gt;here&lt;/a&gt;.&lt;br /&gt;You can request a trial version by filling-in &lt;a href="http://nixps.com/library_apply.php"&gt;this form&lt;/a&gt;.&lt;br /&gt;Purchasing information can be found &lt;a href="http://nixps.com/purchase.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Try it out, and let us know what you think!&lt;br /&gt;&lt;br /&gt;PS. This v2.6 release is free for everyone under maintenance.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-8513635238274134558?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/8513635238274134558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=8513635238274134558' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/8513635238274134558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/8513635238274134558'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2008/11/nixps-sdk-v26-released.html' title='NiXPS SDK v2.6 Released!'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_c1NiDXy7n5c/SRrnQs69X6I/AAAAAAAAALU/Hg0nJ0KC_2I/s72-c/rel-2-6-box.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-720628861713242518</id><published>2008-11-04T08:50:00.004+01:00</published><updated>2008-11-04T08:53:47.930+01:00</updated><title type='text'>Happy Election Day!</title><content type='html'>&lt;img style="cursor:pointer;width: 400px; height: 252px;" src="http://1.bp.blogspot.com/_c1NiDXy7n5c/SQ__JNJH2ZI/AAAAAAAAALM/xAn0jGou3fU/s400/american-flag.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5264707023031228818" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-720628861713242518?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/720628861713242518/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=720628861713242518' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/720628861713242518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/720628861713242518'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2008/11/happy-election-day.html' title='Happy Election Day!'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_c1NiDXy7n5c/SQ__JNJH2ZI/AAAAAAAAALM/xAn0jGou3fU/s72-c/american-flag.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-5124406431374554304</id><published>2008-11-03T11:14:00.004+01:00</published><updated>2008-11-07T09:18:05.636+01:00</updated><title type='text'>XPS in Windows 7</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_c1NiDXy7n5c/SQ7PvtT4iII/AAAAAAAAALE/pN1Djvkl6Fc/s1600-h/def-thumb.jpg"&gt;&lt;img style="float:left; margin:0 20px 20px 0;cursor:pointer; cursor:hand;width: 320px; height: 283px;" src="http://3.bp.blogspot.com/_c1NiDXy7n5c/SQ7PvtT4iII/AAAAAAAAALE/pN1Djvkl6Fc/s320/def-thumb.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5264373432966482050" /&gt;&lt;/a&gt;&lt;br /&gt;Last week Microsoft held its Professional Developer Conference (PDC) in Los Angeles. &lt;br /&gt;One of the highlights of the show was Windows 7, Microsoft's Vista sucessor.&lt;br /&gt;Here a NiXPS we're of course interested in Microsoft's roadmap for XPS, and we were able to find some info on this.&lt;br /&gt;&lt;br /&gt;Windows 7 will evolve on the foundations that are being layed out by Vista, as such the printing path in 7 will be XPS based, as it is now in Vista.&lt;br /&gt;&lt;br /&gt;The XPS Viewer in Windows 7 will get a makeover, Wictor Wilen describes this more in detail in his &lt;a href="http://www.wictorwilen.se/Post/XPS-support-in-Windows-7.aspx"&gt;blog&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Adrian Ford has given an extensive presentation on the PDC about XPS in Windows 7, and how it allows you to bridge the gap between documents an printing. You can watch it &lt;a href="http://channel9.msdn.com/pdc2008/PC15/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Update: the folks over at the XPS blog have published an overview of the &lt;a href="http://blogs.msdn.com/xps/archive/2008/11/06/xps-opc-support-in-windows-7.aspx"&gt;new XPS things to be expected for Windows 7&lt;/a&gt;.&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-5124406431374554304?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/5124406431374554304/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=5124406431374554304' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/5124406431374554304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/5124406431374554304'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2008/11/xps-in-windows-7.html' title='XPS in Windows 7'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_c1NiDXy7n5c/SQ7PvtT4iII/AAAAAAAAALE/pN1Djvkl6Fc/s72-c/def-thumb.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-8474575972215215335</id><published>2008-10-15T11:15:00.002+02:00</published><updated>2008-10-15T11:18:35.664+02:00</updated><title type='text'>There are lies, damn lies and benchmarks.</title><content type='html'>One of our competitors have published benchmark results regarding their XPS viewing software.&lt;br /&gt;To much of anyone's surprise the study reveals that their solution is superior to every other solution on the market today! &lt;br /&gt;Both in terms of features, and in performance and quality of rendering.&lt;br /&gt;&lt;br /&gt;Ok.&lt;br /&gt;&lt;br /&gt;The document presents a feature comparison. But it leaves out the numerous features (like pdf conversion, editing, unlimited Zoom, etc...) our competitor's product doesn't have, but some of the other products that were tested do have. (Of course, we need to speculate on this, as the competitor's product is not generally available - it cannot be downloaded for trial, nor purchased from their site).&lt;br /&gt;&lt;br /&gt;The document also contains benchmark tests.&lt;br /&gt;It's not very difficult to make sure that your application performs well on a set of test files.&lt;br /&gt;What matters is if you perform well on the files that actual users are generating and sharing. And I seriously doubt that the benchmark in question is a good test for that. &lt;br /&gt;&lt;br /&gt;I've been following the XPS market for quite a while now, one thing this market does seem to have in abundance are benchmark suites.&lt;br /&gt;&lt;br /&gt;But the thing is, benchmarks really don't tell you anything.&lt;br /&gt;&lt;br /&gt;They don't tell you that the tested software runs great on your files.&lt;br /&gt;It tells you it runs great on the test set.&lt;br /&gt;And if a vendor publishes these results, you bet that they will have made sure that their software performs well one these few files.&lt;br /&gt;&lt;br /&gt;It's a debatably tactic to discredit competitors.&lt;br /&gt;&lt;br /&gt;The relevancy of this to you as a customer I think is not that great.&lt;br /&gt;I wouldn't buy the snake oil.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-8474575972215215335?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/8474575972215215335/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=8474575972215215335' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/8474575972215215335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/8474575972215215335'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2008/10/there-are-lies-damn-lies-and-benchmarks.html' title='There are lies, damn lies and benchmarks.'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-1272443375113319147</id><published>2008-10-13T11:49:00.004+02:00</published><updated>2008-10-13T12:45:02.471+02:00</updated><title type='text'>NiXPS SDK by example: selecting and enumerating objects on an XPS page</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_c1NiDXy7n5c/SPMhUfCGfOI/AAAAAAAAAIc/lCPSZAteN1M/s1600-h/boxshot.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_c1NiDXy7n5c/SPMhUfCGfOI/AAAAAAAAAIc/lCPSZAteN1M/s400/boxshot.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5256581825882914018" /&gt;&lt;/a&gt;&lt;br /&gt;The NiXPS SDK provides a an object model of the XPS page content to its users.&lt;br /&gt;This has the nice effect that objects can be refered to by their ID, and all sorts of other nice things become possible like selections etc...&lt;br /&gt;&lt;br /&gt;I would like to illustrate some of these aspects via an example that I've sent to a customer the other day.&lt;br /&gt;This customer is looking for ways to get hold of the geometrics of all the objects on an XPS page, and wants to do further calculations based on that.&lt;br /&gt;This is fairly easy to do with our NiXPS SDK v2.5.3, and I'll describe the example and code here (in C++).&lt;br /&gt;&lt;br /&gt;First - some housekeeping: opening a file, and getting a handler to page we're interested in:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;void test_walk_content(ostream &amp;os)&lt;br /&gt;{&lt;br /&gt; NOPackage *lPackage=NOPackage::readPackageFromFile("../testfiles/Virtual_PC_Technical_Overview_2007.xps");&lt;br /&gt; &lt;br /&gt; // first document, first page&lt;br /&gt; NODocument lDoc=lPackage-&gt;getDocument(0);&lt;br /&gt; NOPage lPage=lDoc.getPage(0);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I use a test file here that I pulled from the internet. &lt;br /&gt;Next, we need to make sure that the NiXPS library calculates the geometric information for the particular page.&lt;br /&gt;Currently this is a by-product of rendering, so we instruct the library to render to a very small buffer.&lt;br /&gt;(In v2.6 we are going to decouple geometric calculation from rendering.)&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; // render to calculate bounding boxes&lt;br /&gt; UInt32 lBufferLength = 10 * 10 * 3;&lt;br /&gt; UInt8 *lBuffer = (UInt8 *) malloc(lBufferLength);&lt;br /&gt; memset(lBuffer,0,lBufferLength);&lt;br /&gt; lPage.renderToImage(lBuffer,10,10,true);&lt;br /&gt; free(lBuffer);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Next we select everything on the page, and get hold of the selections list, which is a NOSelection type:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; // select all content on the page&lt;br /&gt; lPage.selectAll();&lt;br /&gt; // get selection&lt;br /&gt; NOSelection lSelection = lPage.getCopyOfSelection();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;With this NOSelection type, we can now enumerate all objects:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; // enumerate the selection, get the boundng box (in XPS document coordinates), and&lt;br /&gt; // print this out, together with the type of object and its ID&lt;br /&gt; UInt32 lNumberOfSelectedObjects = lSelection.getNumberOfSelectedObjects();&lt;br /&gt; UInt32 i=0; for (;i&amp;lt;lNumberOfSelectedObjects;i++)&lt;br /&gt; {&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;For every selected object, we get the bounding box&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  NOBase lSelectedObject = lSelection.getSelectedObject(i);&lt;br /&gt;  NCommon::doubleRect lRect = lPage.getBoundingBox(lSelectedObject.mID);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;And we find out the type, and store that in a string for printing it out later:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  std::string lType="unknown";&lt;br /&gt;  switch (lSelectedObject.mType)&lt;br /&gt;  {&lt;br /&gt;   case xPath:  lType="Path"; break;&lt;br /&gt;   case xGlyphs: lType="Glyphs"; break;&lt;br /&gt;   default:  lType="SomethingElse"; break;&lt;br /&gt;  }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;We now summerize everything by printing it out, this is also the end of our loop:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  os &lt;&lt; i &lt;&lt; ": ID:" &lt;&lt; lSelectedObject.mID &lt;&lt; " Type:" &lt;&lt; lType &lt;&lt; " bbox [" &lt;&lt; lRect.mTop &lt;&lt; "," &lt;&lt; lRect.mBottom &lt;&lt; "," &lt;&lt; lRect.mLeft &lt;&lt; "," &lt;&lt; lRect.mRight &lt;&lt; "]" &lt;&lt; std::endl;&lt;br /&gt; }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;and it also concludes our function&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;There is a lot of powerful functionality like this in our NiXPS SDK, everything is listed in our &lt;a href="http://nixps.com/library/rel-2-5/"&gt;api documentation&lt;/a&gt;.&lt;br /&gt;But an API reference doesn't really have the same illustrative power, as a real code example holds.&lt;br /&gt;That's why we ship code examples in our SDK, and continue to enhance this by adding more samples to the SDK.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-1272443375113319147?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/1272443375113319147/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=1272443375113319147' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/1272443375113319147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/1272443375113319147'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2008/10/nixps-sdk-by-example-selecting-and.html' title='NiXPS SDK by example: selecting and enumerating objects on an XPS page'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_c1NiDXy7n5c/SPMhUfCGfOI/AAAAAAAAAIc/lCPSZAteN1M/s72-c/boxshot.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-4627507504297026572</id><published>2008-10-09T08:59:00.003+02:00</published><updated>2008-10-09T09:09:57.905+02:00</updated><title type='text'>NiXPS SDK v2.5.3 released</title><content type='html'>We released a maintenance update for our SDK: NiXPS SDK v2.5.3.&lt;br /&gt;&lt;br /&gt;The release contains mainly bug fixes, but also a new API call to generate a PDF file from a multi-document XPS package in one go. This was requested by a customer, and we felt that it makes a lot of sense to add a such a convenience call to the API.&lt;br /&gt;&lt;br /&gt;You can find the changelog for this v2.5.3 release &lt;a href="http://nixps.com/changelog.html"&gt;here&lt;/a&gt;.&lt;br /&gt;You can apply for your trial version &lt;a href="http://nixps.com/library_apply.php"&gt;here&lt;/a&gt;. &lt;br /&gt;You'll receive a link to download the SDK.&lt;br /&gt;&lt;br /&gt;I would also like to take this opportunity to thank our customers.&lt;br /&gt;Your valuable feedback allows us to build an even better product!&lt;br /&gt;Keep sending your feedback out our way!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-4627507504297026572?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/4627507504297026572/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=4627507504297026572' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/4627507504297026572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/4627507504297026572'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2008/10/nixps-sdk-v253-released.html' title='NiXPS SDK v2.5.3 released'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-468830478527466907</id><published>2008-09-12T12:31:00.005+02:00</published><updated>2008-09-12T15:59:59.374+02:00</updated><title type='text'>XPS Variable Data example with the NiXPS SDK</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_c1NiDXy7n5c/SMpsKUSBLjI/AAAAAAAAAIU/D1Md_-WuQWc/s1600-h/replace.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_c1NiDXy7n5c/SMpsKUSBLjI/AAAAAAAAAIU/D1Md_-WuQWc/s400/replace.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5245123640525139506" /&gt;&lt;/a&gt;&lt;br /&gt;The XPS file format lends itself very good for so-called variable data applications.&lt;br /&gt;Roughly defined, variable data applications use the process of taking a template document, and generating different copies of this template, each containing some variable content. This could be text, but also graphics like images.&lt;br /&gt;Typically the variable content comes from a database.&lt;br /&gt;If these generated documents are also printed out, then people tend to talk about variable data printing(VDP).&lt;br /&gt;&lt;br /&gt;Some real world examples of variable data processing:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Invoices. The base invoice layout stays the same, but the content changes depending on who and what.&lt;br /&gt;&lt;li&gt;Personalized direct marketing pieces. You know, these 'Hi Mike, you have won $10.000!', and variants ;-)&lt;br /&gt;&lt;li&gt;Bills. For instance mobile phone bills, or credit card bills.&lt;br /&gt;&lt;li&gt;Ads. Some real estate ads for instance have a similar layout, only the picture and the description of the property changes.&lt;br /&gt;&lt;li&gt;All sorts of custom paperwork like insurance policies or contracts, where most of the content is always the same, just some particular info that needs to change for each copy.&lt;br /&gt;&lt;li&gt;Etc...&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;It's all about combining graphical rich documents with data pulled from a database.&lt;br /&gt;&lt;br /&gt;Now XPS is a format that really shines here, more on that below.&lt;br /&gt;I will first demonstrate how to implement this using our NiXPS SDK.&lt;br /&gt;&lt;br /&gt;Generating an XPS template is very easy. Either you can export your template document directly from your application (Office 2007 allows this), or otherwise you can print to an XPS file with the free XPS document writer that Microsoft ships with Vista (separate free download for XP).&lt;br /&gt;Make sure you put some placeholders in the content where you want the variable data to go.&lt;br /&gt;&lt;br /&gt;In our example we use a fax cover sheet in Word, where the sender, recipient, subject, etc... are all replaced with placeholders called TAG_TO, TAG_FROM, etc...&lt;br /&gt;Saving this to XPS is a snap with the XPS export plug-in in Word 2007.&lt;br /&gt;&lt;br /&gt;Now, we will use our NiXPS library from .NET to do the variable data processing.&lt;br /&gt;Data can be stored in various ways, and I'm sure that pulling them into a .NET environment will not be that difficult. In this example I use a fixed set of data, as I want to demonstrate NiXPS variable data features, not database access functionality.&lt;br /&gt;&lt;br /&gt;To try this out you need to download our NiXPS SDK v2.5.2, you can apply for a trial version &lt;a href="http://nixps.com/library_apply.php"&gt;here&lt;/a&gt;.&lt;br /&gt;You will receive a link via e-mail which gives you access to our SDK.&lt;br /&gt;&lt;br /&gt;So, what we need is a few lines of C# code to do the variable data processing:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;// This routine replaces a given string in a document.&lt;br /&gt;// It detects if a font is subset, and replaces the font.&lt;br /&gt;static void doReplaceText(NOHandler pDoc, string pSearch, string pReplace, string pFontSubstitute)&lt;br /&gt;{&lt;br /&gt;    NOVectorHandler lMissingFonts = NOVector_new(pDoc);&lt;br /&gt;    NODocument_searchAndReplaceText(ref pDoc, System.Text.Encoding.UTF8.GetBytes(pSearch), System.Text.Encoding.UTF8.GetBytes(pReplace), lMissingFonts, 1);&lt;br /&gt;&lt;br /&gt;    if (NOVector_size(ref lMissingFonts) &gt; 0)&lt;br /&gt;    {   // in this case, the font needs replacing, we replace this with Arial by default&lt;br /&gt; NOHandler lFont = NOFont_new(ref pDoc, NOVector_getPartIDAtIndex(ref lMissingFonts, 0));&lt;br /&gt; NOFont_replaceWithFile(ref lFont, System.Text.Encoding.UTF8.GetBytes(pFontSubstitute));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    NODocument_searchAndReplaceText(ref pDoc, System.Text.Encoding.UTF8.GetBytes(pSearch), System.Text.Encoding.UTF8.GetBytes(pReplace), lMissingFonts, 0);&lt;br /&gt;    NOVector_delete(ref lMissingFonts);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// main test program&lt;br /&gt;static void TestSearchAndReplace()&lt;br /&gt;{&lt;br /&gt;    string lFile = "..\\..\\examples\\testfiles\\template.xps";&lt;br /&gt;    string lFileOut = "..\\..\\examples\\output\\template_replaced.xps";&lt;br /&gt;    string lFontFile = "..\\..\\examples\\testfiles\\Arial.ttf";&lt;br /&gt;&lt;br /&gt;    NOHandler lFileHandler = NOPackage_readPackageFromFile(System.Text.Encoding.UTF8.GetBytes(lFile));&lt;br /&gt;    NOHandler lDoc = NOPackage_getDocument(ref lFileHandler, 0);&lt;br /&gt;&lt;br /&gt;    doReplaceText(lDoc, "TAG_TO",           "Mr. Recipient", lFontFile);&lt;br /&gt;    doReplaceText(lDoc, "TAG_FROM",         "Mr. Sender", lFontFile);&lt;br /&gt;    doReplaceText(lDoc, "TAG_COMPANY",      "Acme Inc.", lFontFile);&lt;br /&gt;    doReplaceText(lDoc, "TAG_DATE",         "09/30/2008", lFontFile);  &lt;br /&gt;    doReplaceText(lDoc, "TAG_FAX",          "(06) 555-1234", lFontFile);&lt;br /&gt;    doReplaceText(lDoc, "TAG_PAGES",        "1", lFontFile); &lt;br /&gt;    doReplaceText(lDoc, "TAG_PHONE",        "(06) 555-1235", lFontFile);&lt;br /&gt;    doReplaceText(lDoc, "TAG_SENDER_REF",   "REF/234-67", lFontFile);  &lt;br /&gt;    doReplaceText(lDoc, "TAG_SUBJECT",      "Variable Data Fax Example", lFontFile);&lt;br /&gt;    doReplaceText(lDoc, "TAG_REF",          "REF/44-66-77", lFontFile);&lt;br /&gt;&lt;br /&gt;    NOPackage_writePackageToFile(ref lFileHandler, System.Text.Encoding.UTF8.GetBytes(lFileOut));&lt;br /&gt;    NOPackage_destroyPackage(ref lFileHandler);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Everything starts in TestSearchAndReplace().&lt;br /&gt;We load up the template.xps file, get a handle to the first document, and start calling doReplaceText() to replace our TAGs with actual data.&lt;br /&gt;&lt;br /&gt;The doReplaceText() function attempts a search and replace, but the first call is a so called 'dry run', this is used to see if the fonts that are used in the XPS are subset, and if this subset can be used for the new string.&lt;br /&gt;Typically XPS files contain embedded fonts, and this is problematic if you want to replace a given text string with something else, chances are that this new sting uses characters fron the font that are not available.&lt;br /&gt;The strategy that we use here is that we detect this, and in that case fallback to Arial.&lt;br /&gt;&lt;br /&gt;The end result is a copy of the template, with the placeholders replaced.&lt;br /&gt;&lt;br /&gt;The reason I say that XPS really shines here, is for a few reasons:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;It is very easy (and free) to generate XPS templates. And with the fact that XPS generation software is default available by default in Vista, all sorts of exciting applications become easier than before.&lt;br /&gt;&lt;li&gt;The inherent quality of XPS being 'self contained' make it a very good container as a template. And not 'a specific type of XPS', all XPS. &lt;br /&gt;&lt;li&gt;The XPS format is XML based, and current XPS generators take full advantage of this. In combination with a powerful library like our NiXPS SDK, this becomes a very efficient way of generating a large amount of print ready documents, very quickly.&lt;br /&gt;&lt;li&gt;With XPS viewing capabilities becoming more widespread (also default Vista), it starts to become feasible to distribute the generated XPS copies directly to users, providing them with a personilized electronic copy they can print themselves.&lt;br /&gt;&lt;li&gt;Our SDK only modifies the bare minimum (only the text constructs and the font in the example), most of the file stays literally the same. This means a lot less overhead processing (we do not parse the XPS to an object model, to then write it out again, potentially completely changed). This way we can guarantee that the quality of hte output matches the input. Also, this allows you to combine this workflow with other XPS processing, as our SDK doesn't touch (nor rewrites) XPS contructs it doesn't need to touch.&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-468830478527466907?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/468830478527466907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=468830478527466907' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/468830478527466907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/468830478527466907'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2008/09/xps-variable-data-example-with-nixps.html' title='XPS Variable Data example with the NiXPS SDK'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_c1NiDXy7n5c/SMpsKUSBLjI/AAAAAAAAAIU/D1Md_-WuQWc/s72-c/replace.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-315800091113956439</id><published>2008-09-05T10:32:00.007+02:00</published><updated>2008-09-05T12:53:22.805+02:00</updated><title type='text'>Spindrift on XPS and NiXPS</title><content type='html'>Spindrift is a newsletter published by &lt;a href="http://www.digitaldots.org"&gt;Digital Dots&lt;/a&gt;, an independent, and respected, graphic arts research group.&lt;br /&gt;In their latest issue they publish an extensive article on XPS, written by Laurel Brunner.&lt;br /&gt;&lt;br /&gt;The article is noteworthy for the fact that it acknowledges the current viewpoint in the graphic arts that &lt;i&gt;XPS is regarded as a complete waste of time and space&lt;/i&gt;, but Spindrift arguments &lt;i&gt;against&lt;/i&gt; it.&lt;br /&gt;My personal experiences with meeting graphical arts people all around the world are somewhat similar.&lt;br /&gt;Of course this is a feeling that is based on subjective arguments (Microsoft is no good, Adobe is king), rather than on objective arguments.&lt;br /&gt;Not that subjective arguments are not important; perception and emotions around products (and standards) are indeed very important, but I'm inclined to think that at the end of the day it are the objective arguments that make the most sense, and will be used as a basis by customers taking business decisions.&lt;br /&gt;&lt;br /&gt;In the article quite a number of objective arguments are presented in favor of XPS, and why dismissing it is foolish.&lt;br /&gt;Most of the arguments are along the lines of the &lt;a href="http://nixps.blogspot.com/search/label/top9"&gt;top 9 benefits&lt;/a&gt; I posted earlier.&lt;br /&gt;But a few new ones. Like the fact that being XML based, XPS has some inherent advantages over PDF as a platform for applications like variable data output. Even against Adobe's recent catch-up with yet another PDF flavor called PDF/VT.&lt;br /&gt;NiXPS is also featured in the article as &lt;i&gt;one of the new generation XPS developers&lt;/i&gt;.&lt;br /&gt;And the focus is put on our NiXPS Edit application, which provides one of the missing links in an XPS work flow: corrective editing.&lt;br /&gt;&lt;br /&gt;Spindrift believes, and I quote: &lt;blockquote&gt; ... everyone who cares about the future of print media production landscape believes XPS could open up the market for corporate print like never before. &lt;/blockquote&gt;&lt;br /&gt;Amen to that.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-315800091113956439?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/315800091113956439/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=315800091113956439' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/315800091113956439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/315800091113956439'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2008/09/spindrift-on-xps-and-nixps.html' title='Spindrift on XPS and NiXPS'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-3137842940838053549</id><published>2008-09-03T14:05:00.003+02:00</published><updated>2008-09-03T14:13:23.739+02:00</updated><title type='text'>NiXPS SDK v2.5.2 released</title><content type='html'>Today we are releasing our NiXPS SDK v2.5.2.&lt;br /&gt;&lt;br /&gt;We've added some new stuff in here, mainly PDF output optimizations.&lt;br /&gt;Also, we introduced a new API call which allows you to easily convert an image file to XPS.&lt;br /&gt;This is presented in more detail in &lt;a href="http://nixps.blogspot.com/2008/09/converting-jpeg-files-to-xps.html"&gt;Kristof's previous blog post&lt;/a&gt;. For the rest: more bug fixes.&lt;br /&gt;&lt;br /&gt;Read the changelog &lt;a href="http://nixps.com/changelog.html"&gt;here&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;And apply for your trial version &lt;a href="http://nixps.com/library_apply.php"&gt;here&lt;/a&gt;. &lt;br /&gt;You'll receive a link to download the SDK.&lt;br /&gt;&lt;br /&gt;Give it a spin, and let us know!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-3137842940838053549?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/3137842940838053549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=3137842940838053549' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/3137842940838053549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/3137842940838053549'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2008/09/nixps-sdk-v252-released.html' title='NiXPS SDK v2.5.2 released'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-5903466735519471572</id><published>2008-09-01T12:24:00.008+02:00</published><updated>2008-09-13T14:18:23.579+02:00</updated><title type='text'>Convert JPG to XPS</title><content type='html'>A lot of people ask for the ability that our NiXPS SDK can generate XPS files direct from all kinds of different file formats. &lt;br /&gt;&lt;br /&gt;We are working on a general solution for all printable document formats.&lt;br /&gt;But if the file you want to create an XPS from happens to be an image file, then this is quite easy to do with our SDK.&lt;br /&gt;&lt;br /&gt;This is possible via our object model ever since our v2.0 SDK.&lt;br /&gt;But to make it easier, as of NiXPS SDK v2.5.2, we are providing an extra convience function to do this.&lt;br /&gt;&lt;br /&gt;In the following .NET example is shown you how to use our library to generate an XPS file from a JPEG file, with only a few lines of code:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;static void TestGenerateXPSFromJPEG() &lt;br /&gt;{ &lt;br /&gt; string lFile1 = "../../examples/testfiles/siena.jpg"; &lt;br /&gt; string lOutputFile = "../../examples/output/siena.xps"; &lt;br /&gt; NOHandler lPackage = NOPackage_createFromImage(System.Text.Encoding.UTF8.GetBytes(lFile1)); &lt;br /&gt; NOPackage_writePackageToFile(ref lPackage, System.Text.Encoding.UTF8.GetBytes(lOutputFile));&lt;br /&gt; NOPackage_destroyPackage(ref lPackage); &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;(note: an 'NOPackage' is NiXPS SDK speak for an XPS file).&lt;br /&gt;&lt;br /&gt;It all boils down to: NOPackage_createFromImage.&lt;br /&gt;This call also works for easy conversion of PNG, HD Photo and TIFF files to XPS.&lt;br /&gt;&lt;br /&gt;If you are using our library from C++ you can also make use of the same convenience  function: NOPackage::createFromImage. &lt;br /&gt;&lt;br /&gt;As an alternative you can access the XPS object model and program directly on top of the object level API of our library.  Your code to achieve the same result would look like this:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;void createXPSFromJPEG()&lt;br /&gt;{&lt;br /&gt;    NOPackage *lPackage = NOPackage::createPackage(true);&lt;br /&gt;    NODocument lSourceDoc1=lPackage-&gt;getDocument(0);&lt;br /&gt;    NOPage lPage = lSourceDoc1.createPage();&lt;br /&gt;    NOImage lImage = lPage.addImage("../testfiles/siena.jpg");&lt;br /&gt;    NOXFixedPage lFixedPage = lPage.getFixedPage();&lt;br /&gt;    UInt32 lWidth = lImage.getWidthInPixels();&lt;br /&gt;    double lXFactor = lImage.getXResolution() / 96.;&lt;br /&gt;    UInt32 lHeight = lImage.getHeightInPixels();&lt;br /&gt;    double lYFactor = lImage.getYResolution() / 96.;&lt;br /&gt;               &lt;br /&gt;    lFixedPage.intialize(lWidth*lXFactor,lHeight*lYFactor);&lt;br /&gt;&lt;br /&gt;    NOXCanvas lCanvas = lFixedPage.createCanvas(0);&lt;br /&gt;               &lt;br /&gt;    UTF8String lFilename = lImage.getFileName();&lt;br /&gt;               &lt;br /&gt;    char lRectangle[100];&lt;br /&gt;    sprintf(lRectangle,"M 0,0 L %f,0 %f,%f 0,%f z",&lt;br /&gt;                       lWidth*lXFactor,lWidth*lXFactor,&lt;br /&gt;                       lHeight*lYFactor,lHeight*lYFactor);&lt;br /&gt;&lt;br /&gt;    NOXPath lXPath = lCanvas.createPath(0);&lt;br /&gt;    lXPath.setData(NOString(lRectangle));&lt;br /&gt;               &lt;br /&gt;    NOXCP_Brush lBrush = lXPath.createPathFill(0);&lt;br /&gt;    NOXImageBrush lImageBrush = lBrush.createImageBrush(0);&lt;br /&gt;               &lt;br /&gt;    sprintf(lRectangle,"0,0,%f,%f",lWidth/lXFactor,lHeight/lYFactor);&lt;br /&gt;    lImageBrush.setViewbox(NOXViewBox(NOXStringBase(NOString(lRectangle))));&lt;br /&gt;    sprintf(lRectangle,"0,0,%f,%f",lWidth*lXFactor,lHeight*lYFactor);&lt;br /&gt;    lImageBrush.setViewport(NOXViewBox(NOString(lRectangle)));&lt;br /&gt; lImageBrush.setTileMode(NiXPSObjects::None);&lt;br /&gt;    lImageBrush.setViewboxUnits(NiXPSObjects::Absolute);&lt;br /&gt;    lImageBrush.setViewportUnits(NiXPSObjects::Absolute);&lt;br /&gt;               &lt;br /&gt;    NCommon::UTF8String lBaseString(lImage.getPartName());&lt;br /&gt;    lBaseString = "/" + lBaseString;&lt;br /&gt;    lImageBrush.setImageSource(NOString(lBaseString.c_str()));&lt;br /&gt;&lt;br /&gt;    lPackage-&gt;writePackageToFile(pOut);&lt;br /&gt;    NOPackage::destroyPackage(lPackage);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;A bit more 'chatty', but it shows the flexibility of the object model.&lt;br /&gt;You could use this also as a start to add more things on top (like text, more images, etc...).&lt;br /&gt;&lt;br /&gt;If you want a trial version of our library: &lt;a href="http://nixps.com/library_apply.php"&gt;get it here&lt;/a&gt;.&lt;br /&gt;You can also &lt;a href="http://nixps.com/library/rel-2-5/"&gt;browse through the documentation of our library&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;We appreciate any feedback and gladly help you out with all your questions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-5903466735519471572?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/5903466735519471572/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=5903466735519471572' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/5903466735519471572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/5903466735519471572'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2008/09/converting-jpeg-files-to-xps.html' title='Convert JPG to XPS'/><author><name>Kristof Van Landschoot</name><uri>http://www.blogger.com/profile/11797093785528092995</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-8221620360999874038</id><published>2008-08-06T08:00:00.001+02:00</published><updated>2008-09-05T11:05:39.309+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='top9'/><title type='text'>Benefit #9: XPS leverages your investment in Windows</title><content type='html'>Chances are that you already invested in Windows PCs for your business. Most probably PCs that are running Windows XP, as these are currently the most deployed business desktop (however, Vista deployments are gaining – July 2008).&lt;br /&gt;&lt;br /&gt;By adopting XPS as your electronic document format of choice, you leverage your investment in Windows PCs. As these PCs are either already capable of generating and viewing XPS, or can be upgraded for free with the same functionality, you can enjoy the benefits of a very capable, secure electronic document, and this without purchasing extra software licenses.&lt;br /&gt;&lt;br /&gt;XPS makes perfect economic sense.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;(This article is part of the 'Top 9 Benefits of using XPS for your business'-series)&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-8221620360999874038?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/8221620360999874038/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=8221620360999874038' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/8221620360999874038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/8221620360999874038'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2008/08/benefit-9-xps-leverages-your-investment.html' title='Benefit #9: XPS leverages your investment in Windows'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-5620102654041643221</id><published>2008-08-05T08:00:00.001+02:00</published><updated>2008-09-05T11:05:58.402+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='top9'/><title type='text'>Benefit #8: XPS saves you money</title><content type='html'>Now it gets interesting. Creating XPS files is free, provided you run Windows Vista or Windows XP. The same applies to viewing: a free viewer is built into Windows Vista.&lt;br /&gt;For the other windows versions you can download this for free from Microsoft’s website.&lt;br /&gt;&lt;br /&gt;As result, you don’t have to purchase software licenses for software to generate your electronic documents, this in contrast to other solutions.&lt;br /&gt;&lt;br /&gt;Do the math.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;(This article is part of the 'Top 9 Benefits of using XPS for your business'-series)&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-5620102654041643221?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/5620102654041643221/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=5620102654041643221' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/5620102654041643221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/5620102654041643221'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2008/08/benefit-8-xps-saves-you-money.html' title='Benefit #8: XPS saves you money'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-4504170543657418052</id><published>2008-08-04T08:00:00.002+02:00</published><updated>2008-09-05T11:06:16.958+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='top9'/><title type='text'>Benefit #7: XPS is a natural extension of .NET and WPF</title><content type='html'>.NET and Windows Presentation Foundation are powerful and exciting technologies that are used more and more as tools to develop enterprise applications.&lt;br /&gt;&lt;br /&gt;If your applications are based on .NET or WPF, then generating XPS documents from them is a snap. It is provided by default, at no extra cost.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;(This article is part of the 'Top 9 Benefits of using XPS for your business'-series)&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-4504170543657418052?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/4504170543657418052/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=4504170543657418052' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/4504170543657418052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/4504170543657418052'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2008/08/benefit-7-xps-is-natural-extension-of.html' title='Benefit #7: XPS is a natural extension of .NET and WPF'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-8802995091685018749</id><published>2008-08-03T08:00:00.001+02:00</published><updated>2008-09-05T11:06:30.736+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='top9'/><title type='text'>Benefit #6: XPS is efficient</title><content type='html'>One of the many qualities of XPS is its focus on printing. A lot of documents end up on paper, and XPS really shines here.&lt;br /&gt;&lt;br /&gt;XPS is the cornerstone of Microsoft’s new printing architecture for Windows Vista. It raises the bar on color fidelity, image quality and typography on printing Windows.&lt;br /&gt;&lt;br /&gt;Printer vendors are developing native XPS drivers to let their hardware take advantage of this, and this will allow an end to end XPS workflow which will not involve any costly conversions anymore.&lt;br /&gt; &lt;br /&gt;What you see (XPS document on screen) ends up on paper fast and correct.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;(This article is part of the 'Top 9 Benefits of using XPS for your business'-series)&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-8802995091685018749?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/8802995091685018749/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=8802995091685018749' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/8802995091685018749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/8802995091685018749'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2008/08/benefit-6-xps-is-efficient.html' title='Benefit #6: XPS is efficient'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-1778235260698823677</id><published>2008-08-02T08:00:00.001+02:00</published><updated>2008-09-05T11:08:56.680+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='top9'/><title type='text'>Benefit #5: XPS is easy</title><content type='html'>XPS generation is available for free as it is bundled with Vista. It is available for free from Microsoft for Windows XP, and there is also a free plug-in for Office 2007. As a result, chances are that you can already create and view XPS documents, but you just don’t realize it yet.&lt;br /&gt;&lt;br /&gt;Moreover companywide deployment, and updating, is very easy, as it is a core Windows technology. This saves time and effort for your IT team.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;(This article is part of the 'Top 9 Benefits of using XPS for your business'-series)&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-1778235260698823677?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/1778235260698823677/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=1778235260698823677' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/1778235260698823677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/1778235260698823677'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2008/08/benefit-5-xps-is-easy.html' title='Benefit #5: XPS is easy'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-1327534148711677377</id><published>2008-08-01T08:00:00.001+02:00</published><updated>2008-09-05T11:09:17.808+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='top9'/><title type='text'>Benefit #4: XPS is safe</title><content type='html'>Electronic documents are no software applications, the same way paper documents do not contain moving parts, or an engine for that matter.&lt;br /&gt;&lt;br /&gt;The primary goal of an electronic document is to be a container for human readable content, presented in a particular layout. XPS is very good at that.&lt;br /&gt;&lt;br /&gt;Technically it is possible to add all kinds of programmable, hence executable, features to an electronic document. But the result would be a format that is potentially hazardous as these executable features can be exploited by malicious people. Recent computing history teaches us that it is not a matter of ‘if’, but more a matter of ‘when’ these kinds of features will be exploited for malice.&lt;br /&gt;&lt;br /&gt;XPS does not contain any programmable features; as a result it is guaranteed to be safe. This is a big plus for your company, and also for the people you are sending your documents to.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;(This article is part of the 'Top 9 Benefits of using XPS for your business'-series)&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-1327534148711677377?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/1327534148711677377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=1327534148711677377' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/1327534148711677377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/1327534148711677377'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2008/08/benefit-4-xps-is-safe.html' title='Benefit #4: XPS is safe'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-4265999918968797128</id><published>2008-07-31T08:00:00.001+02:00</published><updated>2008-09-05T11:09:31.330+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='top9'/><title type='text'>Benefit #3: XPS is a reliable format for the future</title><content type='html'>XPS is developed by Microsoft, but released as an open specification and in the process of being standardized at ECMA.&lt;br /&gt;&lt;br /&gt;The format is based on a mixture of tried and tested, open en freely available technologies as XML, ZIP, JPEG …&lt;br /&gt;&lt;br /&gt;Information stored in an XPS file can be easily retrieved. And as the document format is described in a clear, open and freely available specification, it is a reliable format to store information in for now, but also to store for the future.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;(This article is part of the 'Top 9 Benefits of using XPS for your business'-series)&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-4265999918968797128?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/4265999918968797128/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=4265999918968797128' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/4265999918968797128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/4265999918968797128'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2008/07/benefit-3-xps-is-reliable-format-for.html' title='Benefit #3: XPS is a reliable format for the future'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-8613421003817112315</id><published>2008-07-30T08:00:00.002+02:00</published><updated>2008-09-05T11:09:47.212+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='top9'/><title type='text'>Benefit #2: XPS is truly ‘what you see is what you get’</title><content type='html'>If you send a paper document to someone, you expect him to receive something that has the same content, but also the exact same layout, images, etc… This matters, and it should not be different when sending electronic documents.&lt;br /&gt;&lt;br /&gt;Sending native documents around is problematic, as these documents typically contain references to fonts and images that are stored on your computer, but not on your recipient's computer. It is even possible that the software at the recipient’s end, provided he even has the required software, reformats the document  to another printer than the one you happen to be using. As a result: a bad experience. &lt;br /&gt;&lt;br /&gt;Even PDF, which improved this situation somewhat, is not immune to this problem. PDF does not require fonts to be stored in the document itself for instance. As a result it is not uncommon your nicely designed PDF ends up horribly broken at the customers end.&lt;br /&gt;&lt;br /&gt;XPS is engineered from the start to ‘contain everything’. An XPS document MUST contain everything required to correctly render the document faithfully. So no bad experiences, your recipient sees your document exactly as you intended, and without any technical hassle. XPS is truly WYSIWYG.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;(This article is part of the 'Top 9 Benefits of using XPS for your business'-series)&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-8613421003817112315?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/8613421003817112315/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=8613421003817112315' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/8613421003817112315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/8613421003817112315'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2008/07/benefit-2-xps-is-truly-what-you-see-is.html' title='Benefit #2: XPS is truly ‘what you see is what you get’'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-8002556342053245397</id><published>2008-07-29T08:39:00.002+02:00</published><updated>2008-07-29T08:45:35.921+02:00</updated><title type='text'>More XPS info</title><content type='html'>Adrian Ford published a &lt;a href="http://blogs.msdn.com/adrianford/archive/2008/07/29/xps-one-format-to-rule-them-all-or-maybe-not.aspx"&gt;nice article&lt;/a&gt; on his blog about XPS, and more specifically what the philosophy behind the format is, and how this impacts the featureset and future direction of the format.&lt;br /&gt;It's a great read, and I totally agree with the focus of the format on being a true representation of paper, even if this means sacrificing more advanced technological features. It's a good sign Microsoft feels the same way about it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-8002556342053245397?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/8002556342053245397/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=8002556342053245397' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/8002556342053245397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/8002556342053245397'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2008/07/more-xps-info.html' title='More XPS info'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-8565982125774289282</id><published>2008-07-29T08:00:00.001+02:00</published><updated>2008-09-05T11:18:34.376+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='top9'/><title type='text'>Benefit #1: XPS is ideal for sharing and publishing</title><content type='html'>What makes up a good electronic document format?&lt;br /&gt;&lt;br /&gt;We at NiXPS feel that a good electronic document format should be easy and cheap to create, reliable and hassle free and easy and cheap to view.&lt;br /&gt;&lt;br /&gt;XPS gives you that; as XPS is built into Windows, it can be generated as easy as it is to print a document. XPS viewers are also built into Windows Vista and are freely available for other platforms, so people can view them. And XPS is a graphically rich format that represents exactly the document as you made it in your authoring application like Word.&lt;br /&gt;&lt;br /&gt;As a result you can safely send around XPS documents for document review, but also use XPS as a format to publish documents on the web. The documents will keep the exact layout and formatting you have made them in, and your recipient will enjoy a hassle free experience in using your documents.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;(This article is part of the 'Top 9 Benefits of using XPS for your business'-series)&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-8565982125774289282?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/8565982125774289282/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=8565982125774289282' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/8565982125774289282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/8565982125774289282'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2008/07/benefit-1-xps-is-ideal-for-sharing-and.html' title='Benefit #1: XPS is ideal for sharing and publishing'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27468065.post-4279219002089737147</id><published>2008-07-28T17:54:00.003+02:00</published><updated>2008-07-28T18:01:37.517+02:00</updated><title type='text'>Top 9 Benefits of using XPS for your business</title><content type='html'>There is a lot of misunderstanding and lack of knowledge about the XML Paper Specification (XPS) electronic document format.&lt;br /&gt;&lt;br /&gt;In my view there are quite a number of tangible benefits to the format, and I'm going to present some of them here more in detail. I've compiled a list of 9, covering opportunities that can be realized on a business, operational and budget level. I'm sure there are more, but 9 is a good start ;-)&lt;br /&gt;&lt;br /&gt;I'll start off tomorrow with 'Benefit #1: XPS is ideal for sharing and publishing'.&lt;br /&gt;&lt;br /&gt;Enjoy reading them, and feel free to share your thoughts/opinions in the comments.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27468065-4279219002089737147?l=nixps.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nixps.blogspot.com/feeds/4279219002089737147/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=27468065&amp;postID=4279219002089737147' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/4279219002089737147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27468065/posts/default/4279219002089737147'/><link rel='alternate' type='text/html' href='http://nixps.blogspot.com/2008/07/top-9-benefits-of-using-xps-for-your.html' title='Top 9 Benefits of using XPS for your business'/><author><name>Nick De Roeck</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
