Release Notes Virtual Print Engine v7.30 R3 (10 / 2024)
- VPE fixed. PDF export. The previous change for symbolic fonts made subsetting for fonts like Arial non-working, causing for example missing umlauts and other non-ASCII characters.
Release Notes Virtual Print Engine v7.30 R2 (8 / 2024)
- VPE fixed. PDF export. For symbol fonts, like Wingdings or Webdings, wrong glyph advance widths could be written to PDF, and glyphs could be missing.
- VPE update. When creating PDF/A, by default font subsetting is now enabled, because the PDF/A standard requires that symbolic fonts only contain one CMAP table. But the fonts come in regular with multiple CMAP tables. The font subsetter of VPE strips the unwanted CMAP tables.
- VPE update. Fixed formatting errors for HTML and Webhelp targets.
- VPE fixed. 64-bit Extended MAPI caused GPF.
Release Notes Virtual Print Engine v7.30 R1 (7 / 2024)
- VPE fixed. If VpeSetPrintOptions(hDoc, PRINT_NO_AUTO_PAGE_DIMS) was used, the new setup printer dialog crashed when clicking onto the OK-Button.
- VPE fixed: If number of copies or collation was changed in the private dialog of the printer driver, the changes were not copied to the new setup dialog.
- VPE fixed. Printer setup dialog. When "print all" was selected, the edit controls from-page and to-page were enabled, but had no effect. Now, when the focus is set to either the from-page or the to-page edit controls, "print range" is set.
- VPE fixed. The page range was not always correctly limited to valid values, when setting the page range by code using VpeSetDevFromPage() and VpeSetDevToPage().
If the to-page edit control in the printer setup dialog is empty, now the maximum allowed page number is used. (Before, the value "1" was used, and the values of from-page and to-page could have been swapped.)
- VPE fixed. Severe bug: SetupPrinter() could crash under special conditions.
- VPE fixed. When embedding and subsetting a font into a PDF document, for newer fonts like Calibri and Aptos, characters (glyphs) could be missing.
Release Notes Virtual Print Engine v7.30 (1 / 2024)
- Updated: New "hand rolled" printer setup dialog. The built-in printer setup dialog of Windows 11 has several bugs and inconsistencies.
The last selected printer is not selected on subsequent calls. The new Win 11 print dialog always selects the default printer.
As a consequence, the printer could not be set by code and setups stored in PRS files using VpeSetupPrinter() are ignored, instead the default printer is always selected by the new Win 11 print dialog.
In addition, the dialog can freeze the calling application. This especially happened on Windows 11 installations, which had been updated from Win 10.
- NOTE: In order to localize the GUI of VPE, many new resource strings have been added to localize the new printer setup dialog.
See SetResourceString() in the help files.
If you are using the method SetResourceString() to localize the GUI of VPE, please note that almost all resource IDs did change due to the new printer setup dialog.
- Updated: Using now the Visual Studio 2022 C++ compiler, instead of VS 2008.
- Updated: Freeimage updated to latest version
- Updated: ZLib updated to latest version
- Updated: Using new tool to create CHM Help files and PDF manuals.
- NOTE: Minimum required OS is now Windows 7 SP1 and higher / Windows Server 2008 R2 and higher. Older Windows versions are not supported.
- Fixed: Several bugs in 64-bit code, which had been detected by the better static code analysis of the Visual Studio 2022 C++ compiler.
- Fixed: Setting the preview scale could cause a GPF, when the rulers of the preview were hidden (disabled).
- Fixed: Scale2GrayFloat did no longer work.
Release Notes Virtual Print Engine v7.20 R1 (11 / 2022)
- Fixed: Interactive Edition: When entering a German decimal separator "," for controls with numeric fields,
the fractional part was not used.
- Fixed: Enterprise Edition: If a text field was assigned to a radio button group, DumpTemplate() caused a GPF.
- Fixed: The page edit control in the statusbar could cause GPF on 64-bit.
- Fixed: For RTF and huge page heights, if text was below 64cm, it was not painted.
- Fixed: VpeSetPictureDefaultDPI() did not work for PBM, PGM and PPM images.
- Fixed: When there was a fixed zoom, and the zoom was changed, so the horizontal scroll position changed,
and then the preview was resized, there were ugly redraw errors.
- Updated: Added new method License() for .NET controls. Note that the version number of the .NET control was
changed from 7.20.0.0 to 7.20.1.0. Make sure that your project references the new version.
- Updated: Added chapter "Import PDF" to Programmer's Manual.
Release Notes Virtual Print Engine v7.20 (04 / 2019)
Virtual Print Engine
- Installer fixed: Automatic online activation did no longer work, due to an automatic update of Apache on the webserver, which revealed
a bug in the installer.
- Fixed: Code-128 / GS1-128:
The barcode library switches automatically between the charsets A, B and C to create the shortest possible symbol array.
But it was over-optimizing and could cause very long delays (30 seconds and more) to finish computations for a single Code-128 barcode.
The optimization code has been completely re-written to avoid such problems. It is now extremely fast and does not cause any delays.
- Fixed: Code-128 / GS1-128:
When inserting FNC1 in charset C (only digits), the barcode library inserted a switch to charset A before.
But charset C can handle FNC1 without switching. The switch to charset A has been eliminated.
- Fixed: Bug introduced with VPE v7.10 for PDF/A export: rotated images could cause a corrupted PDF file structure to be created. As a result, the PDF documents were not readable by Acrobat Reader and other PDF readers.
- Fixed: Incompatibility with True-Type fonts that did contain an empty field for the PostScript name within its internal data structures.
- Fixed: The return value of VpeTextBlockGetLineCount() was not updated for plain text objects, when parts of text had been inserted into the document. RTF did work as documented.
- Fixed: Bug in multi-threaded code path, which could cause memory corruption under very special conditions.
- Fixed: When the property EnableMultiThreading was set to true, it could happen under special conditions that VPE did hang when adding an image to a document or loading a template or reading a VPE document file.
- Fixed: Under very special conditions a GPF could occur, when an RTF object caused an auto break.
- Fixed: Numeric fields, not formatted using scientific notation, could cause an internal buffer overflow,
if the number of digits is too large, e.g. 1e+308.
- Fixed: Data Matrix: non-ASCII characters (> 127) could be encoded wrongly
- Fixed: 64-bit version only. When floating-point exceptions are turned on, LoadTemplate() caused an exception.
- Fixed: GPF of 64-bit version when printing. Only happened when called from code compiled with Visual Studio 2015.
This bug did not occur when the calling EXE was complied using VS 2008.
Seems to be related to different memory layout.
- Fixed: GPF of 64-bit version when exporting 1D barcode to PDF. Only happened when called from code compiled with Visual Studio 2015.
This bug did not occur when the calling EXE was complied using VS 2008.
Seems to be related to different memory layout.
- Updated: VPE C++ demo source code. Now using Windows TT fonts. Did not compile with VS 2015 due to macros in string literals not separated by blank.
- Updated: VpePictureStream() and VpeRenderPictureStream() set LastErr in case the machine is out of memory.
- Updated: For DIBs, the test for existence of BI_BITFIELDS flags has been improved.
- Updated: RTF Field results are now parsed and displayed. This was especially important, so that hyperlinks are displayed. Before, hyperlinks were skipped - so they were not visible at all.
- Updated: PrintDoc() now sets LastError, implemented four new error codes for better diagnostic control.
- Updated: dycodoc compiled and linked against the updated core libraries of VPE.
Release Notes Virtual Print Engine v7.10 R1 (11 / 2015)
Virtual Print Engine
- Fixed: The version number shown in the about dialog and returned by GetVersion() was mistakenly 7.01 instead of 7.10.
- Fixed: bug, which caused CMYK JPEG files to be exported inverted to PDF.
Release Notes Virtual Print Engine v7.10 (11 / 2015)
Virtual Print Engine
- Fixed: Windows 10 compatibility. VPE could crash on Win 10.
- Fixed: PDF/A was not written 100% according to the standards.
A PDF/A validation tool reported two errors:
1) "The value of the key N is 4 but must be 3."
2) "Number out of range of 2^15-1"
There could also be other errors reported, which were follow-up errors resulting from the errors above.
Explanation:
Up until now we used the Preflight module of Adobe Acrobat Professional v9.5.5 to validate the created documents for PDF/A-1b conformance.
It reported that our documents are 100% correct.
We found out that there are several validation tools, which work more or less precise. As a blog-article describes, none of the tools is
catching all errors at present, and all of them do also create false positives. The PDF/A standard is heavyweight.
We updated to the latest version of Adobe Acrobat, which is 'Professional DC', so we are using the newest Preflight module.
Still, Adobe preflight does not catch the error "Number out of range of 2^15-1".
So we also cross-checked the PDF documents created by VPE against a second validation tool, which does catch the error.
Fixing the "Number out of range of 2^15-1" error required to overwork the whole PDF export module to use internally a different coordinate system,
which was a huge amount of work.
- Fixed: JPEG images in CMYK color format were exported inverted to PDF.
- Updated: New method BringPreviewToTop().
Release Notes Virtual Print Engine v7.00 R3 (03 / 2015)
Virtual Print Engine
- Fixed: If DocFileReadOnly was true, it was not possible to append pages to an existing document.
- Fixed: Memory-Stream based images (pictures) could fall out of the cache, even if still in use.
- Fixed: Under very special conditions, VpeOpenDoc() could hang.
- Fixed: Barcode Code-128: forced switching from Code B to Code C encoding could lead to defect codes.
- Fixed: RTF parser: as a side-effect of the new TextBlock Object, for very special formatted RTF
it was possible that a GPF occurred or that the bottom-most line of text was repeatedly drawn.
dycodoc
- Update: When the ESC key is pressed, the currently selected objects are deselected. If no objects are selected, the tool mode is switched to the pointer tool.
- Fixed: double and single quotes in the description of field definitions were not written correctly to FLDX files.
- Fixed: Pictures could not be rotated using the property dialog, the property grid did work.
- Fixed: Seldom malfunction of computing dynamic object dimensions when dragging the mouse outside page boundaries with a selected object handle.
Delphi
- VPE Community Edition: the Delphi component did not compile, because it had a reference to the TextBlock object.
The TextBlock object is not supported by the Community Edition.
Release Notes Virtual Print Engine v7.00 R2 (09 / 2014)
- Fixed problem with installer.
Release Notes Virtual Print Engine v7.00 R1 (09 / 2014)
- Fixed problem, which could cause wrong text rendering with some fonts, e.g. "Arial Black" or "Arial Narrow".
To support export conforming to PDF/A, our internal true-type font processor had been changed to use the CMAP format 0 table always.
But this table can contain erroneous information, so that the character widths are computed wrongly.
As a result, the text layout could be wrong.
- Fixed a bug, which could cause exported PDF/A not to be validated by the Adobe Preflight tool as valid PDF/A.
- Fixed 64-bit: The VPE ActiveX was not always registered correctly during installation.
- Added support for Delphi RAD Studio XE 7.
Release Notes Virtual Print Engine v7.00 (08 / 2014)
64-Bit Support
All editions of VPE are now available as 64-bit versions.
New Features
- All editions: New TextBlock object allows to split a large block of text into smaller parts,
so small pieces of the whole continuous text can be rendered (!) and spread in any position at any width
with any number of lines within a document.
As a result VPE can now perform multi-column layout, text can flow around other objects or regions and text
can be spread over any number of pages under full control (without using the (limited) AutoBreak event-handler).
This can be done with plain text, as well as Rich Text (RTF).
- New method ComputeSingleLineChars(): Computes the maximum number of characters that fit in a single line of given width (i.e. horizontal space in a document).
- The preview now supports Windows Touch Gestures for panning (i.e. scrolling) and zooming.
- The status bar segment, which shows freely definable text via the property StatusText, now resizes to the width of the preview window.
- The MAPI Type (Simple MAPI or Extended MAPI) used for sending mails can now be specified by code.
The default is Simple MAPI.
- New boolean property EmbeddedFlagParser allows to turn parsing of Embedded Flags "[]" explicitly off.
- ActiveX: now has a dynamic base address and is marked to be compatible with Data Execution Prevention (NXCOMPAT).
- Professional Edition and higher: VPE can now create PDF/A documents for long-term archival, according to ISO 19005-1:2005, PDF/A-1b
- Professional Edition and higher: implemented 2D QR Barcode
- Professional Edition and higher: New properties to retrieve text metrics: FontAscent, FontDescent, FontInternalLeading, FontExternalLeading.
- Professional Edition and higher: New method GetCharacterHeight().
Using the Ascent, Descent and Character Height, the VPE API provides ways to align text at the Cap Height, the baseline or the descent of a selected font.
- Enterprise Edition and higher: New Null-Value conception for fields. Fields can be assigned null values, and for each field
the output in case of a null value can be specified, e.g. for a field of type Date that is null, you can specify to output nothing,
or the text "n/a" or "null" or whatever.
- dycodoc: Added support for 2D QR barcode.
- dycodoc: Added support for null-values.
- dycodoc: Draws now the plain main and add-on text into a 1D barcode object if the code is not drawable.
- dycodoc: Unknown and ambiguous field references are not rejected anymore.
- dycodoc: Added a new button to the Field Definitions Pane to check the document for unknown or ambiguous field references.
- dycodoc: In case of ambiguous field reference, document will be saved as usual, but no template will be created.
- dycodoc: In case of unknown field reference, document and template will be saved prior to displaying a warning message.
- dycodoc: No more automatic table name assignment for ambiguous field references when loading a document
Fixed
- Fixed problem with EMF (Windows Enhanced Metafiles) import. For special file headers, the imported image was not sized correctly.
- Enhanced support for BMP file format: BMPs with BITMAPV4HEADER and BITMAPV5HEADER can now be read.
- There was a missing Wait() / Release() sequence, causing a multi-threading race-condition bug.
- VPE update/fix: Fixed rounding errors for the alignment of justified text under very special zoom values,
which could cause misalignments of +/- one pixel, so one line to the other could have been misaligned by two pixels.
This could only be recognized in the preview, it had no visible impact for printing
(two pixels at 300 DPI resolution are not visible for the human eye).
- VPE update/fix: The event PRINT_MSG_SETUPEND was sent via PostMessage. Therefore any device control properties (like e.g. DevDuplex)
could not be changed at that point in time (the print job had already started, but the message is received by the application
at a later point in time). Changed now to SendMessage(), so Device Control Properties can be changed at that stage of the
printing process. However, this is dangerous, because the user can call in the event handler VPE methods that might crash the
application, e.g. CloseDoc(). It is left to the responsibility of the user that he/she does not misuse the event.
- RTF: When using the "pard" keyword, VPE did always reset the default tab width to 1.25cm.
But the tab-width defined by a previous "deftab" keyword must be used. (VPE used the tab-width
specified by deftab, if it was placed behind a "pard" keyword).
- RTF: For the very last \par keyword, the object height is not incremented. This was not really a bug, but we changed the
behavior due to the LineCount property of the new TextBlock object.
- RTF: Fixed a small memory leak, which could occur under very special conditions.
- PDF: Fixed some minor bugs regarding the created PDF document structure. The bugs had no impact on
the creation of regular PDF, but they were not according to the PDF/A standard.
- PDF: The export of images and writing images to PDF could cause an exception, if the image was too large.
- Enterprise Edition and higher: For templates with embedded images, each image caused a small memory leak of a few bytes, each time when dumped into a VPE document.
- Enterprise Edition and higher: If a picture object in a template had the property 'Embed in Template' set, it was not used when dumping the template.
- dycodoc: When previewing a document with VPE (function key F4), the option to write the document as PDF was missing.
- dycodoc: For very complex documents with many dependencies, moving an object quickly with the mouse could cause a crash.
- dycodoc: For documents with many complex dependencies, selecting all objects, setting "make fixed" and then selecting one
object in the document tree view could cause that dycodoc hangs forever.
- dycodoc: for some images, when setting one coordinate to dynamic and the other to fixed, the dimensions were computed wrongly.
- dycodoc: Fixed problem with Magic Guidelines.
- dycodoc: In case of user-defined paper format, page size remained unchanged when changed through page property dialog.
- dycodoc: Adapted visibility of certain control elements of the 1D Barcode property dialog according to specified barcode type.
Delphi VCL
- Added support for Delphi / C++ Builder RAD Studio XE2 to XE6.
- Due to support for 64-bit, all handle types have been changed from LongInt to Pointer.
This applies to: PolyLine, Polygon, Bookmark, ChartData
Release Notes Virtual Print Engine v6.10 R1 (10 / 2012)
This is a service release.
Updated
- Windows 8 and Windows Server 2012 officially supported.
- Added support for Delphi / C++ Builder RAD Studio XE2 and XE3.
Fixed
- VPE: Fixed seldomly arising bug with printer offset
- VPE: Fixed: Reading document files created by versions prior to VPE
v4.0: text objects which had the CharPlacement property set were not
imported correctly. As a result they were displayed / printed in an
unreadable fashion.
- VPE: MAPI: If Simple MAPI is supported by the default mail client,
Simple MAPI is chosen over Extended MAPI, because Extended MAPI is causing
too many problems. There is already a deactivated method VpeSetMAPIType(),
which must be activated in v6.20. (This is a service release, so we must
stay API compatible to v6.10).
- VPE: MAPI: Supporting better and more Simple MAPI mail clients on Win 7.
- VPE: MAPI: Now *all* Simple MAPI clients are supported, which provide a (even
reduced) Simple MAPI interface, like for example Eudora or Pegasus.
- VPE: MAPI: Simple and Extended MAPI: If the toolbar was hidden, MailDoc() did
not work.
- VPE: Extended MAPI: Fixed a problem which could cause a GPF when sending
a mail.
- VPE: Extended MAPI: On many systems, VPE detected that Extended MAPI is
installed, but in fact old versions or wrong versions from other vendors
were installed. This could cause VPE and your application to terminate
immediately at startup. VPE is now delay-loading mapi32.dll and checks
before if it is from Microsoft and if the version number is sufficient.
Otherwise it switches to Simple MAPI.
- VPE: Extended MAPI: The message priority was set to IMPORTANCE_LOW. It
is now IMPORTANCE_NORMAL.
- VPE: Extended MAPI: Fixed possible hang when Exchange was used as mail
server.
- VPE: Extended MAPI: Fixed position of attachments for rich text mail
bodies.
- VPE: Fixed problem with Windows 8 / MAPI: the default mail client was
not recognized, the mail button was grayed out.
- VPE: Image import of PFM and PICT file formats was disabled by error.
- PDF: For fonts which had no italic font file, like "Tahoma", VPE could
not export the font in italic to PDF. Now it synthesizes in such cases the
italic font by emitting skewing-instructions into the PDF Content Stream.
- PDF: An internal Y-Correction factor was computed wrongly, so fonts like
Tahoma were positioned wrongly in the y-direction (too high).
- VPE ActiveX: Fixed problem with TVPEChartData of the ActiveX
- VPE ActiveX: DevSendData() had a regression bug and did not work
correctly.
- VPE ActiveX + VCL: The VPE_DOC_TYPE_Xyz definitions were not defined for
the VCL and the ActiveX.
- dycodoc: Fixed bug under Vista / Win 7, which could cause the open file
dialog to fail.
- dycodoc: Fixed bug, which could cause wrong import of old DCD files.
- dycodoc: Fixed bug in Number Format Wizard Dialog: For zero values the
format string of negative numbers was used as template.
- dycodoc: VPE SDK compatibility forced when starting dycodoc for the
first time.
- dycodoc: Fixed: "[identifier]" denotes a field and "![" works as a
field-neutralizer, so you can use square brackets as normal text, e.g., "![this
is some text]". But it was not possible to use fields after a field-neutralizer,
like: ![this is text [FIELD]].
- dycodoc Interactive Edition: Fixed: radio button groups were not written correctly to templates.
- dycodoc: Sending e-mail from the toolbar did not work, because the
document file was locked against file sharing, but Simple MAPI requires
access to the file.
Release Notes Virtual Print Engine v6.10 (04 / 2011)
Updated
- VPE: Extensive internal reorganisation of source codes and creation of a
full new build-system to implement Windows 64-bit support, 64-bit release
will follow soon
- VPE: JavaScript engine updated to v1.8 with 64-bit support
- VPE: Updated FreeImage Library to v3.14.1 with 64-bit support.
Four new image types
supported:
- EXR (high dynamic-range image file format)
- PFM (Portable Floatmap; high dynamic-range image file format)
- PICT (Apple image file format)
- RAW (camera raw image files)
- VPE: Implemented Extended MAPI, in addition to Simple MAPI, which
provides much better support for newer versions of Outlook, Exchange and
other MAPI centric mail systems.
- VPE: New function VpeGetPageFormat(). For the ActiveX, .NET, VCL, Java
components: the property PageFormat is now readable for each page.
- VPE: New property InsertAtBottomZOrder, (DLL API:
VpeSetInsertAtBottomZOrder() / VpeGetInsertAtBottomZOrder()), which allows
to add new objects at the bottom of the z-order, so they are drawn below all other objects.
Normally, newly added objects are drawn on top of all previously added
objects. This new property is ideal for adding watermarks after a document
or page has been created.
- VPE: New chart-properties ChartXLabelStep and ChartXGridStep
- VPE: Optimization for charts: extremely faster drawing for many data
points
- dycodoc: New tool "dcdkey.exe", which allows to create an
installation key file for dycodoc, to install and license dycodoc silently
on end-user machines. This program is located in the "deploy" directory of
the VPE installation.
- dycodoc: Active Inplace Edit remains active, if only expanding &
contracting attempt occurs in DataDefTreeView
- dycodoc: Edge orientated guide line snapping added
- dycodoc: Guide line snapping modified
- dycodoc: Guidelines now selectable and moveable with the mouse and with
the direction keys, removeable with the delete key
- dycodoc: Guidelines can be locked through the property grid
- dycodoc: New "magic guide lines" (displays lines when an object is moved
or sized to the boundaries of another object)
- dycodoc: Routines for verifying field name JavaScript conformity added.
- dycodoc: Imported field definition table will be alphabetically sorted
by default
Changes ActiveX
To provide 64-bit support for the VPE ActiveX, some changes were required:
- ActiveX: the method PolyLine() now returns an object of type
TVPEPolyLine. This object provides the method AddPoint().
- ActiveX: the method Polygon() now returns an object of type TVPEPolygon.
This object provides the method AddPoint().
- ActiveX: the method AddBookmark() now returns and expects as parameter an object of type TVPEBookmark.
- ActiveX: the method ChartDataCreate() now returns an object of type
TVPEChartData. This object provides all methods related to chart data
manipulation.
- ActiveX: handles returned by the 64-bit ActiveX are invalid. Do not call
methods which return handles. Such methods were anyway only provided for
convenience.
Fixed
- VPE: Fixed crashes in multi-threaded applications
- VPE: RTF could output additional random characters at the end of a line
under very special conditions.
- VPE: AUTOPAGEBREAK event was not fired for RTF, if next page did exist.
- VPE: AUTOPAGEBREAK event was not fired when dumping a template for Text
and RTF, if next page did exist.
- VPE: Fixed CenterWindow() to consider multiple monitors, including
clipping to monitor boundaries. This affects the preview positioning as well
as the positioning of the "About"-Dialog.
- VPE: Custom paper sizes were not handled correctly in all cases
- VPE: In very rare cases PageWidth und -Height were read wrongly from VPE
document files
- VPE: Bug in pie chart module. If the upper left pie segment was exactly
25%, the exported PDF document had errors
- VPE: Bug in ExportXML, if a text-object contained an empty string
- VPE: ODT export bug fixed (horizontally or vertically flipped line not
taken into account during line export)
- VPE: For TplMaster = True the page orientation was not taken correctly
- VPE: Dumping a template with a picture object where the file name
contained fields caused erroneously LastError = 300.
- VPE: Fixed problem with embedded images in templates. (a) dimensions
were not computed for dynamic images. (b) memory / reference management.
- VPE ActiveX, .NET, VCL, Java components: When opening a document using
SwapFileName, some settings stored in the VPE document file had not been
used in the document.
- VPE ActiveX: Fixed bug in DevSendData()
- VPE VCL: PictureExportPage() is documented in the help as returning
boolean, but was declared in the code as returning integer.
- VPE VCL. Fixed project and installer for C++ Builder Rad Studio 2009 and
higher.
- dycodoc: Bug for grid snapping fixed
- dycodoc: Fixed bug when opening a VPE file with Rich Text in it.
- dycodoc: Fixed bug causing crash, if a field definition file for import
purpose was not found
- dycodoc: Splash windows displayed on the monitor display on which
dycodoc will be started and shown
- dycodoc: In case of fields with ambiguous field names, the field names
are prepended by their associated tables names to assure the uniqueness of
fields.
- dycodoc: Contracting/expanding field definition table did lead to crash,
if an edit control within the field definition pane was active
- dycodoc: Pressing PageUp- /PageDown-key during print preview caused
crash
- dycodoc: Dynamic picture object without picture content, whose file name
did contain a field, might have caused unexpected size change after storing
template.
- dycodoc: Reading a VPE document file could cause problems with page
dimensions and orientation when pages were in landscape format
- dycodoc: Setting page dimensions and margins for landscape orientated
pages through the page-property dialog had a bug
- dycodoc: Objects without a name could cause a crash
- dycodoc: Moving objects that included at least one horizontally attached
object might have caused incorrect bounding rectangle or incorrect object
position during page changing procedure
- dycodoc: MaxiCode bug caused by uninitialized string fixed
- dycodoc: Dependency arrow drawing routine modified
- dycodoc: Bug caused by invalid active tool fixed (bug occurs if a new
window is created)
- dycodoc: Bugs associated with the property grid items "Left", "Top", "Height",
and "Width" fixed. In case of inappropriate value specifications, objects
might have acquired unpredictable new sizes or positions.
- dycodoc: Bug with respect to erroneous page size during dycodoc preview
process fixed.
Release Notes Virtual Print Engine v6.0 (02 / 2010)
Updated
- Tested for Win 7.
- dycodoc: Pressing the TAB-key switches between the pointer tool and the
last used drawing tool.
- dycodoc: Grid snapping may be temporarily disabled, when pressing the
SPACE key while creating, resizing or moving an object or guide line.
- dycodoc: If for a selected object the left mouse button is pressed and
THEN the TAB-key is pressed, movement can be limited to horizontal or
vertical directions (directions can be switched by pressing the TAB-key
multiple times).
- VPE: New Java Control
- VPE: New Intelligent Mail Barcode
- VPE: Delphi 2009 / 2010 supported
- VPE: Last modified file time for image files now invalidates the image
cache. You may still not delete or modify files which are used in an open
VPE document! But you now may overwrite existing image files - if they are
NOT used with any open VPE document - so you can use the new images within
new VPE documents. Note: the image cache is per process and shared amongst
all documents / threads of a process, but it is not shared between different
processes.
- VPE: The default picture cache size is now 64 MB (was 16 MB before).
- VPE: The VPE DLL has now an additional Unicode API (just include the
u-headers after the normal headers, e.g. vpiface.h and then vpifaceu.h)
NOTE: The Unicode API is UTF-16 on Windows and UTF-8 on non-Windows
platforms. The new API still requires to use the CharSet property. It is
NOT true Unicode, it is just a thin wrapper around the ANSI API. This is
a first step into the direction of implementing full Unicode support, but
this will take additional time. The major problem is that we support
different platforms and rendered text layout needs to be 100% identical on
all supported platforms, so we need a much more generic solution than just
using the Microsoft Uniscribe API. The new Unicode API helped us internally
to support Delphi 2009 / 2010 as well as our API's for Java, PHP, Python and
Ruby.
- VPE Preview: The ruler markers of the VPE preview are hidden and do not
move, if the preview has not the focus (or, if embedded, the parent has not
the focus).
Fixed
- dycodoc: Fixed problems with installer on Vista / Win 7.
- dycodoc: A VPE document could not be opened correctly via
double-click in the Windows Explorer.
- dycodoc: Fixed bug due to invalid reference file path while opening old
v1.x dycodoc files associated with fields.
- dycodoc: Fixed some minor problems with Picture objects
- dycodoc: A newly inserted object was not correctly snapped to guidelines
or the grid.
- dycodoc: InplaceButton enabled for color grid items in the property grid,
if a VPE document is currently processed
- dycodoc: Fixed other minor problems
- VPE: Styled lines (e.g. with style PS_DOT, PS_DASH, etc.) were shown as
solid lines in the preview for lower zoom levels. This did only affect the
preview, not printing or export to PDF. Styled lines are now displayed
correctly in the preview for any zoom level.
- VPE: The automatic detection of symbol fonts did not work, if the
Font-Name was not written with exact upper- and lower-case letters, e.g.
"WEBDINGS" was not detected as symbol font, since the real name is
"Webdings". This has been fixed, since font names are handled
case-insensitive on Windows.
- VPE: Fixed bug in VpePictureExportStream().
- VPE: The call sequence hStream = WriteDocStream() followed by a
ReadDocStream(hStream), made VPE hang without an intervening call to
VpeStreamSeek(hStream, 0). The seek is logically still necessary, because
the file pointer is at the end of the file, but if omitted, VPE will not
hang.
- VPE MemoryStreams: Reading until EOF followed by a Seek() did not reset
the internal EOF state, so that succeeding calls to ReadDocStream(), etc.
failed.
- VPE: Fixed bug with POSTNET barcode and accordingly updated
documentation.
- VPE: Enhanced the embedded-flags parser, so a "[\0" is ignored.
- VPE RTF: For several zoom levels RTF was not WYSIWYG and it could even
happen that text did exceed the bounding rectangle of an RTF object to the
right.
- VPE Charts: For a pie chart, if a segment had a value of 0.0% it could
happen that it was drawn as a very huge segment.
- VPE .NET: The property DocFileReadOnly did not work correctly.
- VPE PDF: The Adobe PDF Spec says symbol fonts need to have a Macintosh
CMAP, i.e. Format 0 Encoding 1. This has been added.
- VPE PDF: There were several bugs in the True-Type Font Subsetter for
symbol fonts, for example the Wingdings font was not subsetted correctly (missing
and wrong glyphs).
- VPE PDF: If a hatched object was drawn and the next object was a text
object with a gradient or transparent background, the text was drawn with
the hatching.
- VPE PDF: All objects within generated PDF documents had a vertical and
horizontal offset of about 0.035mm to the right and to the bottom. As a
result there was a very small gap of about 0.035mm at the left and top
relative to the page origin, if an object was positioned at (0, 0).
Release Notes Virtual Print Engine v5.0 (03/2009)
Updated
- dycodoc v2.0 and VPE v5.0 Enterprise Edition released
- Professional Edition: New XML im- and export
- Professional Edition: New export to OpenDocument Text (OpenOffice ODT), can also be imported
by Microsoft Word
- Enterprise Edition: massive performance increase for dumping FormFields
from templates by factor 250+
- Tri-State Gradients now also for Ellipses possible
- To display characters from a symbol font, it is required to set the
Charset to VCHARSET_ SYMBOL. VPE now switches automatically the Charset to
Symbol, if a Symbol font is selected. Vice versa, VPE switches back to the
previously used Charset, if a non-Symbol font is selected.
- Documentation: updated explanation about Memory Streams to make it
better understandable
Fixed
- The "Programmer's Manual" had a documentation bug for Code 128 / EAN
128: for Codeselect A,B,C wrong values had been given.
- Method PictureStream(): in the manuals it was written that the
identifier may be empty (whilst not recommended). But the code required that
the identifier was not empty. This has been fixed, so now it may be empty.
- RTF Parser. Fixed minor bugs.
- PDF export. Fixed GPF, which could occur under very very very special
circumstances.
- Fixed problem with barcode of type Code 128.
- Internet Demo fixed.
- VpeView could not export licensed VPE documents created with editions
below the Professional Edition to PDF (option was not offered in the Save-As
dialog).
- Ghostscript reported a warning that garbage is following the final %%EOF
marker in PDF documents.
- Fixed other minor bugs
Release Notes Virtual Print Engine v4.0 R4 (06/2008)
The GIF import did not work correctly for 8-bit images due to a
modification in v4.0 R2.
- Under very special conditions the PDF export could cause a GPF.
- During printing - for very small page dimensions - bottom and right
parts of pages could be left out.
- PDF export. If a hatch style was selected by a previous object, a
following object could have applied the hatch style (e.g. a line or the
letters of a text object) under special conditions.
- Community Edition only: when printing and switching the page
orientation to landscape and then back to portrait, VPE did not switch
back to portrait mode.
Release Notes Virtual Print Engine v4.0 R3 (05/2008)
- Fixed a severe problem in the PDF Export Module. Under special
circumstances it could happen that some or all pages after the first
page were exported as blank pages. This bug was introduced in VPE v4.00
R2 due to the PDF output optimizations.
Release Notes Virtual Print Engine v4.0 R2 (04/2008)
- VPE update. The full version number is now shown in the upper right
corner of the about-screen.
- VPE update. New modern icons for the preview window, for VPEView.exe
and for VPE document files shown in Explorer.
- VPE update. The .NET component is now compiled against .NET 2.0.
Some internal handling mechanisms of the preview (reaction on
key-presses) had to be adjusted.
- PDF update. Palette-Images are now written palettized, instead of
being converted to 24-Bit RGB! This makes created PDF documents smaller.
- PDF updated. Generating more optimized smaller PDF files in general.
- VPE View update. The viewer now displays the name of the currently
open file in the window title bar.
- VPE fixed. If a document was stream-based and it had only a single
page and it was written to another file using VpeWriteDoc(), a GPF did
occur.
- VPE fixed. VpeGetEngineRenderMode() returned wrong values.
- VPE workaround. For buggy printer drivers of tractor / endless
printers (especially POS printers) the page format was not handled
correctly by the drivers. The new workaround should enable much more
tractor / POS printers to work correctly.
- PDF fix. For Rich Text (RTF), which had a solid background color (i.e.
"highlighted") the background color was not exported to PDF.
- VPE fix. VpeRenderRTFFile() and VpeRenderBoxRTFFile() had a small
memory-leak.
- VPE Mac update. Mac OS X writes into the dylib the output path of
the lib. This path is now removed from the dylib.
- VPE fixed. Windows platform. The method VpeSetFontSubstitution() did
not affect - as documented - the functionality of the preview and
printing.
- VPE workaround. On very few machines (about one of ten thousand) the
Font Mapper of Windows did chose e.g. for Helvetica the font Wingdings
instead of Arial. Research revealed that something in the registry on
such machines is defect. To avoid such problems, VPE now maps internally
on Windows platforms Helvetica to Arial, Times to Times New Roman and
Courier to Courier New.
- VPE fixed. RTF: under special circumstances for RenderModeVer3 the Underlining and Superscript /
Subscript did not work correctly and for RenderModeVer4 Superscript /
Subscript did not work correctly.
- VPE fixed. There was a bug in VpeGetDevPaperHeight/Width. For some
special code path the internal units were not converted to the document
specific units (specified by the property UnitTransformation). Therefore
both properties could return wrong - i.e. too large - values.
- VPE fixed. VpeZoomPreview() and VpeSetPreviewPosition() did not work
correctly.
- VPE fixed. If the preview was moved to a special scroll position (using
the Zoom-Tool) and FitPageWidth was activated, the Y-Ruler was not
correctly updated under special circumstances.
- VPE fixed. 1-bit images with a palette, which was not monochrome,
had been displayed monochrome (b/w).
- VPE fixed. The bits per pixel had not been extracted correctly from
GIF files, it was always 8.
- Charts update. The Windows-Fonts had been used. Now the Base 14
Fonts (PostScript) are used.
- Charts fixed. Non-Windows. Negative Numbers in the grid had been
displayed as positive numbers, if the sThousand-separator in the locale
of the system was undefined.
- VPE fixed. If the flag PRINTDLG_FULL was used for VpeSetupPrinter(),
the Page-Range could be filled out in the dialog, but it was not used.
- VPE fixed. If from the GUI of VPE (by clicking onto the "save"-button
in the toolbar) a VPE document file was written to the same name as an
existing VPE document file, the current document had been appended to
the existing one. Now the existing file is deleted first.
- VPE VCL fixed. RAD Studio: If the preview was embedded, resizing the
parent form caused flickering and regions of the VPE preview were
overdrawn with the background of the form.
- VPE .NET fixed. The default for the property BorderStyle has been
changed to "None" in accordance to the BorderStyle property of other
Winforms controls. This was required, because the designer of VS 2005
did omit the assignment of BorderStyle = None, because it thinks this is
for all components the default.
- VPE .NET fixed. If a document was not open, the handling of
PageWidth / PageHeight was wrong.
- Barcodes fixed. The generation of Code 128 could become under
special circumstances very slow, if the provided string was very long.
- Barcodes fixed. The checksum for the PZN barcode was not computed
correctly under special circumstances.
Release Notes Virtual Print Engine v4.0 R1 (09/2007)
- VPE fixed. Opening a VPE document file by clicking onto the "open"
toolbar button could cause a GPF under very special circumstances.
- VPE fixed. UNC paths could not be used for picture objects.
- VPE fixed. The HTML export could cause a GPF, if a picture object
was used whose underlying image file could not be found or read.
- VPE fixed. Chart objects were not written correctly to native VPE
document files.
- VPE fixed. The Embedded-Flag for the PenSize / PS was treated as
integer. Now it is treated as double and considers the
UnitTransformation. So a PenSize of 0.03 cm is written as "PS 0.03".
Updated all demo source codes and help manuals accordingly
- VPE fixed. In vpedemo.cpp _taccess() was used erroneously with the !
(not) operator.
- Help fixed. Some functions had been marked erroneously with return
type "int" instead of "VpeCoord".
- Help fixed. It was written that only western codepages are supported
by the Base 14 Fonts. In fact some more codepages are supported, the
help manuals have been updated accordingly.
Release Notes Virtual Print Engine v4.0 (08/2007)
Change of the License Terms
PDF Export Module Included
The PDF Export Module is no longer licensed separately. The PDF Export Module
Standard Edition is now included in VPE Standard Edition and Enhanced Edition,
and the PDF Export Module Enterprise Edition is now included in VPE Professional
Edition and higher. No extra fees!
Drastically Reduced Prices
We want to push VPE aggressively into the market, in order to move away from a niche product. For this reason we reduced the prices drastically. You
can help making VPE better known to the public by telling your friends,
collegues - and everyone who is involved into software development -
about VPE and its superior quality in terms of performance, stability, well
tought-out programming interface,
multi-platform support, in-depth documentation and support.
Royalty-Free
The VPE SDK license now allows for unlimited royalty-free distribution.
Before, the limit was 10.000 installations without paying royalties.
(dycodoc and the VPE Interactive Edition are still not royalty-free.)
SDK License per Machine
The VPE SDK (Software Development Kit) must now be licensed per machine it is
installed on. Before, a license was required per developer.
Annual Subscription including free Service Releases, all Updates and Support
The VPE SDK (Software Development Kit) is now licensed together with an
annual subscription including free service releases, all updates and support. Due to
this new subscription model and the drastically reduced price, updates will not
be available without a valid subscription.
VPE SDK Site-License
A new site license for one physical (respectively postal) address is now available for the VPE SDK.
Server Gold Licenses
As before, server licenses are required per server on which VPE is executed.
In addition a gold-license (unlimited servers at
different physical addresses) is now available.
For details about the new licensing terms, please see the help files.
Enhancements
Multi-Platform Support
VPE is now available for Windows (32-bit), Mac OS X (32-bit, PPC and Intel
architectures), Linux / Unix (32-bit), and Solaris (32- and 64-bit).
Whilst providing the same API across all platforms, so that PDF and native
VPE document files can be generated in the usual way, VPE will provide the preview
capability for the Windows platform only. On the other platforms the preview and
printing of PDF files will be delegated to platform specific tools, like Acrobat
Reader or Xpdf.
Therefore all methods and properties dealing with the preview and printing
are only available on the Windows platform.
Support for Windows 64-Bit will be made available at a later point in time.
Supports Windows Vista
VPE v4.x officially supports Windows Vista.
We detected a severe problem on Windows Vista with all VPE versions prior to
v4.0:
It can happen that lines of text disappear randomly in the preview.
Printing or export to PDF is not affected.
We researched the problem and also discussed it with Microsoft. In our opinion
this is a bug in Vista. We tested several things in our code and it seems that
Vista does not update portions of the screen as it should. For example, when we
draw a simple line together with the text, the problem does not occur. The
problem does also not occur, if the grid drawing is turned on. The problem does
also not occur when Vista is in "Classic Design", i.e. without Glass.
VPE's screen output is highly optimized, so that only those objects are redrawn
which need to be redrawn. This seems to cause problems.
All VPE versions prior to v4.0 are not specified to work on Vista, as written in
the License Agreement. We strongly recommend to use VPE v4.0 or higher on
Windows Vista.
After Microsoft could not provide any help to solve the problem, we researched a
workaround which is implemented into VPE v4.0 and higher. This workaround solves
the problem completely.
New Help Files
The VPE SDK (Software Development Kit) ships with help files in the HTML-Help
format with a complete new and nicer layout.
Help Integration into Visual Studio
The help files are now integrated into Visual Studio, including context
sensitive help (F1 key).
All Code in a Single DLL
There are no longer several different DLLs (for example one for barcodes, one
for charts, etc.). All code is compiled into a single VPE DLL (except the
JavaScript Engine for the Enterprise Edition and higher). This make the
deployment process for you much easier.
New HTML Export Module (Professional Edition and higher)
VPE documents can now be exported to HTML.
New 2D-Barcodes (Professional Edition and higher)
Implemented four new two-dimensional barcode types:
- PDF417
- Data Matrix
- Maxicode (UPS)
- Aztec
New Office2003 and Whidbey themes for the GUI (Graphical User Interface)
The theme for the GUI can be switched during runtime between Office2003,
Whidbey and the old Office2000 styles (on platforms different from WinXP the Office2003
and the Whidbey themes appear nearly identical, the difference becomes visible
on WinXP, because Office2003 uses the color theme of XP, whilst Whidbey uses a
constant color theme).
New GUI Functionality (Graphical User Interface)
New Open and Save Buttons in preview, which can be made separately visible by
new design-time properties (tbOpen, tbSave).
The Toolbar button "1:1" has been exchanged with "Show full page", which now
makes a page always fit into the preview window accordingly to its size, and the
button "Show Full Page" has been exchanged with "Fit to Window Width", which
makes a page always fit with its width into the preview window. Accordingly the
VKEY_ constants have been renamed.
So, if either of both modes is activated and you resize the preview, the
document scale will change accordingly.
The "Fit to Window Width" mode is activated by default. In order to gain the old
preview behaviour, set the property ScalePercent = 100 immediately after calling
OpenDoc().
In addition the "Zoom In" button now allows to center the view around the point
where the preview was clicked, as well as to drag a rectangle which shall be
zoomed into the center of the preview.
The maximum zoom level has been changed from 400% to 3200%.
New property ScaleMode allows to specify: (1) Fit whole page to
preview, (2) Fit page width to preview, (3) Activate Zoom-Tool, (4) Free scaling
New method ZoomPreview, allows to zoom a specified rectangle of the
current page into the preview
New method SetPreviewPosition allows to scroll the preview into the given
position
New methods ZoomIn, ZoomOut
New events:
VPE_BEFORE_OPEN_FILE, handles return code 1 as cancel operation so you can
display your own dialog and open a file for example from a database via a memory
stream.
VPE_AFTER_OPEN_FILE
VPE_BEFORE_SAVE_FILE, handles return code 1 as cancel operation so you can
display your own dialog and save a file for example to a database via a memory
stream.
VPE_AFTER_SAVE_FILE
New methods: OpenFileDialog, SaveFileDialog
New properties: OpenFileName, SaveFileName
New Error Code: VERR_CANCELLED, if the Open or Save dialogs have been cancelled
by the user
The event VPE_BEFORE_MAIL now handles return code 1 as
cancel operation, so the mail dialog is not shown. This allows you to use your
own mailing code.
Off-Screen Double-Buffering for the Preview
VPE now paints into a bitmap buffer and then copies the whole bitmap into the
screen.
This provides flicker-free moving from one page to another.
Smoother Scrolling (Graphical User Interface)
The scrolling code has been reworked and the scrolling is much finer and
smoother now.
User-Defined Localization for the GUI (Graphical User Interface)
The whole GUI can now be localized with user defined strings into any
language you wish.
New constant VGUI_LANGUAGE_USER_DEFINED as value for the Property GUILanguage
(.NET: UserDefined).
New method SetResourceString()
Advanced Layout Features (Professional Edition or
higher)
ClearPage() deletes all objects of the current
page.
RemovePage() deletes the current page.
InsertPage() inserts a page between two existing pages.
All three methods do also work for stream-based
VPE documents, i.e. documents which have been opened using SwapFileName (DLL:
VpeOpenDocFile).
Rounded Rectangles
New
Property CornerRadius, which allows to draw boxes, text and RTF with
rounded corners.
Compression for VPE Documents
VPE documents can be written compressed, this is the default now (see
property „Compression“). The new compression makes VPE documents about 60 - 80%
smaller.
Optimal Image Embedding
Images which have the flag PIC_IN_FILE set, are now embedded with their
original (compressed) raw data within VPE documents - i.e. a JPG image is
embedded as JPG, a TIF as TIF, etc. - and regardless of the number of times an
image is used within the document, it is only embedded once.
In previous versions of VPE, files were embedded in uncompressed form, and they
had been embedded as many times as an image was used.
Moreover, if the property Compression is activated, and if the embedded image is
not a TIF, GIF, JPG or PNG, it will be compressed automatically using the flate
(ZLIB) compression.
ATTENTION: When you read one or more VPE document files into the current
document using ReadDoc(), and those files have embedded images, you may NOT
delete or modify the source document files, while the current document is open!
This is, because VPE loads the embedded images directly out of the source
document files each time they are not found in the image cache.
VPE v4.x Document Files are Platform-Independent
VPE document files are now platform independent. They can be transparently
read and written on Little Endian as well as on Big Endian machines and on
32-bit platforms as well as on 64-bit platforms. Also the embedded file names of
referenced pictures are translated to the specific platform (i.e. correct slash and
backslash handling). However, since Windows is case insensitive for file names,
special care must be taken that you provide the file names for documents and
pictures in the correct
case sensitive way on all platforms!
Reading / Converting old v3.x Documents
VPE v4.0 can read old v3.x document files by default, but it can not write to
them, i.e. it can not add new objects or pages to existing v3.x document files.
Converting old v3.x document files to the new v4.0 format:
Open the document file with SwapFileName (DLL: use VpeOpenDocFile())
Call WriteDoc(<new file name>)
The file <new file name>, is in v4.0 format
After conversion, the document can not be read by VPE v3.x, an error is
returned.
New Memory Streams (Professional Edition and higher)
You can now read VPE documents, Pictures and RTF from memory-streams, and also
write all exportable document types to memory-streams (currently VPE, PDF,
HTML), as well as export images to memory-streams. Therefore you can read /
write such documents and images from / to databases as BLOBS. Moreover server
based applications can create documents like PDF or HTML very fast in memory (without disk I/O
overhead), and stream them for example via HTTP to web browsers.
Reading / Writing Document Page Ranges (Professional Edition and higher)
VPE Document files can now be read and written in a specified page range, e.g.
from page 5 to page 8, instead of all pages.
New Methods to Clear, Insert and Remove Pages (Professional Edition and higher)
The Professional Edition now allows to clear pages (i.e. delete all objects
in it), insert pages anywhere in a document and to remove pages anywhere from a
document.
Stream-Based VPE Documents can be modified On-Disk (Professional Edition and higher)
Stream-based VPE documents (i.e. opened with SwapFileName set / DLL:
VpeOpenDocFile() is used) can now be modified ON-DISK, i.e. you can clear, add, insert and
remove pages or objects (removal of objects
only offered by the Enterprise Edition and above). In previous versions of VPE,
after a document page was written to disk, it could not be modified.
Stream based documents can become fragmented, if you are adding a lot of new
objects to a page which has already been written to disk. Especially if you are
adding objects in multiple steps, i.e. you add some objects, seek to another
page, seek back and add again objects and so on, or open and close the document
file repeatedly while adding each time new objects. This will result in
decreased performance when reading pages of document files.
Defragmenting document files:
Open the document file with SwapFileName (DLL: use VpeOpenDocFile())
Call WriteDoc(<new file name>)
The file <new file name> is defragmented, whilst requiring nearly no
memory for the operation.
Delays When Calling OpenDoc() Removed
VPE does no
more query the default printer when calling OpenDoc(). Network printers
which had been offline caused huge delays each time calling OpenDoc(),
because the printer was queried by VPE. Now a printer is queried when any of the
printer or printing related methods is called.
RTF (Professional Edition and higher)
Properties Superscript and Subscript implemented
Property StrikeOut (keyword: "strike") implemented
One-Dimensional Barcodes (Enhanced Edition and higher)
The barcodes of type Code 128 / EAN 128 now allow to insert FNC1 - FNC4
control codes, and the character set (A, B or C) can now be forced to be
switched to a specific character set (this overrides the automatic charset
switching).
New Supported Image Types (Enhanced Edition and higher)
For TIFF images also JPEG compression (v7) is now supported (not the old 6.0
specification).
In addition to TIF, GIF, BMP, PCX, JPG, PNG, EMF, WMF now the following new
image file formats can be imported:
- ICO (Windows Icon)
- JNG (JPEG Network Graphics)
- KOA (C64 Koala Graphics)
- IFF/LBM (Interchangeable File Format - Amiga/Deluxe Paint)
- MNG (Multiple-Image Network Graphics)
- PBM (Portable Bitmap, ASCII or RAW)
- PCD (Kodak PhotoCD, reads always the 768 x 512 pixel image)
- PGM (Portable Greymap, ASCII or RAW)
- PPM (Portable Pixelmap, ASCII or RAW)
- RAS (Sun Raster Image)
- TGA/TARGA (Truevision Targa)
- WAP/WBMP/WBM (Wireless Bitmap)
- PSD (Adobe Photoshop, only 24-bit RGB or 24-bit RGB RLE, no layers /
masks)
- CUT (Dr. Halo)
- XBM (X11 Bitmap Format)
- XPM (X11 Pixmap Format)
- DDS (DirectX Surface)
- HDR (High Dynamic Range Image)
- G3 (Raw fax format CCITT G.3)
- SGI (SGI Image Format)
Notes:
- EMF and WMF is only supported on Windows platforms.
- For technical reasons, VPE can not identify automatically the following formats
by analyzing the file content: CUT, PCD, TARGA and WBMP. These formats have
simply no identifyable header. Of course VPE will identify them correctly by the
suffix of their file name.
- The maximum dimensions for exported WMF is limited to 60 x 60 cm. This does not
apply to EMF.
Importing Multi-Page Images (Enhanced Edition and higher)
Pages can now be extracted not only from Multipage-TIFF files, but also from
Multipage-GIF and Multipage-ICO files.
Exporting Multi-Page Images (Enhanced Edition and higher)
Writing Multipage-TIFF and Multipage-GIF is also supported.
New Dithering Algorithm for Picture Export (Professional Edition and higher)
Dithering to 256-colors is now done by color-reduction using the NeuQuant
neural-net quantization algorithm, which delivers very good quality. In addition
the faster Xiaolin Wu color-reduction algorithm can be selected.
Scale2Gray and Scale2GrayFloat (Professional Edition and higher)
Scale2Gray and Scale2GrayFloat now have a much higher quality, but they are
significantly slower. This is, because these routines are written in pure C++ (before,
they had been written in Assembler). The advantage is that the code can be
ported to different platforms now.
Gradients Enhanced
For gradients a third middle color can be defined, so three-dimensional
gradients can be created.
Base 14 Fonts Embedded in VPE DLL
The base 14 AFM files are now compiled into the vpe.dlls, therefore they are
no longer shipped with the installation and they are no longer required. Beside
the advantage that they do not need to be shipped and installed when deploying
VPE, the VPEFont.lst file is no longer created at runtime on Windows and Mac
platforms (which was a catalog file with information about the AFM files).
Default Charset on Mac OS X
The default charset on Macintosh is VCHARSET_MAC_ROMAN. If you have created text
with non-ASCII characters (for example umlauts) on the Windows platform and wish
to use them on the Mac, then set Charset = VCHARSET_DEFAULT.
Other Enhancements
- PDF Export:
performance improved, PDF files are generated about 20 – 50% faster
- PDF Export:
the generated PDF file is more optimized
- PDF Export:
all character sets supported by VPE are also supported now by the PDF Export
Module
- PDF Export: nicer hatching for exported PDF documents
- Best WYSIWYG experience in the preview now for any zoom-factor, not only
the 100% zoom-factor.
- Updated: DevEnum() uses more recent Windows API
- Gradients and Shadow now for Ellipses possible
- The elliptic gradient for rectangles now fills the whole rectangle
- Increased the default PictureCacheSize to 16 MB (was 4 MB before).
Note that the image cache does not use any memory unless an image is loaded
into memory and it uses only as much memory as required.
- Fixed: The .NET component did not handle the CharSet property correctly.
- Fixed: PDF Export: no more missing characters in the Turkish and Greek
codepages.
- Fixed: PDF Export: pies and pie charts were sometimes not displayed /
printed correctly in PDF readers.
- New VPE-VCL component projects for the integration into Borland
Developer Studio 2006 / 2007
Compatibility Issues
Introduction
We made a lot of changes and improvements to the inner code, as well as
cleanups for the API. This guarantees platform independence as well as a stable
code base and a consistent API that will last at least for the next ten years.
Major changes: we changed the internal coordinate system (which now has a
precision of 0.0001 mm), the external
coordinate system of the API and the text rendering engine.
But don't panic. We spent huge efforts to allow to port your old source code
to the new engine with only two lines of code.
If you want to use your old source code, you have to insert the following code
after calling OpenDoc():
VPE.UnitTransformation = VUNIT_FACTOR_MM10
VPE.EngineRenderMode = VENGINE_RENDER_MODE_VER3
That's it.
But when using the Ver3-Renderer, your source code and the created documents
are not platform independent. The Ver3-Renderer is using the Windows API to
render text. The new Ver4-Renderer is using our own platform independent code,
so text is rendered on all platforms (Windows, Mac OS X, Linux, Unix, Solaris,
etc.) identically. For new applications, we strongly recommend to use the new
rendering engine to gain platform independent source code and documents. The
Unit-Transformation is up to your preferences, but basically it will be easier
to use centimeters or inches instead of 1/10th of millimeters.
For details about differences between the Ver3- and Ver4-Renderer, please see
below.
Important:
- All coodinates supplied to the VPE API are now of type double instead of long.
- The type of all handles has been changed from long to
VpeHandle.
The VpeHandle type is typedef'd as a void pointer, which is a
32-bit integer on 32-bit platforms and a 64-bit integer on 64-bit platforms.
Coordinates
The new internal coordinate system now has a precision of 1/10.000 mm. The
VPE API provides a new universal coordinate unit transformation mechanism! You
now supply double values (typed as VpeCoord) to the VPE API and select whether
the supplied values are in centimeter units, inch or in the old classical 0.1mm
way.
Example in centimeters: VPE.Print(1.5, 1.5, “hello world!“)
Therefore all methods / properties which received a 0.1mm coordinate have been
changed to the data type double.
With: VPE.UnitTransformation = VUNIT_FACTOR_MM10 you can switch back to
the old unit transformation, so that your old source code is fully compatible to
VPE v4.0.
With: VPE.UnitTransformation = VUNIT_FACTOR_CM you switch to the centimeters
unit transformation, this is the default after calling OpenDoc()
With: VPE.UnitTransformation = VUNIT_FACTOR_INCH you switch over to the inch
unit transformation
New values for the V-Flags (VFREE, VLEFT, etc.)
Due to the new internal coordinate system, the values of the V-Flags needed
to be changed. If you have always used the V-Flags in your source code, the you
need nothing to do, but recompile your program. If you have used constant values
like -1 instead of VFREE, then you need to change your source code. If you
change it, you should start using the V-Flags.
New platform independent text rendering engine
New platform independent rendering engine, which works identical on Windows
as well as on Mac OS X, Linux, Solaris and all other platforms. Due to the new
rendering engine, text strings are computed a bit wider and a bit less in height
than in v3.x. So in very rare cases it can happen that word breaks occur on
different positions than in v3.x, which means that text objects might require
more width than before, but also less height. For this reason we implemented a
property, so you can switch back to the original rendering engine. This can be
achieved by setting EngineRenderMode = VENGINE_RENDER_MODE_VER3. This is useful
to adapt your existing code to this new version of VPE. But the old rendering
engine is only available on Windows. Therefore, for platform independence, it
is strongly recommended to use the new rendering engine. It is also likely
that the old rendering engine will be removed in a future version of VPE (in
several years).
The new font manager of VPE supports the following character sets:
- VCHARSET_SYMBOL
- VCHARSET_MAC_ROMAN
- VCHARSET_WIN_ANSI
- VCHARSET_WIN_HEBREW
- VCHARSET_WIN_ARABIC
- VCHARSET_WIN_GREEK
- VCHARSET_WIN_TURKISH
- VCHARSET_WIN_VIETNAMESE
- VCHARSET_WIN_THAI
- VCHARSET_WIN_EAST_EUROPE
- VCHARSET_WIN_CYRILLIC
- VCHARSET_WIN_BALTIC
- VCHARSET_ISO_LATIN_1
- VCHARSET_ISO_LATIN_2
- VCHARSET_ISO_LATIN_3
- VCHARSET_ISO_LATIN_4
- VCHARSET_ISO_CYRILLIC
- VCHARSET_ISO_ARABIC
- VCHARSET_ISO_GREEK
- VCHARSET_ISO_HEBREW
- VCHARSET_ISO_LATIN_5
- VCHARSET_ISO_LATIN_6
- VCHARSET_ISO_THAI
- VCHARSET_ISO_LATIN_7
- VCHARSET_ISO_LATIN_8
- VCHARSET_ISO_LATIN_9
The Preview now opens by default in a "Fit to Window Width" mode
A "Fit to Window Width" mode for the preview is now by default activated.
This means the scale is computed accordingly to the width of the preview, so the
displayed page fills the preview from the left to the right. In order to gain
the old preview behaviour, set the property ScalePercent = 100 immediately after
calling OpenDoc(). See also the new property ScaleMode.
Win95/98/Me and NT no longer supported
It is possible that VPE works on those platforms, but we haven't tested it
and they are no longer officially supported. VPE does not execute on Win95 due to missing symbols in kernel32.dll.
DXF support dropped
VPE can no longer import DXF files. If this is an issue for you, use the
following workaround: Acquire a license of the Davinci image import library (www.herdsoft.com)
and use it for importing DXF files as Enhanced Metafiles (EMF). Provide the EMF
to VPE.
FLT support dropped
VPE can no longer use the Microsoft Office image import filters (did anyone
ever use them? We doubt it.)
The flags parameter for the Picture()-method has been eliminated
Each flag is now implemented as property. Some flags have been removed,
because they were way too complicated and no one did ever use them.
The new properties (for VPE documents as well as for VPE objects) are:
bool PictureCache (was: PIC_KEEPIMAGE, default is true)
bool PictureScale2Gray (was: PIC_SCALE2GRAY)
bool PictureScale2GrayFloat (was: PIC_SCALE2GRAY_FLOAT)
bool PictureX2YResolution (was: PIC_X2YRESOLUTION)
bool PictureBestFit (was: PIC_BESTFIT)
bool PictureEmbedInDoc (was: PIC_IN_FILE)
bool PictureDrawExact (was: PIC_EXACT)
New VpeHandle data type (DLL only)
VpeHandle data type introduced for 64-bit compatibility. Use for all handles
now this new type: Document, Polygon, Polyline, Bookmark, Table, Field,
DataSource, Object, Control, Streams
On 32-bit platforms VpeHandle is a 32-bit integer value, on 64-bit platforms it is
a 64-bit integer value.
Example: VpeHandle hDoc = OpenDoc(...)
New Ordinals (DLL only)
The ordinals of the VPE DLL’s have changed. If you are using the DLL and if
you are importing the functions of the DLL by ordinals, you must reorganize the
ordinals. If you are using C/C++ and have been linking against our import
library or DEF file, we have done the work for you. Just link to the new import
library / def file.
If you are importing the DLL functions by name, you only need to delete the
functions we have removed from the DLL as listed above.
Other Minor Compatibility Issues (mainly cosmetic changes)
- changed: PictureExportColorDepth is now by default True-Color (24-bit),
was palette color (8-bit) before
- renamed: PictureExportQuality to DocExportPictureQuality
- changed: long ExtIntDA(long hDoc, long i, long s) to LONG
ExtIntDA(VpeHandle hDoc, LONG i, LONG s)
- changed: Event BeforeMail() now with an additional cancel-paramter:
BeforeMail(boolean Cancel)
- changed: VPE Control: the property Scale is no longer a design-time
property, only runtime.
For existing Delphi / C++ Builder projects, this will cause an error, when
loading an existing project. Ignore the error to continue.
- renamed: VpeSetDefOutRectSP() to VpeSetDefOutRect()
- renamed: VpeSetOutRectSP() to VpeSetOutRect()
- removed: VpeGetOutRect(), VpeGetPosRect(), VpeSetPosRect()
- removed the parameter POINT * from VpePolyLine() and VpePolygon()
- removed the parameter with_filters from VpeGetPictureTypes()
- removed: VpeInitCharts()
- removed: VpeGetObjCoords()
- removed: SetScaleStep and SetScaleStepPercent, the scaling is now done in predefined non-linear
steps
- removed: EnableMouseScaling
For your existing .NET projects this will
cause a compile error. To solve the problem remove the offending line where
MouseScaling is assigned a value.
For existing Delphi / C++ Builder projects, this will cause an error, when
loading an existing project. Ignore the error to continue.
- removed: VpeObject.PictureFlags (DLL: VpeGetObjPictureFlags() and
VpeSetObjPictureFlags())
- removed: DefaultBitmapDPI and VpeKeepBitmapAspect
- renamed: KeepPictureAspect to PictureKeepAspect
- renamed: SetDefaultPictureDPI to SetPictureDefaultDPI
- 4-bit palette images can not be rotated
- Metafiles (WMF) and Enhanced Metafiles (EMF) can not be rotated anymore.
- Dither_16 flag removed for Picture Export, dithering to 16 colors no
longer supported
- changed to type int: VpeSetObjectID and VpeGetObjectID, as well as
VpeCreateUDO and VpeGetUDOlParam
- PICEXP_ flags renamed, property PictureExportOptions
removed, instead new properties JpgExportOptions, TiffExportOptions,
GifExportOptions, BmpExportOptions, PnmExportOptions
- Tiled Image support for TIFF has been dropped
- .NET only: changed the methods TVPEPolyLine::AddPoint(Point p) to
TVPEPolyLine::AddPoint(double x, double y) and
TVPEPolygon::AddPoint(Point
p) to TVPEPolygon::AddPoint(double x, double y)
- .NET only: the property PreviewScale is no longer a design-time property.
For your existing .NET projects this will cause a compile error.
To solve
the problem remove the offending line where PreviewScale is assigned a value.
VPE v3.60 (09/2004)
Release Notes v3.60
- Note: you may install this new version safely in parallel to any existing prior
VPE version.
- New native .NET Controls: Winforms .NET Control and WebServer .NET
Control
The controls are developed in native C# and overcome several problems, which arise
when using an ActiveX under .NET. As all our VPE Controls (like the ActiveX and VCL), the
VPE-.NET Control uses internally the VPE DLL. The code base of VPE will remain C++.
There are some differences, between the old ActiveX / VCL and the new .NET controls:
- According to the .NET programming paradigm, all constants of VPE, like for
example PIC_KEEPIMAGE, etc. have been moved into typed enumerations, e.g.
enum PictureFlags { KeepImage, ... };
- Some events were renamed, according to the standard event naming conventions of
.NET, e.g. RequestClose à Closing
- Some properties were renamed, according to the standard naming conventions of
.NET: e.g. Caption à Text
- New TVPEPolyLine, TVPEPolygon and TVPEChartData Object
- New UDOGraphics property for UDOs
- Updated: The version number and file name of the VPE ActiveX changed (from v3.50
to v3.60, i.e. VpeCtrl35.ocx changed to VpeCtrl36.ocx). In order
to use the new ActiveX in your existing applications, you must remove the old control from
your forms and insert the new one.
- Updated: The LZW patent has expired. Therefore VPE and dycodoc will now import
GIF and LZW-TIFF images without specifying the flag PIC_ALLOWLZW.
- Updated: Server licenses can no longer be activated by calling the License()
method of VPE. Instead, server licenses are installed on machines using our new
License Management Tool. The License() method was removed from the ActiveX.
Any additional license keys, e.g. for the PDF Export Module, are now entered during setup.
The licensing is then done by the standard COM licensing mechanism.
- Updated: Enhanced Edition and higher: Metafiles (WMF, EMF and DXF) can now be
rotated in 90 degree steps (before, only bitmap images could be rotated).
- Updated: VPE can now be run as a service. However, this requires a valid Server
License, otherwise demo banners will be shown.
- Updated: VPE now stores paths to pictures (i.e. images) within VPE documents as
relative paths. This means the paths are converted to positions relative to the VPE
document itself. This new technique makes VPE document files much more portable.
Example:
A VPE document is created at c:\projects\docs\mydoc.vpe
The document includes a picture from c:\projects\images\logo.jpg
VPE will convert this path to a path relative to the position of the VPE document,
i.e. to: ..\images\logo.jpg
This allows to move the VPE document file to a different location, as long as the image is
moved to the same relative position (..\images\).
A better example would be that the VPE document file is created at:
c:\projects\docs\mydoc.vpe and the picture is located in the same directory, i.e.
c:\projects\docs\logo.jpg. In this case the resulting relative path would be logo.jpg
- Updated: VPE DLL: You can now install a message callback function. In this case
VPE will not send events via SendMessage() or PostMessage() to your application window,
instead it will call your callback function. This is very useful, if you want to run VPE
on servers or in batch jobs in windowless applications.
For details please see the new function VpeSetMsgCallback().
- Updated Professional Edition and higher: new property ExportNonPrintableObjects.
By default, objects which are marked as non-printable are not exported (for example to
images or PDF). If this property is set to True, objects which are marked as
non-printable are exported, too.
- Updated: If a licensed (non-demo) VPE Document was viewed in VPEView (the
stand-alone document viewer), and the e-mail button was pushed, VPEView mailed the
document as PDF file marked as demo. Now - depending on the licensing when a VPE document
was created - VPEView will mail the attached document as:
1) Trial-Version: attachment is a non-licensed (demo) PDF file.
2) VPE license applied, but no PDF license: attachment is a licensed (non-demo) VPE file.
3) VPE license and PDF license applied: attachment is a licensed (non-demo) PDF file.
Exception: if the property EditProtection is activated, the VPE document file must
have been created using the PDF Export Module Enterprise Edition. In this case VPEView
will attach a PDF document which can only be printed, but not modified. If EditProtection
is activated and the PDF Export Module Standard Edition has been licensed, VPEView will
not attach a PDF file, but a VPE document file.
- Updated: "Open read-only" checkbox in VPEView's open file dialog
removed.
VPEView opens files always write protected (i.e. in read-only mode).
- Updated: Scale2GrayFloat was not in effect, if an image was exported.
Note: Scale2Gray and Scale2GrayFloat are not in effect if images are exported to metafiles
(WMF/EMF). Furthermore Scale2Gray images are always exported with a resolution of 96 DPI,
regardless of the target resolution of the exported image. Only Scale2GrayFloat images are
exported scaled to the target resolution of the exported image.
- Updated: VPE Standard Edition can now import RLE encoded BMP files. The higher
editions could do this always by using the Davinci graphics import library.
- Updated: Professional Edition and higher: new properties UDOIsPrinting,
UDOIsExporting, UDODpiX and UDODpiY (see manual / help files for details)
- Updated: Enterprise Edition and higher: new methods InsertPage() and RemovePage()
Now you can insert blank pages anywhere within the document as well as remove any pages
from the document.
- Updated: Implemented Workaround: some functions of Win9x/Me can not handle
bitmaps larger than about 16 MB, which caused huge bitmaps not to be displayed. There is
also a limit in WinNT / 2000 / XP, which is around 24 - 32 MB.
Large bitmaps are now displayed correctly in VPE.
- Updated: Implemented Workaround: DevPaperFormat, DevPaperWidth and DevPaperHeight
returned for some printer drivers USER_DEFINED, even if a standard paper format was chosen
in the printer setup dialog. The cause was that some printer drivers return slightly
different values than they should, e.g. 2501 instead of 2500 for the paper height. VPE is
now using a fuzzy search on the paper dimensions to find settings matching the predefined
paper formats.
- Updated: Implemented Workaround: due to the security features in Outlook Express
6 and Outlook 2002 or higher (which can also be installed for earlier Outlook versions as
security fix), Outlook will show a warning message that an external application is trying
to access the address book, when sending an e-mail. To avoid this, VPE does not call
MAPIResolveName() anymore. If you want VPE to look up a name in the mail client's address
book, add the new VMAIL_RESOLVE_NAME = -2147483648 (hex 0x80000000) to the RecipientClass
parameter of the method AddMailReceiver(). E.g. AddMailReceiver("Frank
Miller", VMAIL_TO + VMAIL_RESOLVE_NAME). However, if you use this flag - with Outlook
Express 6 or Outlook 2002 or higher or the security fix installed - this will cause a
warning message to appear that an external application is trying to access the address
book.
The warning is also shown by Outlook - and can not be avoided - if you sent e-mails
without showing a dialog (i.e. MailWithDialog = False).
The warning can be disabled in Outlook with "Options | Security" by unchecking
"Show warning if other applications try to send an e-mail under my name".
- Note: PrintOptions = PRINT_ALL + PRINT_NO_AUTO_PAGE_DIMS will speed up
printing. Also, if a network printer is offline, the setting will shorten the wait period
by much, because VPE will not try to communicate with the printer driver.
- Note: Due to the new server licenses and their new thread-safe code introduced
with VPE v3.50, VPE will open documents with demo banners activated, if the number of
allowed processes or threads (each is counted as one user) is exceeded.
For non-server licenses, a maximum of three processes - with the same license key - may
simultaneously open VPE documents without showing demo banners, but one process may open
as many VPE documents as wanted (within one thread, i.e. within one instance of an
application).
- Note: New Standard Terms and Conditions of Use, please see the help file
"Programmer's Manual" for the new Standard Terms and Conditions of Use.
Amongst other things, it is much more clearly regulated, in what cases multiple developers
are using a VPE Software Development Kit (SDK) License, e.g. if VPE is encapsulated in a
layer (like a control, component, library, class library or an interpreter for control
files, etc.), and a developer is using this layer, it means that the developer is using a
VPE SDK License.
VPE SDK Licenses can no longer be sold or transferred.
Updates or Upgrades of our software constitute an inseparable unit together with the
original software from IDEAL Software GmbH. An update or upgrade and the original software
may not be used by two different persons at the same time.
Furthermore it is clearly regulated that Server Licenses are required for each server VPE
is running on. Please read the new Standard Terms and Conditions of Use carefully.
- Note: Due to the increased and unbearable amount of spam mail (several
thousands per day), we deleted all e-mail addresses except our standard support e-mail address.
This is the only valid e-mail address. Furthermore,
it is required to put the keyword "VPE" in the beginning of the subject line. If
you omit the keyword, it is very likely that we will not receive your e-mail. Please keep
this in mind.
VPE v3.50 (10/2002)
Release Notes v3.50
· Updated: This new version offers direct export to the Adobe
PDF file format.
The PDF export module is available separately as an add-on for all
editions of VPE.
First of all, the API of VPE has not been changed, i.e. VPE's call interface is 100%
backwards compatible.
Internally, a lot has been changed: in order to implement PDF export into VPE, a complete
new layer archictecture has been implemented, called 'DAL' (Device Abstraction Layer). For
any painting operation, VPE now calls the DAL interface and DAL itself decides how and
onto which device the output shall be created.
For this reason major parts of VPE have been rewritten, including the code for handling
images: we introduced a complete new cache mechanism (three-level associative) and a
complete new internal handling for images, which will allow a port to Linux and other Unix
derivates in future.
Due to the new architecture, two new DLL's make up the PDF export module:
· VPDF32.DLL
the add-on Device Abstraction Layer for PDF export
· VZLIB32.DLL
v1.1.4.0 of Zlib, the famous compression library by Jean-loup Gailly and Mark Adler (with
the already fixed security problem)
If you don't want to export to PDF, both DLL's need not to be
shipped with VPE to your end-users. VPE loads these DLL's dynamically when the PDF export
is initiated.
The DAL for Windows output has been statically linked to the VPE DLL's.
· Updated: New method VpeClearTplFields() (ActiveX / VCL: TVPETemplate.ClearFields)
Sets all field values of the given template to NULL.
· Updated: New
property VPE.MailAutoAttachDocType
In order to specify whether the VPE document shall be attached as native VPE document
or as PDF document. See the "Reference" help files / manuals for details.
· New method VpeClearTplFields() (ActiveX / VCL: TVPETemplate.ClearFields)
Sets all field values of the given template to NULL.
· Updated: VPE and the PDF Export Module are NOT Thread-Safe, only
the server versions are thread-safe, new property for the server versions: VPE.EnableMultiThreading.
With VPE v3.50, server licenses must be acquired in order to use VPE on servers. Please
see our website www.IdealSoftware.com (european mirror: www.IdealSoftware.de) in the
section "Ordering" for details.
· Updated: except the VPE Interactive Edition, the new ActiveX can
be used in the .NET environment. The interactive features of the VPE Interactive Edition
do not work correctly in the .NET environment.
The problem is currently being researched.
· Updated: VPE is shipped with demo sources for .NET.
· Updated: A document is now printed much faster, VPE is caching
selected form and paper dimensions for the currently selected device.
· Updated: Improved Code for SetDevice(), it could happen in
special environments that it didn't work correctly if network devices were selected using
UNC (e.g. "\\Ideal\Office Printer").
· Fixed: VPE v3.20 R4 could cause a floating-point exception
(especially in Delphi or CBuilder), when using RTF in templates or calling any RenderRTF()
function.
· Fixed: VPE v3.20 R1 - R4 could cause a GPF in a very special
case: if AutoBreak was enabled and the last command of a Rich Text Object was \par and if
the last line of the RTF Object did end exactly on the bottom margin of the page, i.e. a
page break was caused by the final \par, but on the next page no text output was
necessary.
· Fixed: The UPC-E barcode was generated wrongly for some special
character sequences
· Implemented Workaround: some printer-drivers returned incorrect
values for a system call, which could cause a GPF in VPE (for example FinePrint). This is
solved.
· Implemented Workaround: on printers with restricted access rights
(in a network) some function calls in the Windows API failed. This is solved.
· Note: in order to make the printer accept the automatic selection
of user defined page formats, it might be necessary to define a form of the desired page
format.
Example: with "Start Menu | Settings | Printers" the window with the installed
printers will appear. Right-click on a blank area of the window and choose "Server
Properties" from the pop-up menu. In the upcoming dialog, define a custom form of the
desired dimensions. For example name it "Test" and set the width to 760 and
height to 1280. In your source code, select the printer and the desired page format like
this:
VPE.Device = "Epson LQ-550"
VPE.PageWidth = 760
VPE.PageHeight = 1280
That's it.
· Note: It has been reported, that some very few printer drivers
have a bug and do not print in duplex mode, unless you deactivate that VPE instructs
printers automatically to choose the paper according to the current page dimensions of the
VPE document
(for example with PrintOptions = PRINT_ALL + PRINT_NO_AUTO_PAGE_DIMS).
VPE v3.20 (3/2001)
Release Notes v3.20
All Editions:
- Enhanced the Manuals / Help files by many details.
The ActiveX / VCL Reference now also contains hyperlinks into the Programmer's
Manual.
- The following properties can now be read and written, instead of being writeable only:
PenSize, PenStyle, PenColor, SetPen, NoPen
BkgMode, TransparentMode, BkgColor, BkgGradientStartColor, BkgGradientEndColor,
BkgGradientRotation, HatchStyle, HatchColor
FontName, FontSize, CharSet, TextAlignment, TextBold, TextUnderline, TextUnderlined,
TextStrikeOut, TextItalic, TextColor, SelectFont, SetFont, SetFontAttr
Rotation
PicturePage, PictureType
SetBarcodeParms, BarcodeAlignment, BarcodeMainTextParms, BarcodeAddTextParms,
BarcodeAutoChecksum, BarcodeThinBar, BarcodeThickBar
Viewable, Printable, Streamable, Shadowed
UDOlParam
CharCount, DividerPenSize, DividerPenColor, AltDividerNPosition, AltDividerPenSize,
AltDividerPenColor, BottomLinePenSize, BottomLinePenColor, DividerStyle, AltDividerStyle,
FormFieldFlags
- DevPaperWidth and DevPaperHeight returned null, if the device driver had set the page
dimensions through DevPaperFormat (for example US_LETTER). The code is changed, so both
properties compute and return the values accordingly to the paper format instead of
returning null. They now return null only in case of a general device driver problem, or
if the paper format is unknown to VPE.
- New properties DevPrintableWidth and DevPrintableHeight, return the
dimensions of the whole printable area of the currently selected output device.
This way you can now compute the left and top unprintable areas as well as the right and
bottom unprintable areas.
- Enhanced the printing code: new PrintOptions Flag "PRINT_WAIT_COMPLETION":
Normally, VPE fires the event VPE_PRINT with wParam = PRINT_MSG_END and exits from the
printing code after the job has been transfered completely and successfully to the
spooler. But because Windows begins to check the printer status only, after the print job
has been completely transferred to the spooler, VPE can't recognize the status of the job
in the queue.
By using PRINT_WAIT_COMPLETION, VPE loops within the printing code until the job
has been printed completely.
Use the flag PRINT_WAIT_COMPLETION, if you need to be 100% sure that the job has been
printed successfully. The disadvantage is that VPE and your application will stop
execution until the job has been printed completely.
Note: even if printing directly to the printer without the Windows spooler, VPE will not
detect printer errors if the flag PRINT_WAIT_COMPLETION is not used.
- Extended the list of predefined paper formats by much: 77 new predefined paper formats
- Now considers form settings of printer drivers under WinNT / Win2000:
some printer drivers did not return valid information about the current paper format and
-dimensions, but did set the dmFormName member of the DEVMODE structure.
This is now considered.
- New Event VPE_CANCLOSE
VPE requests confirmation from your application if the preview can be closed.
- STRG + Mouse-Wheel = Zooming in very fine steps in the preview
- Tooltips now reflect the desktop settings (regarding the font settings)
- RenderPrint() and RenderWrite() now set RenderWidth = 0 and RenderHeight = 0 if an empty
string is passed. Before, they returned very small values, which are correction factors
due to round-off problems when rendering text on the internal ultra-high resolution
device.
- Modified printing code slightly, DOCINFO structure uses Output Filename.
- VPEView now remembers the path of the last browsed folder when restarted
- The property IsPrinting is now true (as in older versions) during the printer
setup process AND the real printing process. This is, because you may not close your
application while the setup or the printing is being performed.
- Implemented workaround for some faulty printer drivers: printing colored hatch styles to
some color printers could cause wrong or mixed-up colors to be printed.
- If the VPE ActiveX is embedded in a form, it now takes over the focus, if you click with
the mouse into it (wasn't so before). Also, if the VPE ActiveX is embedded in a form, the
Mouse-Wheel is handled correctly.
- If the VPE VCL is embedded in a form, it now takes over the focus if you click with the
mouse into it. Also, if the VPE VCL is embedded in a form, the Mouse-Wheel is handled
correctly.
- VCL and OCX now make use of exception handling
- VCL: inserted the properties Align, Anchors, Constraints and Enabled
Enhanced Edition and Above
- Integrated a complete new Barcode Library for VPE Enhanced Edition and above
(BarVisD.dll). The new library supports now a total of 38 different barcode types
(compared to 21 before).
- The font for the barcode can be selected (for example UPC-A and UPC-E require an OCR-B
font).
- The new library is able to generate automatically check digits for each barcode, if
wanted.
- Where possible, the ratio between thick and thin modules can be set by code.
- The POSTNET barcode now supports 5, 9 and 11 digits.
- New flag for the text position of barcodes: BCP_DEFAULT, this will choose automatically
the standard appropriate for the selected barcode type.
- New barcodes are:
- EAN2 (standalone)
- EAN5 (standalone)
- Code 11
- Code 128A
- Code 128B
- Code 128C
- Code 3 of 9 Extended
- Code 93 Extended
- MSI
- PZN (Pharma Code)
- ISBN (International Standard Book Number)
- ISBN + EAN5
- Royal Mail 4 State Customer Code
- Identcode (German Post AG)
- Leitcode (German Post AG)
- 2 of 5 Matrix
- Telepen-A
- Included updated versions of the graphics import library Davinci and the image
processing library Leonardo.
- If PIC_TYPE_AUTO is used, VPE is now able to determine the image type not only by
looking at the file suffix, but also by examining the file itself. So PIC_TYPE_AUTO will
work in most cases even if the file suffix does not describe the image type. Example: you
try to import a JPEG image with the name "test.001" and have set the PictureType
= PIC_TYPE_AUTO, even then VPE will detect that this is a JPEG file!
Professional Edition and Above
- New ChartProperties and Constants:
ChartLineWidthFactor
ChartBarWidthFactor
ChartLegendFontSizeFactor
ChartXLabelFontSizeFactor
ChartYLabelFontSizeFactor
ChartTitleFontSizeFactor
ChartSubTitleFontSizeFactor
ChartFootNoteFontSizeFactor
ChartAxisTitleFontSizeFactor
ChartPieLegendWithPercent
ChartPieLabelType
- New property PrintScale: value range: 0.01 >= scale <= 6.0
- This property sets the scale for printing. It does not affect the scale in the preview.
- VPE Professional Edition is now compatible with dycodoc the new Visual Designer: dycodoc
can read and edit VPE Document files created with the Professional Edition or any higher
edition.
- New property EditProtection controls, wether a VPE Document can be processed by dycodoc.
By default, this flag is True = dycodoc can process VPE Document files.
Enterprise Edition and Above
- Ships with dycodoc the visual designer to layout form templates by
point-and-click
- Extended VPE API to process the templates generated by dycodoc
- Additional FormField Object
- Allows to query and modify an object's properties even after it has been inserted into a
VPE Document
- The content of single pages can be deleted
Changes from the beta version:
- Final Release. The code name "FormFusion" for the new visual designer has been
replaced by the final name "dycodoc" (DYnamic COntent DOCuments)
- Complete Online help and "Guided Tour" manual
- Supports FormFields
- The content of pages can be deleted
- The VPE API for template- and object processing was enhanced and all reported bugs have
been removed (We want to thank all our beta testers for the help they provided!)
- The file suffix for dycodoc document files did change respectively from FFD to
DCD. Please rename all .FFD files into .DCD (the file format is 100% upwards compatible).
- All templates need to be re-generated: open each DCD file and save it immediately, this
will update the TPL file.
- The feature of grouping objects has been removed from dycodoc, the feature will
be
re-introduced in a later version
VPE v3.0 (3/99)
The Preview (all Editions the same):
- Each button has now new Tooltips
- All buttons and even the whole toolbar can be hidden. Also
the whole statusbar, or the quick-scroller and the text segment in it can be hidden.
- The preview can now be shown - and the user can scroll
through it - while you are still generating a document. Works with and
without multi-threading!
- The document is not destroyed, when the user closes the
preview (optional).
- When the user scrolls to another page, the preview jumps to
the top position of the page (optional).
- 10 Languages: VPE selects for all tooltips and dialogs
automatically the right language (depending on the country setting in the control panel).
Supported languages are: English, Spanish, German, French, Italian, Dutch, Danish,
Swedish, Finnish, Norwegian. Optional you can select the language by code.
|
Features of the Standard Edition:
- Over 130 (!) new functions (215 functions
compared to 81 functions in v2.2)
- Totally new ActiveX with full HTTP-support
to create server based reports. Therefore you can plug it into browsers on the intra- and
internet and even reference image and RTF files with for example
"http://www.my-server.com/image1.gif" in your
source code (VB Script or Java(-script)). On the other hand, you can create a VPE Document
file in your native programming language on the server (or transfer it there) and instruct
the ActiveX in the browser to load and display a specific document file from the server in
the intra- or internet. Moreover, the images contained in the document may be references
to image files stored on the server.
- Additionally, the new E-Mail feature allows very easily to
fax VPE-Documents directly with MS-FAX and MS-MAIL through MAPI (and it can be done
without user interaction - only by code)
- ActiveX implemented with ATL, therefore no
longer huge MFC and OLE DLL's needed
- Imports: BMP, WMF and EMF
(EMF: 32-Bit version only)
- Barcodes not included
- Set the orientation (landscape or
portrait), the printer's paper-bin and the page dimensions
for each page
- Rendering functions for text and images,
i.e. compute their size before inserting them into a document
- New Error-Handling: VpeGetLastError()
returns detailed error information
- All rectangular objects (like boxes and text) can now have a
gradient background color. For printing, this color can be set to a solid
color, like for example a very light gray. Furthermore VPE can optional determine the
connected printer (b/w or color) and chose itself if to print gradients or a solid color.
- New strikeout property for text
- New AUTO_BREAK Message informs about an
auto break and allows to modify the new page (inserting objects, changing margins, etc.)
- Font's Character-Set can be chosen
separately for each text object
- The ending of a text can now be cut in the middle of a word
(new flag ALIGN_LEFT_CUT)
- Image-Import: Image-Type can be set by code,
or determined by VPE automatically by file extension as in v2.2
- All functions of the preview can be executed by keystrokes.
The keyboard layout is freely defineable.
-
Royalty-Free Document Viewer for VPE-Documents (very useful, if documents
are sent by e-mail).
- Printing Progress Dialog with new progress-bar.
The Dialog can be hidden.
- New VPE_PRINT Messages:
- PRINT_MSG_SETUPABORT = 3, // User aborted Setup-Dialog
- PRINT_MSG_SETUPSTART = 4, // Setup-Dialog started
- PRINT_MSG_SETUPEND = 5, // Setup-Dialog ended
- New message VPE_PRINT_NEWPAGE, so device properties
can be changed while printing for each page.
- Several Print Messages can be answered by:
- PRINT_ACTION_OK = 0 // Engine shall continue its work (for
all VPE_PRINT_xyz messages the same)
- PRINT_ACTION_ABORT = 1 // for message VPE_PRINT with
wParam=PRINT_MSG_SETUPSTART: Engine shall not start printing
- PRINT_ACTION_CHANGE = 1 // for message VPE_PRINT_NEWPAGE:
Engine shall use changed Device-Properties
Sophisticated Printer Control, a complete new set of Device Functions and -Properties:
- VpeSetDevice(long hDoc, LPCSTR device) - select device by
name
- VpeGetDevice(long hDoc, LPSTR device, int size)
- VpeDevEnum(long hDoc) - enumerate all devices installed in
the system
- VpeGetDevEntry(long hDoc, int index, LPSTR device, int size)
- VpeSetDevOrientation(long hDoc, int orientation)
- VpeGetDevOrientation(long hDoc)
- VpeSetDevPaperSize(long hDoc, int size)
- VpeGetDevPaperSize(long hDoc)
- VpeSetDevPaperWidth(long hDoc, int width)
- VpeGetDevPaperWidth(long hDoc)
- VpeSetDevPaperHeight(long hDoc, int height)
- VpeGetDevPaperHeight(long hDoc)
- VpeSetDevScalePercent(long hDoc, int scale)
- VpeGetDevScalePercent(long hDoc)
- VpeSetDevPrintQuality(long hDoc, int quality)
- VpeGetDevPrintQuality(long hDoc)
- VpeSetDevYResolution(long hDoc, int yres)
- VpeGetDevYResolution(long hDoc)
- VpeSetDevColor(long hDoc, int color)
- VpeGetDevColor(long hDoc)
- VpeSetDevDuplex(long hDoc, int duplex)
- VpeGetDevDuplex(long hDoc)
- VpeSetDevTTOption(long hDoc, int option)
- VpeGetDevTTOption(long hDoc)
- VpeDevEnumPaperBins(long hDoc)
- VpeGetDevPaperBinName(long hDoc, int index, LPSTR bin_name,
int size)
- VpeGetDevPaperBinID(long hDoc, int index)
- VpeSetDevPaperBin(long hDoc, int bin_id)
- VpeGetDevPaperBin(long hDoc)
- VpeSetDevCopies(long hDoc, int copies)
- VpeGetDevCopies(long hDoc)
- VpeSetDevCollate(long hDoc, int collate)
- VpeGetDevCollate(long hDoc)
- VpeGetDevPrinterOffsetX(long hDoc)
- VpeGetDevPrinterOffsetY(long hDoc)
- VpeGetDevPhysPageWidth(long hDoc)
- VpeGetDevPhysPageHeight(long hDoc)
- VpeSetDevFromPage(long hDoc, int from_page)
- VpeGetDevFromPage(long hDoc)
- VpeSetDevToPage(long hDoc, int to_page)
- VpeGetDevToPage(long hDoc)
- VpeSetDevToFile(long hDoc, int to_file)
- VpeGetDevToFile(long hDoc)
- VpeSetDevFileName(long hDoc, LPCSTR file_name)
- VpeGetDevFileName(long hDoc, LPSTR file_name, int size)
- VpeSetDevJobName(long hDoc, LPCSTR job_name)
- VpeGetDevJobName(long hDoc, LPSTR job_name, int size)
- VpeDevSendData(long hDoc, LPCSTR data)
- Send binary data to the printer (also known as Escapes)
Workarounds:
- Implemented workaround for text alignment bugs of several NT
4.0 printer drivers
- Implemented several workarounds, so VPEngine's preview works
now reliable with many buggy video drivers (and there are a lot!)
- Implemented workaround, so that very large b/w images are
now displayed in the preview (printing was ok before)
Bug-fixes:
- Fixed BUG in image-import: y resolution was always set to x
resolution. To gain old behaviour new flag PIC_X2YRESOLUTION.
- Bug Removed: PIC_BESTFIT didn't work correctly under some
conditions
- Fixed BUG in 16-Bit Engine, importing WMF files > 64 KB
|
Features of the Enhanced Edition:
- Contains new Davinci Image Import Library Professional
Edition v3.0 worth Euro 449,- !!!
Improved Import (supports more special formats and is much faster) of the
following image types:
- enhanced BMP support (RLE & OS/2)
- TIFF 6.0 (Fax G3 & G4, grayscale, LZW, packbits)
- GIF
- JPEG
- PNG
- PCX
- DXF (large improvements!)
- DXF files can now be forced to black
and white representation
- Supports Multi-Page TIFF: query number of
pages and select one
- 21 Barcode Types supported
(EAN-13, EAN-8, EAN-13+2, EAN-13+5, EAN-8+2, EAN-8+5, EAN-128A, EAN-128B, EAN-128C, UPC-A,
UPC-A+2, UPC-A+5, UPC-E, UPC-E+2, UPC-E+5, Codabar, Code 39 Code 93, 2 of 5, Interleaved 2
of 5, POSTNET (1.20) )
|
Features of the Professional Edition:
|
- Over 200 (!) new functions (290 functions
compared to 81 functions in v2.2)
|
- Interprets direct RTF (Rich Text Format) and imports
RTF files.
VPE supports a subset of RTF.
|
- Charts
VPE supports all basic types of charts using SmartChart
technology.
|
- UDO - Powerful User Defined Objects
This allows to print and preview any kind of drawing or object, including
OLE/COM objects!!!
|
- Clickable Objects
Objects can be made clickable by assigning them a unique Object ID. Moving with
the mouse over such an object changes the cursor to a pointing hand. If you click onto
such an object your application receives an event containing the Object ID. Then you could
for example open a separate dialog, showing more detailed information about the clicked
text or image.
|
- Scale-To-Gray Technology
A 300 or 600 DPI image scaled to a 96 DPI device (the screen) is looking bad due
to its nature. The Scale-To-Gray Technology uses 2 different images, one for the screen
(preview) and one for printing. The screen image is scaled down to 96 DPI while the loss
of visual information is transformed to gray-values. This means perfect readability
of such images on a 96 DPI device.
Example, normal scaled image:
Image scaled with Scale-To-Gray Technology:
|
- Export of single pages or parts of pages as:
- BMP
- WMF
- EMF (EMF: only 32-Bit
Version)
- JPEG (compression ratio can be set freely)
- PNG (compressed or uncompressed)
- TIFF 6.0 (Fax G3, Fax G4, LZW, Packbits, Multipage, RGB and
Grayscale)
- GIF
- PCX
For all bitmap formats you can specify the color depth and
the resolution (in DPI). Additionally dithering is possible. This is for example very good
for faxing documents with fax servers running on non-windows plattforms. (Note, that VPE
is now able to fax directly with MS-FAX and MS-MAIL through MAPI).
|
- Character Placement
You can specify a constant offset from one character to another for text objects (not RTF)
in 0.1 mm resolution. This is very good for filling in forms that have pre-printed columns
for each letter.
|
|
Year 2000 Statement
IDEAL Software® Corporation has tested Virtual Print Engine in
all Versions and Editions for Year 2000 compliance. We have identified all products as
compliant, and we can demonstrate all as compliant.
Currently, none of IDEAL Software's products is date dependent,
none require date input, and none make calculations on dates. It is not possible for the
products to fail based on running after the year 2000 or during the transition from 1999
to 2000. IDEAL Software data and configuration files do not store dates themselves.
Please feel free to print this document as IDEAL Software®
Corporation's official statement concerning Year 2000 compliance.
VPE v2.2 (7/97)
- Implemented a new dynamic image cache for best performance image handling. Use the flag
PIC_KEEPIMAGE now, to move an image into the dynamic cache area. This works only for
pictures inserted by filename (not resources or DIB's). Each calling application has its
own cache. But the cache is shared by all open documents of this calling application.
- Implemented the following new functions to control the image cache (note, that the DLL
functions don't take a hDoc parameter, since the cache is shared by all open documents of
the calling application):
- void VpeSetPicCacheSize(long size); sets the image cache size in KILOBYTES (default =
2048 = 2 megabytes). The cache can be flushed (emptied) by the following sequence:
VpeSetPicCacheSize( 0 ); VpeSetPicCacheSize( <old value> );
- long VpeGetPicCacheSize(); returns image cache size in KILOBYTES
- long VpeGetPicCacheUsed(); returns the used space of the image cache size in KILOBYTES
- For the OCX / VCL these are the new properties:
- long PicCacheSize (read / write)
- long PicCacheUsed (write)
- performance-optimized graphics import (decompression) routines
- now supports Windows Metafiles (e.g. WMF = placeable metafiles) directly. DAVINCI.DLL is
no longer needed to process WMF-files.
- now supports Win32 Enhanced Metafiles (e.g. EMF) directly (32-bit version only).
DAVINCI.DLL is not needed to process EMF-files.
- metafiles are no longer internally converted into bitmaps, this means faster displaying,
zooming, printing and implies, that possible GPF's when printing large dimensioned
metafiles (especially onto 600 DPI printers) do no longer occur
- for metafiles it is now also possible, to use VFREE for x2 and for y2. But it may
seldomly happen, that the creators of the metafile didn't use reasonable values for the
original size, so that the use of VFREE might produce too large / small scaled images.
- DXF files are also handled as pure metafiles now, with one exception: Since in DXF files
are only virtual (and no absolute metric) sizes stored, it is only possible to use VFREE
for x2 OR for y2, but not for both at the same time. The advantage of working with VFREE
for one coordinate is, that you don't get distorted images.
- VpeKeepBitmapAspect() also applies to metafiles
- fixed bugs in DXF import routines
- fixed bug in image rotation function (pixel gaps to frame)
- ATTENTION: metafiles can NOT be rotated!!! (unless Microsoft will implement
world-coordinate-transformation not only for NT, but for all 32-bit windows, then this
will be ASAP implemented in the 32-bit version)
- now supports the new PNG image file format (Portable Network Graphic). We strongly
recommend to use this new format instead of TIFF or GIF - it has a much better compression
ratios. If you want to learn more about it, visit for example CompuServe, go PCFF and
search for PNG, or visit Alta Vista. There are many commercial and shareware programs out
there in the internet, to convert old existing images into the new PNG format.
- Problem with fonts from different character sets solved. VPEngine had a problem, using
fonts designed for other character sets (for example east-european countries,
symbol-fonts, ..., etc.).
- fixed problem, that printing under Win32 (NT and Win95) didn't work under special
circumstances (especially with PostScript printers, and / or via network)
- implemented a new function VpeSetPrintPosMode(long hdoc, int mode) and two new flags as
possible values for mode:
- PRINTPOS_ABSOLUTE: coordinates are absolute to the paper-edges (default)
- PRINTPOS_RELATIVE: coordinates are relative to the first printable positon of the
printer
- For the OCX / VCL this is the new property: "int PrintPosMode (write)"
- implemented a new function / method (Vpe)SetPrintOffset(int offset_x, int offset_y). The
provided offsets (in 0.1mm) will be added to all objects in the document, when printed.
The default is (0, 0).
- Changed preview: the document is drawn like a sheet of paper, reflecting the
page-dimensions. New OpenDoc-Flag: VPE_NO_PAPERVIEW to gain the old style (no borders
drawn). For the OCX / VCL: new design-time property "boolean PaperView (write)"
- new professional rulers, reduced screen-flickering when resizing and zooming the
preview, nicer icons in toolbar
- new method "VpeLine" implemented for the OCX. The new Visual Basic 5.0 has a
function "Line" which conflicts with the OCX-method "Line". (We
reported this problem to Microsoft and hopefully they will finally fix this problem, so
that VB recognizes, if an OCX method is called, or an internal function.)
- the 32-bit version now supports the Aldus / Microsoft FLT image import filters, that
come for example with Word97. This is an unsupported feature!
- for Delphi the VCL source code is now included, so that for Delphi 1.0 up to 3.0 the VCL
can be generated on your own. Instead of selecting "VPE_VCL.DCU", you need to
install "VPE_VCL.PAS" now.
- fixed bug, that barcode rotation wasn't clockwise, like image and text rotation
- there is a bug in the documentation, the maximum page dimensions for Win95 are the same
as for Windows 16-Bit. Only Win-NT is actually able, to manage page dimensions of up to
999 x 999 cm
- fixed declaration bug in vpiface.h so that MSVC 4.x and greater had unresolved
externals, even if a new import-library was created.
- the 16-bit version had a bug, consuming and not freeing resources when using
SetupPrinter()
- the 16-bit version had a bug, causing a GPF in the following situation: print-button was
pressed and another printer or setting was choosen, then the setup-dialog was cancelled
and afterwards again the print-button was pressed
VPE v2.1 (3/97)
- finally all printing problems that occured when using some special PCL printers
resolved!
- Included .DEF file to support directly Borland C/C++ 32 bit compilers (see directory:
imp_libs \ borlandc.32)
- Macro WINDOWS_DLL for C/C++ compilers no longer needed
- Removed a bug, where the 16-bit OCX couldn't be used under special circumstances
- New VpeOpenDoc()-flag VPE_NO_SETUPDLG
- OCX / VCL: new DESIGN TIME (!) property "boolean tbPrintSetup"
- If this flag is used (e.g. tbPrintSetup = FALSE), and the user pushes the print button
in the toolbar, no setup dialog will appear.
- Enhanced Keyboard Interface: F2 executes the print-command
- Function VpeSetBarcodeParms extended, so you can hide the text and add-on text:
- before: void EXPO VpeSetBarcodeParms(long hdoc, int top_bottom, int add_top_bottom);
- now: void EXPO VpeSetBarcodeParms(long hdoc, int main_text, int add_text);
- where main_text and add_text may be one of the following new defined constants:
- BCP_BOTTOM = 0
- BCP_TOP = 1
- BCP_HIDE = 2
- Function VpeSetUpdate() (e.g. the property UpdateMode) has been removed. If you have an
open preview, every output call or GotoPage is only reflected after a call to
VpeRefreshDoc().
- Now works with Win32s - but this is an unsupported feature. The performance when doing a
lot of text-rendering (for example AutoRender Demo) is not as good as in Win95 / Win-NT. A
close examination had revealed, that some Win32s font related functions are much slower
than in Win95 / Win-NT. Also some printer drivers do not work correct.We do not recommend
using VPE with Win32s.
- 16-Bit version had a very small GDI resource leak (about 0.12% per OpenDoc call).
- Under very special circumstances (a correlation between font-type, font attributes and
text structure) the Y2 coordinate was computed wrong.
- VpePrint: If text didn't contain any blanks, it was drawn beyond VRIGHTMARGIN. Now text
is cut at VRIGHTMARGIN.
- In v2.0 "Print to file" did only work under Win NT.
- OCX: the PRINT_MSG_xyz constants were wrong defined
VPE v2.0 (10/96)
- The major enhancement: a brandnew VPE-OCX and VPE-VCL !!!
- The user interface of VPE now uses correctly the color scheme of the
system settings.
- New functions:
- VpePenSize(long hDoc, int PenSize)
- VpePenStyle(long hDoc, int PenStyle)
- VpePenColor(long hDoc, COLORREF PenColor)
- OpenDoc-Flag VPE_GRID_INBACKGROUND removed (who did ever use it?). The
grid is per default in background unless you specify VPE_GRID_INFOREGROUND.
- New OpenDoc-Flag VPE_NO_SCALEBTN and redefined VPE_NO_USER_SCALE:
- VPE_NO_MOUSE_SCALE = 256 // User can't scale with the MOUSE
- VPE_NO_SCALEBTN = 512 // No Scale Buttons in Toolbar
- VPE_NO_USER_SCALE = 768 // User can't scale
- Message VPE_PRINTCANCEL removed. WPARAM of message VPE_PRINT can have the
following values:
- PRINT_MSG_ABORT=0 // User aborted
- PRINT_MSG_START=1 // Print started
- PRINT_MSG_END =2 // Print ended
- Minor changes and bug-fixes in the user interface.
- Minor bug-fixes in the code.
VPE v1.4 (06/96)
- Windows 95 look for toolbar buttons, better icons
- Automatic Text Break: The magic border is broken!!! VPE is now able to
render text to the bottom of the page (output rectangle) and to insert the remaining text
automatically onto successive pages. (look at the new vpedemo.exe / .cpp). For
compatibility with previous versions and different behaviour , see new function:
VpeSetAutoBreak(). (new embedded flags 'AutoBreakXXX', also see chapter "Dynamic
Positioning"). VpeSetAutoBreak() Modes:
- AUTO_BREAK_ON - The Auto Page Break will only work, for y2 = VFREE.
Remaining text is broken onto the next page(s) at the same x-positon and y = top of the
output rectangle of the following page. The default is ON.
- AUTO_BREAK_OFF - Same behaviour as AUTO_BREAK_ON (limited positioning /
rendering), but remaining text is NOT broken onto next page(s).
- AUTO_BREAK_NO_LIMITS - Remaining text is NOT broken onto the next
page(s), but it can be placed anywhere on the paper with no limits. Use this switch to
have the full compatible behaviour of VPE v1.4 with all previous versions.
- Rotation: Text and images now can be rotated in 90 degree steps. This
also affects barcodes, please see the changed parameter list for VpeSetBarcodeParms() (see
chapter "Rotating Text, Images and Barcodes", new embedded flag 'Rotate').
Rotation is done clockwise. Angles are given in 1/10 degrees. New function
VpeSetRotation().
- VpeEllipse() to draw circles and ellipses
- VpePolygon() to draw filled polygons
- VpeAddPolygonPoint() to add points to polygons
- VpePictureResID() and VpePictureResName() take the image out of resources
- VpePictureDIB() takes the image from a handle - you must not delete the
global memory block, but keep it unlocked. The flag PIC_IN_FILE is ALWAYS automatically
set.
- VpeCenterPreview() centers the preview on the desktop or on a given
window.
- VpeSetPrintOptions() allows setting the printing only for even, or for
odd or for all pages. This preset is also active, if the user pushes the print-button in
the toolbar.
- New flags:
- #define PRINT_ALL 0 // print all pages
- #define PRINT_EVEN 1 // print only even pages
- #define PRINT_ODD 2 // print only odd pages
- The default is PRINT_ALL.
- Hatching: All objects - except (of course) barcodes and images - can be
hatched now with the predefined windows hatch styles.
- VpeSetHatchStyle() The default is HS_NONE
- VpeSetHatchColor() The default is COLOR_BLACK
- VpeWriteDoc() writes the current document into a file or appends the
current document to another document stored in a file (this even works, if the current
document was opened by VpeOpenDocFile(), e.g. it is itself a file!)
- VpeReadDoc() reads a documents from file into RAM and appends it to the
current document (this even works, if the current document was opened by VpeOpenDocFile(),
e.g. it is itself a file!)
- New flag PIC_BESTFIT: Keeps a bitmaps aspect and allows for the largest
zoom within a given rectangle.
- New flag PIC_IN_FILE: In v1.3 only the pathnames of the images were
stored as a reference in the files created by VpeOpenDocFile(). Now it is possible, to
store the image inside the file (this flag is automatically set, when using
VpePictureDIB()). Currently images are stored in the file as decompressed bitmaps.
- Bitmaps: Some programs write curious BMP file formats. VPE's format
checking is now more relaxed and even bad formats (regarding the standard) can be read.
- VPE_PIC_xyz flags renamed: All VPE_PIC_xyz flags have been renamed to
PIC_xyz.
- The following functions have been renamed:
- VpeSetDefaultOutputRect() into VpeSetDefOutRect()
- VpeSetOutputRect() into VpeSetOutRect()
- VpeGetOutputRect() into VpeGetOutRect()
- The following functions have been added for use with interpreters, who
have problems with the RECT structure (the suffix "SP" stands for "Single
Parameters"):
- VpeSetDefOutRectSP()
- VpePreviewDocSP()
- For the following functions parameter types have been changed for use
with interpreters, which do not support all datatypes:
- VpePrintDoc(long hDoc, int with_setup); previously: BOOL with_setup
- void VpeGetPictureTypes(int with_filters, LPCSTR s, int size);
previously: returned String-Pointer; parameter BOOL with_filters only; now receives string
in s, size is the maximum size of the string
- VpeSetBarcodeParms(long hDoc, int top_bottom, int add_top_bottom);
previously: int orientation, BYTE top_bottom, BYTE add_top_bottom. The parameter
"orientation" has been removed, to gain a consistent interface (due to the new
function VpeSetRotation()). Use this function!
- Flags have been defined for VpeSetupPrinter(), their values didn't
change:
- PRINTDLG_NEVER
- PRINTDLG_ONFAIL
- PRINTDLG_ALWAYS
- Fixed problem, that VPE didn't print under Win95 when called from
Visual-C.
- New interfaces:
- FoxPro / Visual FoxPro
- Demo for use with Micro Focus COBOL for Windows
VPE v1.3 (03/96)
- Now supports the following graphics file formats:
- Windows and OS/2 Bitmaps (2 / 16 / 256 / True Color)
- Windows WMF (Metafile)
- AutoCAD DXF
- GIF (2 / 16 / 256 Colors)
- PCX (2 / 16 / 256 Colors)
- JPG (256 / True Color)
- TIFF 5.0 (2 / 16 / 256 / True Color, LZW / PackBits / Fax G3 / Fax G4 /
Tiled Images)
- Installed Adobe / Microsoft filters (some restrictions and only 16-bit
version; for example, those that come with Word for Windows)
- Due to the new supported graphics file formats, the function VpeBitmap
has been renamed to VpePicture
- New function VpeGetPictureTypes()
- Flag VPE_PIC_KEEP removed
- New flags: VPE_PIC_KEEPIMAGE, VPE_PIC_DISCARD_DIB_DRAW,
VPE_PIC_KEEP_DIB_PAGE
- Page size is freely definable:
- 16-Bit version: up to 138cm x 138cm (for 600 DPI Printer); 69cm x 69cm
(for 1200 DPI printer); etc.
- 32-Bit version: 999cm x 999cm (NT only)
- New parameters page_width and page_height for function: VpeOpenDoc (both
in 1/10 mm)
- Default parameters for DIN A 4 and US-Standard-Letter
- New function: VpeSetRulersMeasure() - rulers can show cm or inch
measurement
- Output rectangle (similar to page-dimensions) can be defined and
retrieved
- Each page in a document may have individual output rectangle
- Improved dynamic positioning:
- Each page keeps track of the positioning rectangle of the last inserted
object
- All objects can be positioned and sized relative to this rectangle
- All objects can be sized relative to their upper left corner
- Removed functions: VpeGetX and VpeGetY; for new functions and flags see
"Dynamic Positioning"
- Improved printer handling:
- VPE_LANDSCAPE flag reflected in printer setup-dialog
- VPE can do the printer setup separate from printing, printing can be done
without setup
- VPE can now remember the last printer, driver and port used, and keep the
last settings for that printer
- VPE is able to save/read settings to/from file, so you can save settings
not only for your application, but for every individual document type
- VpePrintDoc new parameter "BOOL with_setup"
- New function: VpeSetupPrinter
- Improved control:
- New message: VPE_HELP
- New toolbar flags: VPE_NO_HELPBTN, VPE_ROUTE_HELP, VPE_NO_INFOBTN
- New file managing and memory swapping features:
- Documents can be stored and retrieved from file (new function:
VpeOpenDocFile())
- File formats are fully compatible between 16- and 32-bit versions
- Fast memory swapping algorithm, so that VPE needs only minimum RAM
regardless of document size
- VpePrint(Box) now works correctly
- Fixed positioning of letters (too large gap)
- In special cases, justified layouting was inaccurate
- Fixed print garbage which occurred on some printers
- Interfaces and Demos for:
- C/C++
- SQLWindows
- Visual Basic 4.0 (16 and 32 bit) - also usable for MS Access
- Delphi (a VCL is currently under development and will soon be available)
- Borland Pascal
VPE v1.2 (01/96)
- was only an internal release
VPE v1.1 (11/95)
- Barcodes added: Now supports 21 barcode types (VPENGINE.DLL doesn't need
EASYBAR.DLL until a barcode-function is called).
- Implemented a workaround for bug in Win95 Laserjet drivers (unidrv.dll) -
GPF when printing is now gone.
VPE v1.0 (10/95)
- first release for the open market