Components for Developers
© 2000-2016, Two Pilots

PDF Library   Virtual Printer   Converters   Squirrel   HTML_QuickForm   Design Service

Two Pilots blog

DjVu Converter

July 19th, 2010

The electronic DjVu format is becoming more and more popular. It is intended for storage of scanned documents (forms, electronic books and so on). DjVu is positioned as an alternative to the PDF format. An advantage of DjVu is the lighter size of the DjVu files in comparison to PDF file sizes.
Two Pilots has released a new freeware product for creating DjVu documents. DjVu Printer Pilot is an application based on a virtual printer. After installation of the program, the <DjVu Printer Pilot> virtual printer will be installed in your system. Now you can “print to” this printer any document you wish to be converted into DjVu. While printing, the document is automatically opened  in the DjVu Printer Pilot window. From here you can save the converted DjVu document or combine it with another document created earlier.
For DjVu creation, the DjVuLibre free library is used.

Artem Golubnichenko

Rounding Effect

July 14th, 2010

Look at the picture of the line before inexact rounding of floating points, and at the
picture after rounding:


The problem arose while converting an EMF into a PDF or while drawing an HDC-context taken from a PDF. The problem was connected to the Polyline(To) function. The function transformed an array of points with close value coordinates. Then, to draw a set of lines in a PDF, transformation of the
coordinates from HDC to PDF coordinates was necessary. For this transformation the LPtoDP function was used. But LPtoDP returns integer values. For example, this function transforms the (160, 74) and (159, 60) coordinates from EMF to (1, 1) and (1, 2) for a PDF. So a set of lines was generated as shown in the left picture. To improve the results, we have stopped using the LPtoDP function. Now Polyline(To) function gives the correct results.

Artem Golubnichenko

PDF/A is a format for long-term preservation

June 7th, 2010

PDF/A is a electronic document file format for long-term preservation. Standards to address the growing need to maintain information in electronic documents over archival time spans. The feature-rich nature of PDF can create difficulties in preserving information over the long-term, and some useful features of the PDF file format are incompatible with the demands of long-term preservation. For example, PDF documents are not necessarily self-contained, drawing on system fonts and other content stored external to the original file. As time passes, and especially as technology changes, these external connections can be broken, and the dependencies cause information to be lost.
The PDF/A-1 standard is based on Adobe’s PDF Reference 1.4, and specifies how to use a subset of PDF components to develop software that creates, renders and otherwise process a flavor of PDF that is more suitable for archival preservation than traditional PDF. PDF/A-1 aims to preserve the static visual appearance of electronic documents over time and also aims to support future access and future migration needs by providing frameworks for: 1) embedding metadata about electronic documents, and 2) defining the logical structure and semantic properties of electronic documents. The result is a file format, based on PDF 1.4 that is more suitable for long term preservation.
PDF/A-1 files must include:

* Embedded fonts
* Device-independent color
* XMP metadata

The PDF Creator Pilot has property gets or sets the value indicating whether to produce a PDF/A compatible output file. There is ProducePDFA. Setting ProducePDFA to VARIANT_TRUE means that the output PDF file will be built compatible to the PDF/A standard. You should set this property before any text or graphics output.
If you need long-term preservation documents, use the PDF/A docs. With PDF Creator Pilot you can create such documents easy.

Artem Golubnichenko

New PDF to Image Converter from Two Pilots Company

March 11th, 2010

In the area of circulation of electronic documents, often we need to modify PDF documents into PNG or multipage TIFF images. Two Pilots, has just released a new converter called PDF2Image Pilot, a program for converting PDF files into high-quality BMP, EMF, GIF, JPEG, PNG, or TIFF images. (Multipage TIFF is supported as well.)

The PDF to Image converter is based on PDF Rasterization Pilot. PDF Rasterization Pilot is a library for developers. Using this tool, developers can add to their products such features as export PDF to graphic format and output PDF to a device context (display or printer).

The new PDF2Image Pilot uses only PDF Rasterization Pilot for saving PDF into graphic files and outputting PDF content to a preview window. In PDF2Image Pilot, we tried to connect the features of the PDF Rasterization library and our many years experience in the development of easy and useful interfaces. We hope that PDF2Image converter helps you to solve your tasks. We await your responses and proposals!

Artem Golubnichenko

Layers (Optional Content Groups)

September 8th, 2009

Layers or as they are more formally known Optional Content Groups (OCG) is representing a collection of graphics that can be made visible or invisible dynamically by users of viewer applications. (This ca­pability is useful in items such as CAD drawings, maps, and multi-language documents) With the introduction of PDF version 1.5 came the concept of Layers. Form and image and annotations can be made optional too.

Read the rest of this entry »

PDF Creator Project News

December 16th, 2008


Today I want to talk about important improvements in the current version of the PDF Creator Pilot Library.

It was always one of the weakest things about the Library – it demanded huge amounts of memory to work with larger documents. Quite often clients were not able to create a document consisting of more than 100 pages, because they did not have enough memory. In this version, we have managed to open up a bottleneck, which helped us significantly reduce memory requirements. In short, if a page contains a lot of graphics, it also contains a lot of page operation commands. Keeping all these commands in memory was the bottleneck. We cached the commands into a temporary file, and that solved the problem.

Read the rest of this entry »

COM: The First Steps

November 7th, 2008

Let me show you the process of creating of a COM component with Visual Studio 2008 using ATL and C++.

First, let’s create a Visual C++/ATL project:

Read the rest of this entry »

PDF Creator – about project and development process

October 28th, 2008

In this article I describe the organization of the PDF Creator project and the tools that we use to develop and promote the product.

Development Tools

1. Subversion (SVN) Control

The life of a programmer would be unbearable without a source control manager :-). As of this writing, we have executed 2387 commits in the PDF Creator project using the Tortoise SVN, ( Since every mistake would cost a lot, we try to follow this rule – one that we would recommend to everyone: Always commit smaller portions of the code. Every commit must correspond to a single task!

This way it is (a) easier to find an error during rollbacks (every commit changes a small amount of source code), (b) often easy to discover an error before the commit just by looking at it, and (c) easier for colleagues to be aware of the changes in the source code, since all they have to do is read the comments and look at the smaller portions of the code.

Of course, this is not possible in all cases, and sometimes we do have to perform huge commits. Still this is a rule worth following. After all, it is one of the refactoring rules: Change smaller portions of the code, preserving its workability between sessions.

Two more source-control rules:

  1. There must always be two versions in the SVN – a version that compiles and a workable version. It is easy to create code that compiles, but the real aim is its correctness.
  2. Text comments should be supplied to every commit. This is also a good way to check whether the commit implements only a single task. If a comment describes several targets instead of just one, the rule has been violaled.

2. Bug Tracker

We use Mantis ( PDF Creator is the base for a number of other products – converters, virtual printer, etc. (See The number of its users is much higher than the count of those who purchased the base product. We needed to simplify communications between the developers and the users of the products.

Read the rest of this entry »

What you should know before deploying your .NET application that uses PDF Creator Pilot and HTML2PDF Addon to another server.

October 10th, 2008

First, you need to install PDF Creator Pilot and HTML2PDF Addon to this server.
It is not necessary to run installer programs for those products, you may register in system corresponding dll files running commands (both on x86 and x64 versions):

C:\Windows\system32\regsvr32 PDFCreatorPilot.dll
C:\Windows\system32\regsvr32 HTML2PDF.dll

Second, you need to re-create interop wrappers for these components. This can be done with standard .NET SDK utility – TlbImp.exe (C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\TlbImp.exe)

TlbImp.exe PDFCreatorPilot.dll /out:Interop.PDFCreatorPilotLib.dll
TlbImp.exe HTML2PDF.DLL /out:Interop.HTML2PDFAddOn.dll

Note: It is not necessary to regenerate wrappers directly on the server, you may do it on the developer machine and copy theese wrappers to the server.

Third, you need to place these interop wrappers into the appropriate directory on the new server. For ASP.NET it is the “bin” folder of that application. For the rest applications you need to place wrappers near the exe module (at the same folder).

Filimonov MaximDeveloper of PDF Library

COM arrays in PHP

June 9th, 2008

We don’t claim to be experts in PHP, and an educated reader might find this article to be a redundant description of evident facts. Nevertheless, we hope that this article may be of some help to somebody.

We wanted to check whether our library (this one) works well with PHP. Read the rest of this entry »

PDF Library   Virtual Printer   Converters   Squirrel   HTML_QuickForm   Design Service


Support | Blog | Forum | Contacts | About | Site map

© 2000-2016, Two Pilots