| |
Version 2.5.2.536 |
|
|
| |
Changes |
Description |
|
| |
License Agreement |
The new section "Restrictions/Copyright
Notices" has been removed since it is unnecessary. |
|
| |
AES Encryption |
The AES Encryption Library that was used
in DynaPDF has been replaced with a native C++
implementation. The new code is smaller and a little bit
faster. |
|
| |
New Functions |
Description |
|
| |
GetFieldChoiceValue() |
The function returns the choice values of
combo and list boxes. |
|
| |
Version 2.5.1.535 |
|
|
| |
Bugfix |
Description |
|
| |
Color values |
Small values were incorrectly rounded.
Single components could be saved one higher than specified,
e.g. the RGB value 210, 87, 2 was saved as 210, 87, 3. |
|
| |
PDF Import |
A parsing error occurred if a
CIDSystemInfo dictionary contained hex strings.
The last character width of simple fonts was not copied
under certain circumstances if the file contained multiple
versions of the same font object with overlapping glyph
widths. A stack overflow could occur if a
damaged file contained binary data at the end of the file. |
|
| |
Version 2.5.1.533 |
|
|
| |
Bugfix |
Description |
|
| |
FlattenAnnots() |
Under certain circumstances an annotation
could be wrongly scaled. |
|
| |
FreeTextAnnot() |
The function did not consider the border
width. |
|
| |
OpenImportFile() |
The function could hang in an endless loop
if a name tree contained null objects. |
|
| |
PDF Import |
The flags of imported fields were set to
printable by default. If the flags were not overridden
during import the print settings were changed to wrong
values. |
|
| |
Text Ausgabe |
DynaPDF did not produce warnings about
missing glyphs if the font used a code page and if the text
was output with the Unicode version of a string function. |
|
| |
WriteTextMatrix() |
Rotated or scaled transformation matrices
were sometimes ignored if other text was already output on
the same y-coordinate. |
|
| |
New Functions |
Description |
|
| |
AddRenderingIntentEx() |
The function accepts a file buffer as
input. |
|
| |
GetInIsTrapped() |
Returns the value of the Trapped key. |
|
| |
RenameSpotColor() |
Renames a spot color in all Separation,
DeviceN, and NChannel color spaces in which the color can be
found. |
|
| |
SetAnnotBorderStyle() |
Changes the border style of an annotation. |
|
| |
SetAnnotBorderWidth() |
Changes the border width of an annotation. |
|
| |
SetAnnotColor() |
Changes the border, background, or text
color of an annotation. |
|
| |
SetAnnotFlagsEx() |
Changes the flags of an annotation. |
|
| |
SetAnnotHighlightMode() |
Changes the highlight mode of an
annotation. |
|
| |
SetAnnotIcon() |
Changes the icon of a text annotation. |
|
| |
SetAnnotOpenState() |
Changes the open state of a markup
annotation. |
|
| |
Version 2.5.0.530 |
|
|
| |
Bugfix |
Description |
|
| |
InsertImage(), InsertImageEx(),
InsertImageFromBuffer() |
The bitmap decoder did not consider the
offset to the pixel data of the image header. Invalid pixel
data were loaded if the image contained additional metadata. |
|
| |
DeletePage() |
An access violation occurred if a
previously imported page was deleted and if the same page
was imported again, without closing the import file. |
|
| |
PDF Import |
It was not possible to load PDF files
which contained invalid objects in the xref table. As
defined in the PDF specs DynaPDF must ignore such objects. |
|
| |
Version 2.5.0.529 |
|
|
| |
Bugfix |
Description |
|
| |
EMF Konverter |
Texts of EMRSMALLTEXTOUT records were not
scaled horizontally. |
|
| |
PDF Import |
DynaPDF failed to import a page if the
page object contained a Boolean value. The
change regarding Optional Content Groups in version
2.5.0.527 could cause errors in certain cases. |
|
| |
Version 2.5.0.527 |
|
|
| |
Bugfix |
Description |
|
| |
PDF Import |
The order of Optional Content Groups (OCGs)
could change during import. This could cause errors if
Javascript functions accessed layers with the array index.
Invalid escape sequences in string objects were skipped
while Acrobat copies the character behind the backslash.
3D views without an XN key were not imported. It seems that
Acrobat does not require this key to process the view
successfully. DynaPDF adds the missing key now to the
document if necessary. |
|
| |
SetDocInfoEx() |
It was not possible to change existing
user defined keys due to an error in a search algorithm. The
already existing key was not found due to this error and
DynaPDF added the same key then again with the new value.
However, the deletion of user defined keys was possible. |
|
| |
AES and 128 Bit Acrobat 7 compatible RC4
Encryption |
The full versions of Acrobat 7, 8, and 9
grand full access to the document if the default
encryption filter for embedded files is set in the
encryption dictionary! The owner password is then no longer
required to change the security settings. Because DynaPDF
has set the default filter for embedded files the encryption
flags had no effect.
Due to this error it is also possible to modify existing PDF
files to disable the security settings in Acrobat. This can
be easily done by overriding the sequence /Length 128 or
/Length 256 with "/EFF/StdCF " in the
encryption dictionary. After this change Acrobat grants full
access to the document while it should normally be opened
with user rights. |
|
| |
Version 2.5.0.525 |
|
|
| |
Bugfix |
Description |
|
| |
GetLastTextPosX(),
GetLastTextPosY() |
The functions returned absolute
coordinates which are not usable without further
calculations. |
|
| |
InsertImage(), InsertImageEx() |
Embedded ICC profiles in JPEG images were
not considered if the image was inserted in pass-through
mode, also if the flag gfUseImageColorSpace was set (see SetGStateFlags()).
The function raised also an out of memory exception if the
flag gfUseImageColorSpace was set and if
SetSaveNewImageFormat() was set to false and if the image
contained an ICC profile. |
|
| |
PDF Import |
The import failed if the media box of a
page contained indirect references. |
|
| |
WriteAngleText() |
The function did not set the end point of
the text. |
|
| |
WriteFText() |
The list symbol was not output and the \TR[]
operator was not correctly processed. |
|
| |
Version 2.5.0.522 |
|
|
| |
Bugfix |
Description |
|
| |
EMF Converter |
PolyLine records were skipped if the
record contained only one line and if the start and end
coordinate were identically (if the line end style is set
round cap, the result is normally a dot or circle). |
|
| |
Font handling |
CloseFile() returned a "Unknown Error",
if a font was used with the code page cpUnicode. |
|
| |
GetFont() |
The function returned scaled metrics for
the 14 PDF Standard fonts. |
|
| |
ParseContent() |
The function could cause an endless loop
if a content stream contained invalid operators. |
|
| |
PDF Import |
A non-embedded font was not fully loaded
if the same font was already used in the document. This
could cause missing or overlapping glyphs in the resulting
PDF file. Under certain circumstances a
name conflict could occur if a non-embedded font was used
with different link names in a PDF file and if the same font
was used in the document after the file was imported. This
error occurred only on very special circumstances. However,
the resulting PDF files was damaged in such a case. |
|
| |
Version 2.5.0.519 |
|
|
| |
Bugfix |
Description |
|
| |
Font handling |
The style attributes of non-embedded fonts
were not correctly considered when the font was written to
the PDF file. Due to the missing style attributes it was
possible that viewers loaded the font in a wrong style.
The descender of TrueType or OpenType fonts was incorrectly
calculated if the font contained no OS2 table. The value
could be too large. The demo string could
be incomplete if the font Helvetica Bold was used in the
document and if this font was embedded. |
|
| |
PDF Import |
The bounding boxes of PDF pages were not
inherited independent of each other from the parent pages
objects. In the worst the media box could not be found and
it was not possible to import the affected pages. |
|
| |
PlaceTemplateEx() |
The function used a wrong coordinate
origin for the rotation angles 90 and -270 degrees. |
|
| |
Version 2.5.0.517 |
|
|
| |
Bugfix |
Description |
|
| |
- |
Official release of DynaPDF 2.5.
Download info for existing customers:
Please change the URL of your download
accounts at the end to:
.../dynapdf_2.5.zip
// DynaPDF Enterprise
.../dynapdf_2.5_std.zip //
DynaPDF Lite, Professional
User name, password, and the license key did not
change. |
|
| |
Version 2.0.49.486 |
|
|
| |
Bugfix |
Description |
|
| |
CheckFieldNames() |
The function did not ignore fields which
were marked as deleted. |
|
| |
Content Parser |
An endless loop could occur if a font
contained negative glyph widths. |
|
| |
CreateCheckBox() |
If multiple check boxes with identical
name and different export values were created the states of
of certain check boxes could be set to false while it should
be true. |
|
| |
Delphi Interface |
The Delphi interface was not compatible to
Delphi 2009 or higher due to the changed string format in
these versions. |
|
| |
EMF Conversion |
The record type AngleArc produced
incorrect results. In addition, the mapping modes MM_LOENGLISH und MM_HIENGLISH
did not work. |
|
| |
FlattenForm() |
Field groups consisting of check boxes
could be ignored during flattening. |
|
| |
fntGetSpaceWidth() |
The default space width of composite fonts
were differently computed in comparison to simple fonts. |
|
| |
FileAttach Annotations |
The icon of a FileAttach annotation was
not imported under certain conditions. |
|
| |
Fontloader |
The font loader loaded fonts from only one
resource fork on Mac OS X due to an invalid duplicate check. |
|
| |
HighlightAnnot() |
Highlight annotations were wrongly drawn
on rotated pages. |
|
| |
PDF Import |
A maybe existing encoding of a TrueType
form font was not loaded. Several characters could be
missing if the font was also used in normal page objects.
Damaged PDF files with a compressed object structure could
cause a buffer overrun if an object stream contained less
data than specified. The optional
transformation matrix of patterns were written to the file
with too few precision. This could cause visible changes.
Form fields which contained a border style dictionary in
form of an indirect object were not correctly imported.
Radio buttons which were created with Adobe's Designer
contain usually an Opt array with inconsistent values. This
prevents that a check box of the radio button can be set to
checked. DynaPDF repairs such radio buttons now
automatically. Article Beads were ignored. |
|
| |
PlaceSigFieldValidateIcon() |
Due to an error in the validity check of
the destination rectangle it was not possible to place the
icon properly if the page was rotated. |
|
| |
SetCheckBoxState() |
The function changes the state now only if
necessary. This makes it possible to change the states of
all check boxes in a radio button without invalidating the
states of previous check boxes in the same group. |
|
| |
Signature Fields |
The signature appearance was incorrectly
drawn on rotated pages. |
|
| |
TrueType Fonts |
Under certain circumstances the space
character could be mapped to the .notdef character. The
mapping was wrong but produced still correct results. |
|
| |
VB .Net and C# Interfaces |
Structures which contained the data type
IntPtr were incorrectly marshaled on 64 bit platforms. |
|
| |
New Functions |
Description |
|
| |
DeleteAcroForm() |
Deletes a maybe existing PDF and XFA form. |
|
| |
DeleteJavaScripts() |
Deletes all global Javascripts and
optionally all Javascript
Actions. |
|
| |
DeleteXFAForm() |
Deletes a maybe existing XFA form. If the
form is a hybrid form, the PDF form is left intact and can
now be edited. |
|
| |
Set3DAnnotProps() |
The function sets the activation and
deactivation behavior of 3D annotations. |
|
| |
Set3DAnnotScript() |
Saves a Javascript in the 3D annotation.
Such Javascripts can directly access the 3D context of the
3D artwork, e.g. to control an animation or to change
certain properties of the 3D context. |
|
| |
SetAnnotString() |
Sets or deletes certain strings of an
annotation. |
|
| |
TPDFAnnotationEx |
The structure was extended with several
new fields. |
|
| |
Version 2.0.46.460 |
|
|
| |
Bugfix |
Description |
|
| |
CloseFileEx() |
The file was incorrectly encrypted on big-endian-machines if RC4 encryption was
used. On certain circumstances texts from combo boxes were
not encrypted. The contents of such combo boxes was unusable
in this case. |
|
| |
Content Parser |
Errors could occur during decompression of
CCITT Fax compressed image streams due to an incorrect
EOL handling the CCITT Fax decoder of DynaPDF. |
|
| |
EditTemplate2() |
The function could not be used outside an open page. |
|
| |
EMF Import |
The intercharacter spacing array was
ignored for texts which consist of one space character only.
This could cause errors if the underline flag was set
because the line was not output in the correct width. |
|
| |
Interactive Forms |
The text of field which used a background
color was not visible in Acrobat 9 if the option "Highlight
Field" was activated. Imported radio buttons could appear
with an incorrect appearance if the check box character was
not set in the check box fields of the radio button. |
|
| |
PDF Import |
Encrypted files with a file id length
other than 16 bytes could not be decrypted.
DynaPDF contains now a few new repair modes to repair
damaged PDF files. |
|
| |
SetFont() |
The code page was not changed if one font
was used with several different CJK code pages. |
|
| |
SetUseSwapFileEx() |
The function could cause a buffer overrun
due an access on a non null/terminated string. |
|
| |
New Functions |
Description |
|
| |
LoadFDFData() |
The function loads form data from a FDF
file. The corresponding PDF form must be imported before
calling this function. |
|
| |
LoadFDFDataEx() |
Same as LoadFDFDate() but this function
accepts a file buffer as input. |
|
| |
Version 2.0.45.452 |
|
|
| |
Bugfix |
Description |
|
| |
Content Parser |
An access violation could occur if the
document contained CID fonts. |
|
| |
Font loader |
DynaPDF loads the system fonts on Windows
by default from the Registry. However, Windows doesn't store
all available fonts in the Registry so that certain fonts
could be absent. In most cases the font Marlett was missing
but in seldom cases it was also possible that standard fonts
like Arial were missing. |
|
| |
InsertImageFromBuffer() |
Due to a change in the TIFF decoder it was
no longer possible to load TIFF images from a file buffer. |
|
| |
PDF Import |
DynaPDF returned an error if the optional
FontFamily key contained an empty string.
Bounding boxes of templates with a size of [-32268, 32767,
-32268, 32767] were changed during import. Such templates
could then no longer be displayed. However, such bounding
boxes occur extremely seldom. |
|
| |
Version 2.0.45.447 |
|
|
| |
Bugfix |
Description |
|
| |
Content Parser |
PDF files which contained many CCITT Fax compressed inline images
caused worse
processing speed. The content parser is used by the functions ComputeBBox(), IsColorPage(), GetPageText() , ParseContent(),
and several others. |
|
| |
PDF Import |
The version 2.0.45.446 applied checks
which are normally applied when converting PDF files to
PDF/A. This could cause errors, e.g. if an embedded font
contained inconsistent glyph widths. |
|
| |
Version 2.0.45.446 |
|
|
| |
Bugfix |
Description |
|
| |
ComputeBBox() |
The optional matrix of templates were
ignored when parsing the document. Due to this error the
computed bounding box could be too large. |
|
| |
EMF converter |
Empty clipping regions were not correctly
handled. User defined palettes were not applied to images
which contain lees colors than available in the palette. |
|
| |
GetBBox() |
The function returned always true, also if
the bounding box was not set. |
|
| |
InsertImage() |
The transparence color of GIF images could
not be recognized if the color was more than one time
available in the color palette. |
|
| |
PDF Import |
Radio buttons which contained only one
check box were imported as a check box. Due to the changed
field type it was not possible to add other check boxes to
the radio button. |
|
| |
New Functions |
Description |
|
| |
AddDeviceNProcessColorants() |
Adds additional attributes to a DeviceN
color space about the process colors which are used in the
color space. |
|
| |
AddDeviceNSeparations() |
Adds additional attributes to a DeviceN
color space about the spot colors which are used in the
color space. |
|
| |
GetCheckBoxCharEx() |
Returns the character that is used to
render the on-state. |
|
| |
GetDeviceNAttributes() |
Returns optional attributes of a DeviceN
or NChannel color space. |
|
| |
Version 2.0.44.444 |
|
|
| |
Bugfix |
Description |
|
| |
AES Encryption |
Strings in a CIDSystemInfo dictionary of a CID
font were not encrypted. The resulting PDF file was damaged. |
|
| |
BeginTemplate() |
If a second PDF instance was created right
before the new template and if already one template was in
memory, the new template could get the internal name of the
previous one. This could cause errors when viewing the file. |
|
| |
Codepages cpCJK_Big5_Uni, cpCJK_EUC_KR_Uni,
cpCJK_950_Uni |
The CJK to Unicode conversion routines
contained errors. Certain characters could be missing in the
text output. |
|
| |
EMF conversion |
Font properties like underlined or the
font weight were ignored when selecting a stock font. |
|
| |
FindField() |
The function didn't find fields which were
organized in one or more group fields. |
|
| |
InsertImage() |
It was not possible to insert CCITT Fax
compressed images with insufficient data. Such image cause
no longer an error. Missing areas of the image are
initialized to white. |
|
| |
PDF import |
Under certain circumstances an optional
content group was imported without its name. The resulting
PDF file was damaged due to this error. If
a page object was included in a compressed object structure
the page object was not fully initialized and this could
cause several errors when when creating the new PDF file. It
is not allowed to include page objects in a compressed
object structure, however, DynaPDF should not depend on it.
ImportPDFFile() did not import PDF files which contained
damaged page labels. The error checking was too strong in
this case because damaged page labels can simply be ignored. |
|
| |
ParseContent() / GetPageText() |
In specific order of operators the
character spacing was not restored when executing a restore
graphics state operator. Due to this error the coordinates
of the following text and the string widths were wrongly
calculated. The string widths of Type3
fonts were sometimes wrongly calculated. |
|
| |
ParseContent() / ComputeBBox() |
A buffer overrun could occur during
decompression of CCITT Fax 4 compressed streams if the
decoding parameters contains a different number of columns
than specified in the image dictionary. |
|
| |
PlaceImage() |
The image was not rotated with the
coordinate system. |
|
| |
SetFont() |
On Mac OSX fonts in the directory
~/Library/Fonts/ were not loaded. |
|
| |
SetTextDrawMode() |
The mode dmClipping was not applied if a
shading was drawn. |
|
| |
WriteFText() |
Text draw modes which processes text as
paths were not applied or caused inconsistent if the text
contained an underlined string. An active character or word
spacing other than zero caused wrong text output. |
|
| |
New Functions or Features |
Description |
|
| |
GetColorSpaceCount() |
Returns the number of color spaces in the
current document. |
|
| |
GetColorSpaceObj() |
Returns the most important properties of a
color space. The function accepts a color space handle or
array index as input. |
|
| |
GetColorSpaceObjEx() |
Like GetColorSpaceObj() but accepts an
IColorSpace pointer. This version can be used to access an
alternate color space. The function can also be used in the TSetFillColor()
and TSetStrokeColor()
callback functions of the content parser. |
|
| |
GetNeedAppearance() |
Returns the value of the NeedAppearance flag
on an interactive form. |
|
| |
GetTextFieldValue() |
Returns the value and default value of a
text field. |
|
| |
SetGStateFlags() |
The function support the following new
flags:
-
gfUseImageColorSpace: If set, the active
color space is ignored when inserting an image. The color
space is taken from the image file instead.
-
gfIgnoreICCProfiles: Meaningful only if
the flag gfUseImageColorSpace is set. If set, an embedded
profile is not used to create an ICCBased color space for
the image. The image is inserted in the corresponding device
color space instead.
|
|
| |
SetNeedAppearance() |
Sets the NeedAppearance flag of an
interactive form. This flag causes that a viewer application
redraws all form fields. This can be useful to avoid
slightly changes of the field appearance when entering a
field. |
|
| |
SetTextFieldValueEx() |
The function changes the field value only. |
|
| |
Version 2.0.42.417 |
|
|
| |
Bugfix |
Description |
|
| |
CheckConformance() |
DynaPDF could produce a damaged PDF file
if the file contained a digital signature with a user
defined appearance. |
|
| |
CloseFileEx() |
Copy & Paste did no longer work with CID
fonts because ToUnicode streams were not encrypted. |
|
| |
ComputeBBox() |
A Decompression error was raised if a
Flate or LZW compressed image used a TIFF predictor
function. This error occurred only if images were
decompressed. TIFF predictor functions are now supported. |
|
| |
CreateICCBasedColorSpace() |
DynaPDF raised an Unknown error when
closing the file if such a color space was used. |
|
| |
CreateIndexColorSpace() |
A damaged PDF file could be produced if
the base color space was not a device color space. |
|
| |
CreateSeparationCS() |
A damaged PDF file could be produced if
the base color space was not a device color space. In
addition, DynaPDF created a wrong interpolation function if
the alternate color space was an additive color space like
RGB or Lab. |
|
| |
DeleteActionFromObj() |
An unknown error was raised when closing
the file if a Javascript action was deleted from a field. |
|
| |
EMF conversion |
The width of a stock pen was scaled to
device units when the pen was created. This could cause
errors if the transformation matrix or view port was changed
before using the pen.
The records Arc, ArcTo, Chord, Ellipse,
and Pie were incorrectly processed if the member bottom of
the bounding rectangle was smaller than top.
|
|
| |
Font handling on Mac OS X |
TrueType fonts on Mac OS X contain often
no OS/2 table which is required to determine the font
weight. Due to the missing weight information DynaPDF loaded
such fonts with a default weight of 500. This caused
problems if a bold font should be loaded because DynaPDF
emulated then a bold style also if the font was already a
bold one; this results in an extra bold style.
DynaPDF extracts the font weight now from
the postscript name if no OS/2 table is available. |
|
| |
Font handling on Windows |
In previous versions of DynaPDF system
fonts were loaded directly from the Windows fonts
directory. However, linked fonts are not physically stored
in this directory so that they cannot be loaded in this way.
To enable support for linked system fonts DynaPDF loads
system fonts now from the Windows Registry. Using the
Registry is also faster. |
|
| |
GetBookmark() |
The returned destination page was wrong if
the bookmark contained a GoTo action. |
|
| |
ImportPDFFile() |
Due to a change in the duplicate check of
already imported pages it was no longer possible to import
form fields if the file was already imported one time and if
the form field were flattened with FlattenForm(). |
|
| |
IsColorPage() |
The result could be wrong if an indexed
color space used an ICCBased color space as base color
space. |
|
| |
ParseContent() |
The function raised an exception if a
content stream contained a floating point number with a
minus in the fractional part, e.g. "75.-003". Adobes Acrobat
processes such invalidly formatted numbers without error
indication. To archive the same runtime behavior DynaPDF
ignores the fractional part of such numbers and raises no
longer an exception. |
|
| |
PDF Import |
The changes in incremental updated PDF
files with a compressed object structure were ignored when
importing such PDF files.
The structure tree of a tagged PDF file
was not imported if the structure tree contained a class map
with a class that contained an array of attribute
dictionaries. The structure tree is not required but the
tagging information of the document is lost.
DeviceN color spaces which used a device independent color
space as alternate color space were not correctly imported.
The new PDF file could be damaged due to this error. |
|
| |
ScaleCoords() |
The new transformation matrix was right
and not left multiplied with the current transformation matrix.
This caused errors because matrix multiplication is not
cumulative. |
|
| |
New Features |
Description |
|
| |
EMF conversion |
The EMF converter has been extended so
that EMF files which unsupported ROP codes are now rastered
to an image. This is of course the worst case but better
than producing an incorrect output. The rasterizing feature
can be disabled if necessary with the new flag
mfDisableRasterEMF. Additional new
conversion flags:
-
mfNoTextClipping: If set, the ETO_CLIPPED
flag in text records is ignored.
-
mfSrcCopy_Only: If set, images which
use a ROP code other than SRCCOPY are ignored. This flag can
be useful when processing Excel 2007 spool EMF files.
-
mfClipRclBounds: If set, the graphic is
drawn into a clipping path in the size of the bounding
rectangle rclBounds. Contents outside the bounding box is
usually invisible in viewer applications so that flag should
be set by default.
|
|
| |
fntGetTextWidth() |
Returns the string width of a binary
string returned by the content parser. |
|
| |
fntTranslateString2() |
Converts a binary string to Unicode by
using the font's encoding or ToUnicode cmap. |
|
| |
AddImage() |
Adds an image to the current open image
buffer. |
|
| |
CloseImage() |
Closed the current open image buffer. |
|
| |
CloseTag() |
Closes the current open tag (see also
OpenTag()). |
|
| |
CreateAnnotAP() |
Creates an appearance stream for the
specified annotation and opens it for editing. An appearance
stream is a normal template that has exactly the same size
as the corresponding annotation in which it used. The
template is already opened so that you can directly draw
into it. When finish the template must be closed with
EndTemplate(). This function is usually used to create stamp
annotations with a user defined appearance. |
|
| |
CreateDeviceNColorSpace() |
Creates a DeviceN color space. |
|
| |
CreateImage() |
Creates an image in the specified format.
This function can be used to create an image file from an
image buffer returned by the content parser. The creation of
multi-page TIFF as well as single page bmp, jpg, png,and jpc
(JPEG2000) image formats are supported. |
|
| |
CreateStructureTree() |
Creates a structure tree to enable the
creation of a tagged PDF file. |
|
| |
DeleteEmbeddedFile() |
Deletes an embedded file. |
|
| |
FlattenAnnots() |
Draws annotations directly on the page and
deletes already flattened annotations. |
|
| |
FreeImageBuffer() |
Frees the current open image buffer if the
image was created in memory. |
|
| |
GetFontCount() |
Returns the number of fonts used in the
PDF file. |
|
| |
GetFontEx() |
Returns important properties of a font. |
|
| |
GetImageBuffer() |
Returns the file buffer of an image that
was created in memory. See CreateImage(). |
|
| |
GetInPrintSettings() |
Returns the print settings stored in the
current open import PDF file. The print settings are used to
initialize the print dialog in a viewer application. |
|
| |
GetInIsXFAForm() |
Returns true if the current open import
file contains a XFA form. |
|
| |
GetJavaScriptAction2() |
Returns a JavaScript action that is
associated with an object, e.g. a form field, page, and so
on. |
|
| |
GetPrintSettings() |
Returns the print settings of the PDF
file. |
|
| |
HighlightAnnot() |
This function can be used to create a
Highlight, Squiggly, StrikeOut, or Underline annotation. |
|
| |
OpenTag() |
Opens a new tag so that arbitrary contents
can be placed into it. The tag must be closed with CloseTag()
when finish. See Tagged PDF for further information. |
|
| |
SetPrintSettings() |
Change or set the print settings to
initialize the printer dialog in a viewer application. |
|
| |
StampAnnot() |
Creates a stamp annotation. |
|
| |
Version 2.0.36.395 |
|
|
| |
Bugfix |
Description |
|
| |
WriteFText() |
The function could cause an access
violation if a page break occurred. |
|
| |
Version 2.0.36.394 |
|
|
| |
Bugfix |
Description |
|
| |
PDF Import |
Image masks were not imported. Transparent
images could appear opaque due to this error.
The check for damaged layers was too strict. DynaPDF did not
import PDF files with incomplete OCGroups (Optional Content
Groups). Such files are now automatically repaired. |
|
| |
Font handling |
The DBCS space character 0x3000 (Unicode)
was mapped to the normal space 0x20. Because the normal
space character has normally another width the result could
be incorrect. |
|
| |
WriteFText() |
The word breaking algorithm did not
consider the current character spacing if a single word did
not fit into the output rectangle. |
|
| |
VB .Net and C# Interfaces |
The parameter Matrix of the callback
functions TBeginPattern and TBeginTemplate was wrongly
declared. |
|
| |
Version 2.0.36.390 |
|
|
| |
Bugfix |
Description |
|
| |
PDF Import |
DynaPDF could cause an endless loop if a
template contained a matrix in form of an indirect object. |
|
| |
SetTextFieldValue() |
The appearance streams of field groups,
consisting of multiple text fields with identical name, were
not overridden if the group contained no value. The field
value was then not visible in Adobe's Acrobat, except if the
cursor was placed into the field. |
|
| |
AiCrypto Library |
The AiCrypto library, which is used in
DynaPDF to create digital signatures, contained the MD2 hash
algorithm. This algorithm was never used by DynaPDF but
still included in the source directory of the AiCrypto
library. For safety, the source codes of the MD2 algorithm
were fully removed since this algorithm is for private use. |
|
| |
New Functions |
Description |
|
| |
DeleteEmbeddedFile() |
The function deletes an embedded file.
|
|
| |
Version 2.0.35.385 |
|
|
| |
Bugfix |
Description |
|
| |
PDF Import |
DynaPDF could cause an endless loop if the
PDF file contained a damaged outline tree (bookmarks are
stored in the outline tree). An access
violation could occur on big-endian machines such as
IBM-AIX, HP-UX, and so on if the PDF file was encrypted and
contained an Interactive Form (AcroForm). |
|
| |
WriteFText() |
The SetFont tag (\FT[]) did not work with
the Unicode version of the function. In addition, the
leading was always set to the font size if the OnPageBreak()
callback function was executed. It was also not possible to
change the leading in the callback function. |
|
| |
Version 2.0.35.380 |
|
|
| |
Bugfix |
Description |
|
| |
FlattenForm() |
The text color could be set to the
background color of a previously flattened form field. This
error could occur with imported form fields only. |
|
| |
Tagged PDF |
DynaPDF produced under certain
circumstances an invalid structure tree. The tagging
information was not usable in this case. |
|
| |
Version 2.0.35.376 |
|
|
| |
Bugfix |
Description |
|
| |
GetPageText() |
The function could cause an infinite loop
if a PDF file contained nested templates with no resources. |
|
| |
PDF Import |
A damaged PDF file could be produced if an
imported PDF file contained non-embedded fonts which were
already used before importing the document. |
|
| |
Version 2.0.35.374 |
|
|
| |
Bugfix |
Description |
|
| |
PDF Import |
DynaPDF could produce a damaged PDF file
if an imported template contained a transformation matrix
with very small scaling factors which required a precision
of more than two digits. Damaged LZW
compressed streams were fully decoded if possible while
invalid LZW codes were ignored. However, it is better to
break decompression if an invalid LZW code was found because
it then easier to repair the valid part of the content
stream. Adobe's LiveCycle Designer 8.0
writes an invalid key into Layers which contain a Usage
Creator Info dictionary. The Subtype key should be a name
object but Designer writes the key as string instead. This
error caused that DynaPDF did not import the layer. If the
layer was used by a form field or an annotation no error was
reported and the resulting PDF file could be damaged due to
the missing layer. |
|
| |
Content Parser |
The content parser stayed in an endless
loop if a content stream contained a non-break-space
character. |
|
| |
SetFontEx() |
The function stored the font internally in
the font array for interactive forms. This could cause
errors if the font was used with WriteFText() because the
handle of the font was invalid. |
|
| |
WriteFText() |
The function could cause an access
violation if the processing was canceled in the OnPageBreak
callback function. |
|
| |
Version 2.0.35.370 |
|
|
| |
Bugfix |
Description |
|
| |
ComputeBBox() |
The bounding box of CCITT Fax compressed
images were computed with wrong colors. DynaPDF tested for
black on white pixels and white on black pixels. Due to this
error the computed bounding was mostly as large as the
entire image. |
|
| |
CreateSeparationCS() |
DynaPDF created a wrong interpolation
function if all components of the color in the alternate
color space are zero. This error causes that that the entire
range was always interpolated either to black or white
depending on whether the alternate color space was an
additive or subtractive space. |
|
| |
EMF Konvertierung |
Glyph indexes were processed as Unicode in
SmallTextOut() records.
User defined palettes were not applied to
1 bit bitmaps. The colors of such images could then be
wrong.
|
|
| |
ParseContent() |
DynaPDF contained an error in the
ToUnicode cmap parser. This error caused that in certain
cases no valid Unicode mapping could be created for CID
fonts. The Unicode mapping is required to extract the text
of a PDF file. |
|
| |
New Functions |
Description |
|
| |
GetAnnotEx() |
In contrast to GetAnnot() this function
returns also the destination of link annotations. |
|
| |
GetPageAnnot(), GetPageAnnotEx() |
Like GetAnnot() or GetAnnotEx() but for
access on per page basis. |
|
| |
GetPageAnnotCount() |
The function returns the number of
annotations which are used by the page. |
|
| |
GetInNamedDest() |
The function returns the destination of a
named destination contained in the currently open import PDF
file. |
|
| |
GetInNamedDestCount() |
The function returns the number of named
destinations stored in the currently open import PDF file. |
|
| |
Version 2.0.33.366 |
|
|
| |
Bugfix |
Description |
|
| |
Interactive Forms |
The background or border color could be
changed during saving the document, if the one of these
colors were set to white. |
|
| |
PDF Import |
A very special code sequence within LZW
compressed streams could cause that not the entire stream was
decompressed. |
|
| |
Version 2.0.33.364 |
|
|
| |
Bugfix |
Description |
|
| |
EMF Conversion |
The font Symbol could not be used with
glyph indexes. In addition, under certain circumstances it
was not possible to access glyph index 32 of a font if it
was used with glyph indexes. Images were
not rotated with the coordinate system. The
fill color was not initialized to black before converting an
EMF file. This error could cause that objects were drawn in
a wrong color if no brush was set beforehand.
It was possible that DynaPDF computed another color in
comparison to the GDI if the high byte of a COLORREF
structure contained invalid values. The high byte is
reserved for the system palette and the GDI ignores invalid
values. |
|
| |
FlattenForm() |
Under certain circumstances rotated fields
were drawn on a wrong position. Image
buttons were ignored if the default appearance stream was
empty. |
|
| |
GetAnnot() |
The field PageNum was always set to 0 for
many annotation types. |
|
| |
SetUseSwapFile(),
SetUseSwapFileEx() |
The function caused an access violation if
SwapLimit was set to 0 and if no swap file was already used
beforehand. |
|
| |
Version 2.0.33.358 |
|
|
| |
Bugfix |
Description |
|
| |
EMF Conversion |
The bounding box of an EMF file can be
computed in different ways. While most EMF viewers do not
display objects outside the output rectangle the GDI
function PlayEnhMetaFile() for example, extends the output
rectangle so that such contents becomes visible. DynaPDF
uses per default the latter variant to compute the output
rectangle. To get the same result as in most EMF viewers we
have added the new flag mfRclFrameEx which causes that the
output rectangle is not extended. If this flag is set the
flag mfClipView should be set too so that contents outside
the output rectangle becomes invisible. |
|
| |
GetUserRights(), GetInEncryptionFlags() |
Both functions returned different values.
The function
GetInEncryptionFlags() returned the original value which is
usually negative. GetUserRights() returned the binary
inverted value. |
|
| |
PDF Import |
It was not possible to import multiple
documents which contained layers. The PDF import has now
been changed so that multiple documents with layers can be
imported. By default layers with identical names are
imported separately. Alternatively, layers with identical
name can be merged. Therefore, the new flag if2MergeLayers
has been added. This flag must be set with the new function
SetImportFlags2(). |
|
| |
DynaPDF für Mac OS X |
It was not possible to link the
precompiled binaries on Mac OS X 10.4. |
|
| |
New Functions |
Description |
|
| |
ComputeBBox() |
The function computes the visible area of
a page. |
|
| |
ConvertColors() |
The function converts RGB black/white to
DeviceGray. This conversion is useful if a color printer
processes such b/w values as color to reduce the print
costs. |
|
| |
SetImportFlags2() |
The function sets additional flags to
control the PDF import. |
|
| |
Version 2.0.31.353 |
|
|
| |
Bugfix |
Description |
|
| |
EMF conversion |
The font size of font could change if it
was loaded in Unicode mode and used with glyph indexes. |
|
| |
PDF Import |
The destination of imported bookmarks were
lost if the destination was defined with an inline action. |
|
| |
Global Javascripts |
With DynaPDF created global Javascripts
were sometimes not executed in Adobe's Acrobat. |
|
| |
Interactive Forms |
All functions to create form fields
returned a wrong handle if two field with identical name
were created. This error occurred only when the second field
with identical name was created. |
|
| |
DynaPDF for Mac OS X |
The Mac OS X version of DynaPDF contained
an error in the font loader. Due to this bug it was
impossible to load Type1 fonts from resource forks. In
addition, the loading time of the font table was sometimes
very long. |
|
| |
Version 2.0.31.349 |
|
|
| |
Bugfix |
Description |
|
| |
Content Parser |
The color space operator (cs or CS) was
incorrectly processed if it was used to set a device color
space which in turn was defined as inline color space. An
error occurred only if the color space operator followed a
set color operator (sc or SC). This operator combination
occurs very seldom. |
|
| |
SetMetaConvFlags() |
The flag mfNoTextScaling was ignored
during EMF conversion. This flag is useful if low resolution
EMF files must be converted to PDF. |
|
| |
SetTextDrawMode() |
The actual fill or stroke color was not
updated if the draw mode was set to dmFillClip or
dmStrokeClip. In addition, it was not possible to clip
another text with a previously drawn clipping text if no
vector graphic or image was drawn beforehand. |
|
| |
Delphi Interface |
The constructor and destructor of the
class TPDF was not thread-safe since the instance counter
was not incremented or decremented in a thread-safe manner. |
|
| |
Version 2.0.30.346 |
|
|
| |
Bugfix |
Description |
|
| |
CheckConformance() |
The function could produce a damaged PDF
file if the document contained converted EMF files which
used Unicode fonts. |
|
| |
CreateColItemString() |
The optional parameter Prefix was not
correctly written to the file. |
|
| |
SetFont() |
Due to a wrongly initialized variable it
was not possible to load Type1 fonts. |
|
| |
SetLineDashPattern() |
A previously set line dash pattern was not
deleted and the new pattern was appended to the already
existing one. This error could cause a damaged PDF file if
the function was called many times on a page. |
|
| |
New Features |
Description |
|
| |
Tagged PDF |
DynaPDF supports now the creation of
tagged PDF files. However, the new functions to create such
files will be documented in the next update.
|
|
| |
Version 2.0.29.344 |
|
|
| |
Bugfix |
Description |
|
| |
GetBookmark() |
The exact destination was not returned if
the bookmark used a GoTo Action to open the destination. |
|
| |
Rectangle() |
If a rectangle was drawn as filled path
and if then further rectangles were drawn clockwise and
finally stroked with StrokePath() the rectangles were not
closed. |
|
| |
SetFieldExpValue() |
The export value of checkboxes with
identical name, which are organized in a group field, could
not be changed. Such checkboxes act like a radio button if the
export values of the checkboxes are different. |
|
| |
Version 2.0.29.343 |
|
|
| |
Bugfix |
Description |
|
| |
EMF Conversion |
ExcludeClipRect records were wrongly
applied if no other clipping region was already in memory. |
|
| |
PDF Import |
The appearance of button fields could
change if the field used an icon fit dictionary which was
defined as indirect object. |
|
| |
New Features |
Description |
|
| |
Mac OS X Font Handling |
The font handling has been extended for
Mac OS X. System fonts are now automatically loaded like
under Windows. DynaPDF loads the fonts of the following
directories automatically: /System/Library/Fonts,
/Library/Fonts, and ~Library/Fonts. Other font directories
are ignored. However, it is still possible to add arbitrary
more font directories to the search list. The dependency to
the Carbon Framework has been removed.
|
|
| |
Version 2.0.29.342 |
|
|
| |
Bugfix |
Description |
|
| |
EMF Conversion |
The coordinate system was incorrectly
scaled if the scaling was applied with the EMF records ScaleVieportExt()
or ScaleWindowExt(). |
|
| |
PDF Date/Time strings |
Due to changes in the computation of date/time strings DynaPDF produced an invalid
formatted string if the
time offset between local time and gm time was negative.
This error caused for example, that the signature of a
signed PDF file could not be validated in Adobe's Acrobat. |
|
| |
configure script for Linux/Unix |
The configure script, which is delivered
with DynaPDF Enterprise, didn't work on Mac OS X Tiger. The
configure script has now been extended so that DynaPDF can
be build on Mac OS X. Precompiled binaries will be available
as soon as possible. In addition, the font handling will be
extended so that system fonts can be loaded in the same way
as on a Windows OS. |
|
| |
Version 2.0.29.338 |
|
|
| |
Bugfix |
Description |
|
| |
PDF Import |
Version 2.0.29.337 did not import global
objects like bookmarks, embedded files, or Javascripts. This
version only available for about 12 hours. |
|
| |
Version 2.0.29.337 |
|
|
| |
Bugfix |
Description |
|
| |
DrawCircle() |
The new start position was not set if the
circle was drawn in a larger path which was filled later
with ClosePath(). Due to this error lines occurred between
the circle and the previous path. |
|
| |
JPEG2000 compressed Images |
DynaPDF did not understand a few typical
JPEG2000 marker and canceled the import with an error
message. In addition, a memory leak of 8 bytes occurred if a
JPEG2000 image was loaded from a file buffer. |
|
| |
PDF Import |
DynaPDF could not import PDF files which
contained a ViewerPreferences dictionary as indirect object.
The duplicate check for imported pages is now less
restrictive. For example, it is now possible to import a
page multiple times also if the flag mfImportAsPage is set.
However, form fields cannot be imported multiple since this
would cause a damaged PDF file. |
|
| |
Font embedding |
Artifacts occurred sometimes in Adobe's
Acrobat with a few fonts if the text was displayed in very
small font sizes. |
|
| |
WriteFText() |
If a page break event was executed, and if
the page was closed, and if the current font was loaded with
the code page cpUnicode DynaPDF raised an out of memory
exception. This error occurred since the font file was
closed with the page and not loaded again if necessary. |
|
| |
Version 2.0.28.336 |
|
|
| |
Bugfix |
Description |
|
| |
DrawChord(), RoundRect(), RoundRectEx() |
The start position was not recomputed if
multiple such shapes were combined in one large path,
e.g. to apply the even odd rule. |
|
| |
14 PDF Standard fonts |
Due to changes in the font handling
DynaPDF didn't considered space characters of these fonts to
compute the text width for underlined or strike out text.
The lines were too short due to this error. GetTextWidth()
returned still the correct value since another algorithm is
used in this function. |
|
| |
Version 2.0.28.335 |
|
|
| |
Bugfix |
Description |
|
| |
Ellipses, Circles |
Adobe's Acrobat produces artifacts if the
shape is stroked and if the end point of the last bezier
curve lies not exactly on the start point of the first
curve. It seems that this is an error in the stroker of
Adobe's Acrobat since no such effect can be produced with
filled ellipses or circles. To avoid this effect we changed
the calculation so that the last bezier curve overlaps the
first one now a little. |
|
| |
Imported Interactive Forms |
DynaPDF produced under certain
circumstances an invalid string for the default appearance
of a field. This error occurred only with combo boxes at
this time but other field types could be theoretically
involved too. |
|
| |
ParseContent() |
The function produced an access violation
if no callback function to process text was set in the
parser interface structure. |
|
| |
Shadings |
With DynaPDF created shadings were written
to the file without the required Domain entry. The PDF file
was damaged due to this error. However, imported shadings
were processed correlctly. |
|
| |
Schrifthandling |
The embedding rights of TrueType and
OpenType fonts were not considered in version 2.0.28.332. It
was then possible to embed fonts which contain no embedding
rights. |
|
| |
Version 2.0.28.331 |
|
|
| |
Bugfix |
Description |
|
| |
PDF Creation time |
DynaPDF did not consider the summer time
offset. The creation time stored in the PDF file could be
differ from the real local time. |
|
| |
PDF Import |
A damaged PDF file was produced if an
imported PDF file contained a stitching function with only
one sub function. |
|
| |
Visual Basic Interface |
The processing of Unicode strings need to
be changed again since the current implementation did not work on
Asian locales. In addition, the functions GetFont(), GetPageLabel()
and ConvToUnicode() were incomplete or wrongly implemented. |
|
| |
Version 2.0.28.330 |
|
|
| |
Bugfix |
Description |
|
| |
GetFont() |
The function returned incomplete
properties of CID Fonts. |
|
| |
GetPageText() |
The text color was not correctly set. |
|
| |
PDF Import |
Under certain circumstances imported
DeviceN color spaces were wrongly written to the output
file. The PDF file was damaged due to this error. |
|
| |
ReplacePageText(), ReplacePageTextEx() |
If a begin text operator (BT) was not
terminated with a white space character the resulting PDF
file could be damaged if the text object contained no
further text records. |
|
| |
WriteFText() |
The function did not change the font
within a text block if it was selected with the postscript
name. |
|
| |
Version 2.0.28.328 |
|
|
| |
Bugfix |
Description |
|
| |
EMF Conversion |
The graphics state was not restored if the
clipping flag was set in a text record and if the text used
a font with the charset DEFAULT_CHARSET or if the flag
mfUseUnicode was set and if the text consist of space
characters only. This error caused that the clipping area
was not deactivated and coordinate issues could occur. |
|
| |
Unicode text output |
Due to changes in the font class in
version 2.0.28.325 space characters of Unicode string were
printed twice if the font was loaded with the code page
cpUnicode. |
|
| |
Version 2.0.28.326 |
|
|
| |
Bugfix |
Description |
|
| |
PDF Import |
DynaPDF caused an access violation if a
PDF file contained an invalid blend mode in an extended
graphics state dictionary. |
|
| |
New Features |
Description |
|
| |
ConvColor(), GetPageText() |
A CIE based algorithm is now used to
convert CMYK colors to RGB. This technique reduces color
differences significantly.
|
|
| |
Version 2.0.28.325 |
|
|
| |
Bugfix |
Description |
|
| |
Unicode Text output |
The issue in the processing of Unicode
texts was still not fully solved. |
|
| |
GetPageText(), Content Parser |
Under certain circumstances some
characters of Type1 fonts could not be converted to Unicode. |
|
| |
Version 2.0.28.324 |
|
|
| |
Bugfix |
Description |
|
| |
GIF Images |
GIF images with an invalid end of encoding
marker (EOE) could not be imported. |
|
| |
Unicode text output |
DynaPDF ignored the first embedded
character if the string consists of only one character and
if the font contained no space character. |
|
| |
Delphi Interface |
The interface contained an invalid
function declaration if it was compiled with Delphi 4 or
earlier. |
|
| |
Version 2.0.28.323 |
|
|
| |
Bugfix |
Description |
|
| |
Font selection |
Due to a wrongly initialized variable it
was impossible to emulate font styles like Bold or Italic
since the font selection failed already if the font was not
available in the whished style. This error could also cause
that wrong fronts were selected during the conversion of EMF
files. |
|
| |
Image Buttons |
The size of imported image buttons could
change if a reset form action was executed and if the button
used an invisible border larger than one unit. |
|
| |
DynaPDF for AIX |
Due to a missing library DynaPDF was
terminated if it raised internally a C++ exception.
DynaPDF must be linked with the library libsubc++ since the
standard libraries of AIX contain an incomplete C++
exception handling. |
|
| |
IsEmptyPage(), IsColorPage() |
Due to a wrongly initialized variable an
empty or color page could not be detected if the page
contained no setcolor operator. |
|
| |
Version 2.0.28.322 |
|
|
| |
Bugfix |
Description |
|
| |
GetTextWidth() |
The text widths of Unicode string was
under certain circumstances incorrectly computed if a
8 bit code page was used and if a character could not be
found in the font. |
|
| |
EMF Conversion |
Image masks were sometimes incorrectly
processed. The image that used such a mask was then fully
transparent. |
|
| |
Image Buttons |
Image Buttons changed still the appearance if a
reset form action was executed and if the border width was
set to two or three units. |
|
| |
New Features |
Description |
|
| |
SetFont() |
Font files are no longer loaded fully into
memory to reduce the memory usage.
|
|
| |
Version 2.0.28.321 |
|
|
| |
Bugfix |
Description |
|
| |
PDF Import |
Under certain circumstance PDF Shadings
were incorrectly imported. The resulting PDF file caused that
Acrobat crashed when trying to view such a PDF file.
Imported uncompressed images were
incorrectly written to the file if a swap file was used.
|
|
| |
Unicode Javascripts |
Javascripts in Unicode format were written
to the file in an incorrect format if the script was longer
128 characters. |
|
| |
Visual Basic Interface |
All Unicode functions were wrongly
declared in the VB interface. Due to this error it was
impossible to output characters outside of the Ansi
character set. In addition, the function GetBookmark() was
wrongly declared.
|
|
| |
Image Buttons |
Image Buttons changed the appearance if a
reset form action was executed since the image size was
incorrectly computed. |
|
| |
SetFontW(), SetFontExW() |
The Unicode versions of SetFont()
performed an incorrect duplicate check. Due to this error a
font was embedded multiple times and the resulting files
were too large. |
|
| |
New Features |
Description |
|
| |
EMF Konvertierung |
DynaPDF contains now the new flag mfGDIFontSelection
which causes that fonts are selected over a GDI device
context. This makes sure that DynaPDF selects always the
fonts which the GDI would use to render the EMF file.
|
|
| |
GetPageText(), ReplacePageText(),
ReplacePageTextEx() |
The function GetPageText() uses now
internally the content parser of DynaPDF to return texts in
a PDF file. Kerning arrays are now returned too. The kerning
arrays are required to compute the exact string position as
well as to replace texts in a PDF file. In
addition, colors of complex color spaces are now converted
to a device color space. The function ReplacePageText() can
now optionally preserve an arbitrary number of kerning
records from deletion. This improves the development of text
replacement algorithms. DynaPDF is now
delivered with the new demo project edit_text which
demonstrates how text search and text replacement algorithms
can be developed. Due to the extensions of
the function GetPageText() the interfaces for VB .Net and C#
need to be modified. It is still possible to replace the
library with the new version but you must modify your source
codes when recompiling the project. |
|
| |
Transparent GIF Images |
The transparent color of GIF images is now
used from the image file if the transparent color is set to
the special value NO_COLOR. If the image is not transparent
it will be inserted opaque.
|
|
| |
Version 2.0.27.319 |
|
|
| |
Bugfix |
Description |
|
| |
Interactive Forms |
Due to changes in Adobe's Acrobat it is no
longer possible to use fonts with an arbitrary 8 bit code
page in form fields. It is still possible to use an
arbitrary font, however, the font must use the code page
1252. In addition, it seems that Acrobat does no longer
support Type1 fonts within form fields, with the exception
of the 14 standard fonts. The use of Type1
fonts is not restricted at this time but you should test the
form carefully if a Type1 font should be used.
|
|
| |
PDF Import |
Under certain circumstances it was not
possible to import a compressed PDF 1.5 file due to an
invalid range check. It was not possible to
import Run Length encoded content streams. This filter is
normally used for images only. |
|
| |
Version 2.0.27.318 |
|
|
| |
Bugfix |
Description |
|
| |
Code page 862 |
The bidi algorithm was applied when using
the code page 862. This is wrong, this code page must be
processed without applying the bidi algorithm.
|
|
| |
Version 2.0.27.317 |
|
|
| |
Bugfix |
Description |
|
| |
EMF Converter |
The mapping modes MM_LOMETRIC and
MM_HIMETRIC caused a wrongly scaled coordinate system.
|
|
| |
PDF Import |
An access violation could occur during
import of a compressed PDF 1.5 file. |
|
| |
Bidirectional code pages |
Bidirectional code pages were processed
without applying a bidi algorithm. It is now possible to set
the bidi mode with the new function SetBidiMode(). However,
DynaPDF supports Hebrew code pages or Unicode only because
other complex scripts like Arabic require further Unicode
algorithms which are not included in DynaPDF.
|
|
| |
Version 2.0.26.316 |
|
|
| |
Bugfix |
Description |
|
| |
EMF Converter |
Due to the changed handling of text paths
line dash patterns were not reset if necessary.
|
|
| |
Visual Basic Interface |
The data type of the parameter "Value" of
the function SetSaveNewImgFmt() was declared as Long instead
of Boolean. |
|
| |
New Features |
Description |
|
| |
JPEG Import |
JPEG compressed images are processed by
default in pass through mode if the image need not to be
downscaled or converted due to the used color space.
However, in certain cases it can be useful
to recompress JPEG images. This can be archived now by using
a negative value for the JPEG quality (SetJPEGQuality). JPEG
images are no longer processed in pass through mode if the
JPEG quality is set to a negative value.
|
|
| |
Version 2.0.26.315 |
|
|
| |
Bugfix |
Description |
|
| |
Interactive Forms |
DynaPDF crashed with an access violation,
if an Unicode string was set to a text field.
|
|
| |
PDF Import |
Some PDF drivers use filter names in
normal streams which are allowed in inline images only. It
was not possible to import such PDF files. |
|
| |
TIFF Import |
Old style JPEG compressed TIFFs (TIFF
version < 6.0) could not be imported if the sampling rate
was not identical for all image components.
|
|
| |
New Features |
Description |
|
| |
EMF Converter |
Added support for PaintRgn(), FrameRgn(),
OffsetRgn() und SetMetaRgn().
DynaPDF contains now a polygon clipper
which enables the processing of the clipping modes RGN_OR,
RGN_XOR, RGN_DIFF, and RGN_AND. This makes it possible to
correctly process all possible combinations of clipping
regions and clipping paths. |
|
| |
Version 2.0.26.314 |
|
|
| |
Bugfix |
Description |
|
| |
EMF Converter |
16 bit images with a pure 5 bit mask were
masked with a 5, 6, 5 bit mask.
Images which used a system palette were
skipped.
Line dash patterns of cosmetic pen need to
be slightly adjusted to get exactly the same result in
comparison to the GDI output.
1 bit images which are printed with
StretchBlt records did not appear transparent if required.
|
|
| |
New Features |
Description |
|
| |
EMF Converter |
Support for PlgBlt and MaskBlt records
were added.
DynaPDF scans now for image masks which
must be taken from a separate image record. This technique
is required to mask the overlaying image correctly.
|
|
| |
Version 2.0.26.313 |
|
|
| |
Bugfix |
Description |
|
| |
EMF Converter |
The string format could not always be
correctly identified within SmallTextOut() records due to an
unknown identification flag. This record type is not
documented so that required processing flags can only be
determined via trial and error.
|
|
| |
Interactive Forms |
Form fields were incorrectly painted if
the orientation of the page was not zero. The field size and
position was incorrect too in this case.
Due to a bug in the function WriteFText() it was also
possible that DynaPDF hangs up during writing the file to
disk. |
|
| |
SetFont() |
If a font was used with different Unicode
based code pages and if the selected font was not available
in the whished font styles, DynaPDF created always a new
instance of the font due to a bug in the duplicate check
routine. If large fonts were loaded this error could cause
an out of memory exception. The file size of successfully
created documents was also greater than normal.
|
|
| |
WriteFText() |
The function could hang up in an endless
loop if the width of the output rectangle was smaller than
the width of the first character to be printed. |
|
| |
Version 2.0.26.312 |
|
|
| |
Bugfix |
Description |
|
| |
Visual C# interface |
The function FlushPageContent() was
wrongly implemented. Due to this error it was impossible to
replace text on a page. In addition, Visual Studio raised an
exception if the function was called. |
|
| |
PDF Import |
DynaPDF produced a damaged PDF file if a
transparency group used an ICC based color space. |
|
| |
EMF Conversion |
In very cases a path was not reset if it
was stroked. The following MoveTo / LineTo calls were then
considered as path which could cause a wrong result. |
|
| |
Version 2.0.26.311 |
|
|
| |
Bugfix |
Description |
|
| |
.Net Interfaces, sample projects |
All functions which accept file buffers as
parameter were wrongly declared in the Visual C# interface.
Unmanaged string conversion functions
accept no longer null pointers in Visual Studio 2005. Due to
this change all functions need to be changed which use .Net
string conversion functions.
Acrobat 8 does no longer support relative
file paths. Due to this change the original file could not be opened in the
demo project personalize.
|
|
| |
PDF Import |
Under certain circumstance an error could
occur during importing a DeviceN or NChannel color space. It
was not possible to import the PDF file in this case. |
|
| |
EMF Conversion |
The graphics state was not saved if the
flag ifClipView was set. It was impossible
to place multiple EMF files on a page if this flag
was set because the clipping
area of the first EMF file was still active. |
|
| |
New Features |
Description |
|
| |
PDF Import |
It is now possible to import XFA forms
with DynaPDF. However, such forms cannot be edited.
Layers are now natively imported. Invalid layers, which are
created by certain Adobe products, do no longer avoid
merging of such PDF files. However, PDF files which contain
real layers cannot be merged. |
|
| |
Version 2.0.26.310 |
|
|
| |
Bugfix |
Description |
|
| |
Structures TPDFExtGState and
TPDFExtGState2 |
These structures were changed due to an
inefficient declaration of some data types in the structure.
The structure TPDFExtGState were also
extended to enable the usage of native PDF transparency.
This makes it now possible to output vector graphics and
images with native PDF transparency. |
|
| |
Version 2.0.25.309 |
|
|
| |
Bugfix |
Description |
|
| |
IsColorPage() |
Space characters were not ignored. Black &
White pages could be detected as color pages due to this
error. Images with a color table were
sometimes detected as color image, also if only gray scale
colors were used. |
|
| |
IsEmptyPage() |
Space characters were not ignored so that
empty pages, which contained just a few invisible space
characters, were detected as non-empty. |
|
| |
Version 2.0.25.308 |
|
|
| |
Bugfix |
Description |
|
| |
EMF-Import |
The coordinate calculation of text records
could fail in rare cases. The foreground
and background colors of bitmap patterns were not changed
dynamically with the brush. The color table
of 1 bit bitmaps were ignored. Nested
clipping paths were not correctly processed. ModifyWorldTransform:
TRANS_LEFTMULTIPLY and TRANS_RIGHTMULTIPLY were applied
reversed. The transformation matrix could become invalid due
to this error. Under certain circumstances
the fill color of 1 bit bitmap patterns were written into
the pattern stream. This is not allowed and caused a damaged
PDF file. |
|
| |
PDF-Import |
PDF files which contain resource
definitions which refer again to the same recourse
definition could not be imported.
Documents with an invalid or damaged
document info could not be imported. If the rest of the PDF
file is intact it now possible to import such damaged files.
Damaged or invalid PDF objects were
usually just as incorrectly imported, as they were found in
the original document. DynaPDF applies now extensive
examinations and automatically repairs such objects if
possible. If a repair is not possible, the side concerned is
not imported.
It was impossible to import a PDF file
with ImportPDFFile() if the file contained one or more
damaged pages. DynaPDF displays now a warning but imports
all other pages if possible.
Global layer properties were not imported
if a page was imported with ImportPage() or ImportPageEx().
The Layers of such pages became then invalid due to the
missing layer properties.
Field groups were not always correctly
imported or such fields could not be edited.
A memory leak occurred if a PDF file was
imported that contains Flate compressed streams without end
of encoding markers. |
|
| |
PDF/A output |
The required identification key was
written into a wrong name space because it was not correctly
documented in the PDF/A standard. It was
impossible to produce PDF/A compatible PDF files with the
demo version of DynaPDF because the demo string uses the
non-embedded font Helvetica-Bold. |
|
| |
ClipPath() |
It was not possible to apply the even odd
rule on paths which consists of closed shapes like
rectangles, ellipses, circles, and so on. |
|
| |
Interactive Forms |
It was not possible to create field groups
in all possible combinations. The state of checkboxes within
a field group was incorrectly set if the group contained
checkboxes with different export values. This error occurred
too when flattening the form. The font size
of text fields were incorrectly calculated if the flag
ffMultiline was set and if the font size was set to auto
size (font size < 1.0). |
|
| |
GetFTextHeight() |
Ending line break characters were not
considered as part of the text. The function returned only
the visible height of the output rectangle. |
|
| |
WriteFText() |
If a text line consists of space characters
only the entire text line was discarded and the first
visible character was placed at the beginning of the next
text line. Individual words, which were
wider than the output rectangle, were not broken into the
next text line. |
|
| |
New Functions |
Description |
|
| |
AddBookmarkEx |
Adds a bookmark to the document by using a
named destination as destination. |
|
| |
AttachFile |
Attaches a file to the document. |
|
| |
AttachFileEx |
Attaches a file buffer to the document. |
|
| |
ChangeAnnotName |
Changes the name of an annotation. |
|
| |
ChangeFontStyleEx |
Changes the font style and enables the
emulation of italic or bold font style. |
|
| |
CheckCollection |
Checks whether a PDF collection contains
invalid fields. |
|
| |
CheckConformance |
Checks whether the PDF file conforms to
PDF/A 1b. |
|
| |
Create3DAnnot |
Creates a 3D annotation from an U3D file. |
|
| |
Create3DBackground |
Sets the background color of a 3D
annotation. |
|
| |
Create3DGotoViewAction |
With a Go To View Action you can
dynamically change the view of a 3D annotation. |
|
| |
Create3DProjection |
A 3D projection sets important properties
such as camera position or zoom factor. |
|
| |
Create3DView |
Creates a new view for a 3D annotation. |
|
| |
CreateColItemDate |
Creates a user defined date field in an
embedded file. |
|
| |
CreateColItemNumber |
Creates a user defined number field in an
embedded file. |
|
| |
CreateColItemString |
Creates a user defined text field in an
embedded file. |
|
| |
CreateCollection |
Creates a PDF Collection, also knows as
PDF Packet. |
|
| |
CreateCollectionField |
Creates a user defined field in a PDF
Collection. |
|
| |
CreateExtGState |
Creates an extended graphics state, e.g.
to change the overprint mode. |
|
| |
CreateGoToActionEx |
Creates a Go To Action by using a named
destination as destination. |
|
| |
CreateGoToRActionEx |
Creates a Go To Remote action by using a
named destination as destination. |
|
| |
CreateNamedDest |
Creates a named destination. |
|
| |
CreateSigFieldAP |
Creates a user defined appearance for a
signature field. |
|
| |
EnumDocFonts |
Enumerates all fonts used in a document. |
|
| |
EnumHostFontsEx |
Enumerates available fonts incl. certain
font properties. |
|
| |
FileAttachAnnot |
Attaches a file to the document. |
|
| |
GetDocInfoCount |
Returns the number of available document
information entries. |
|
| |
GetDocInfoEx |
Returns a document information entry incl.
user defined keys. |
|
| |
GetEmbeddedFile |
Returns an embedded file. |
|
| |
GetEmbeddedFileCount |
Returns the number of embedded files in
the document. |
|
| |
GetFieldGroupType |
Returns the base field type of a field
group. |
|
| |
GetFieldHighlightMode |
Returns the highlight mode of a field. |
|
| |
GetFont |
Fills a structure with most important font
properties. |
|
| |
GetGStateFlags |
Returns the current flags relating to the
graphics state handling. |
|
| |
GetInDocInfoCount |
Returns the number of document info
entries of the currently opened PDF file. |
|
| |
GetInDocInfoEx |
Returns a document info entry of the
currently open PDF file. |
|
| |
GetInEncryptionFlags |
Returns the encryption flags of the
currently opened PDF file. |
|
| |
GetInIsCollection |
Returns true if the currently opened PDF
file is a PDF Collection. |
|
| |
GetInIsEncrypted |
Returns true if the currently opened PDF
file is encrypted. |
|
| |
GetJavaScriptName |
Returns the name of a global JavaScript. |
|
| |
GetMatrix |
Returns the current transformation matrix. |
|
| |
GetSpaceWidth |
Returns the space width or a default value
if the font contains no space character. |
|
| |
GetTextWidthEx |
Returns the width of a string with a
specific length. |
|
| |
GetTrapped |
Returns the value of the Trapping
property. |
|
| |
ImportCatalogObjects |
Imports global objects of a PDF file like
JavaScripts, Bookmarks and so on. |
|
| |
ImportDocInfo |
Import the document info of the currently
opened PDF file. |
|
| |
InitExtGState |
Initializes an extended graphics state
structure with default values. |
|
| |
LoadFont |
Loads a font from a file buffer (TTF, TTC,
OpenType, and Type1 font files PFB or PFA). |
|
| |
OpenOutputFile |
Opens the output file into which the PDF
file should be saved. |
|
| |
PageLink2 |
Creates a page link by using a named
destination as destination. |
|
| |
ParseContent |
Parses the contents of page, template, or
patter. |
|
| |
PlaceSigFieldValidateIcon |
Places the validation icon within a
signature field. |
|
| |
SetAnnotSubject |
Sets or changes the subject property of an
annotation. |
|
| |
SetColDefFile |
Sets the initial embedded file of the
Collection that should be opened in the viewer. |
|
| |
SetColSortField |
Sets the field by which the collection
should be sorted. |
|
| |
SetDocInfoEx |
Sets a document information entry. User
defined keys are supported. |
|
| |
SetExtGState |
Activates an extended graphics state. |
|
| |
SetFieldBBox |
Changes the bounding box of a field. |
|
| |
SetFieldFontSize |
Changes the font size of a field. |
|
| |
SetFieldHighlightMode |
Changes the highlight mode of a field. |
|
| |
SetFillColorSpace |
Sets the color space for fill colors. |
|
| |
SetFontEx |
Tries to load a PDF font by using the
Family- and PostScript name. |
|
| |
SetGStateFlags |
Sets specific flags related to the
graphics state handling. |
|
| |
SetListFont |
Sets the font to display a list symbol ->
used by WriteFText(). |
|
| |
SetOrientationEx |
Changes the orientation of a page incl.
the coordinate system and page properties. |
|
| |
SetStrokeColorSpace |
Sets the color space for stroke colors. |
|
| |
SetTrapped |
Sets the trapping property of the
document. |
|
| |
TranslateString |
Converts a binary string returned by
GetPageText() or ParseContent() to Unicode. |
|
| |
WriteTextEx |
Prints a text of a specific length. |
|
| |
WriteTextMatrixEx |
Prints a text of a specific length by
using a transformation matrix. |
|
| |
Version 2.0.16.197 |
|
|
| |
Bugfix |
Description |
|
| |
CloseFileEx() |
Content streams were encrypted with a
wrong object number in version 2.0.12.192; the resulting PDF
file was damaged due to this error. |
|
| |
EMF-Import |
BeginPath() did not reset a previously
drawn text path so that the text was printed again if
another path was filled, stroked, or both.
DynaPDF merges now 200 MoveTo/LineTo calls
each into one block. This results in more efficient PDF
files and the file size can be reduced.
|
|
| |
ImportPDFFile() |
Due to required changes in the function
ImportPage() in version 2.0.12.192, PDF pages which contains
a non-normalized media box could not be properly imported, as
long as the flag ifImportAsPage was not set. |
|
| |
New Functions |
Description |
|
| |
FindField() |
This function searches for field by using
the fully qualified field name and returns the field handle on
success. |
|
| |
ExchangePages() |
The function exchanges two pages. The
destinations of page links and GoTo Actions are still valid
after the function was called. |
|
| |
MovePage() |
This function moves a page to a another
position within the page array. If the destination page is greater than the number
of pages in the document, then the function creates empty
pages until the destination page becomes valid. The
destinations of page links and GoTo actions are still valid
after the function was called. |
|
| |
SetLineDashPatternEx() |
This function accepts an array of double
instead of a string. |
|
| |
Version 2.0.12.192 |
|
|
| |
Bugfix |
Description |
|
| |
EMF import |
Under certain circumstances the text color
could be changed to the background color.
Due to a bug in the viewport calculation
the coordinate calculation could fail if another mapping
mode than MM_ANISOTROPIC was used.
Clipping paths were wrongly processed.
The RGB to CMYK conversion routine
contained an error since version 2.0.12.180.
Space characters could be removed during
conversion especially if the flag TA_UPDATECP was set.
1 Bit Images in StretchBlt() records were
not inserted transparent. |
|
| |
ImportPage() |
Imported PDF pages which contained a
non-normalized media box could not correctly placed and
scaled onto a page. |
|
| |
ImportPDFFile() |
Fields with identical names were not
properly imported. Under certain circumstances DynaPDF
identified combo boxes as list boxes and changed the field
type during import. |
|
| |
PDF import |
PDF files which contained numbers smaller
1 without a leading zero (e.g. .005, -.5) could not be properly
imported.
In addition, it was not possible to import
a document that contained a document ID that was not 16
bytes long. The document ID is a 16 byte MD5 hash, it is
only required if the document is encrypted. |
|
| |
Get/SetUseGlobalImportFiles() |
Both function names were misspelled. |
|
| |
WriteAngleText() |
The property font origin was changed to
orDownLeft within the function. |
|
| |
WriteFText() |
The calculation of the output rectangle
was wrong if bottom-up coordinates were used. In addition,
an unnecessary page break was raised under certain
circumstances. |
|
| |
New Functions |
Description |
|
| |
AddRenderingIntent() |
The function embeds an ICC profil in the
PDF file. An embedded ICC profile is required to create
PDF/A or PDF/X compliant PDF files. |
|
| |
ChangeLinkAnnot() |
The function changes the URL or file path
of a web link or file link annotation. |
|
| |
FindLinkAnnot() |
This function searches a web link or file
link annotation. |
|
| |
GetAnnotLink() |
The function returns the URL or file link
of a web link or file link annotation. |
|
| |
GetInOrientation() |
The function returns the orientation of a
specific page in the currently opened import file. |
|
| |
ImportBookmarks() |
This function can be used to imports the
outline tree of a PDF file independent from the document. |
|
| |
InsertMetafileFromHandle() |
This function converts an EMF file from an
HENHMETAFILE handle to native PDF vector graphics. |
|
| |
InsertMetafileFromHandleEx() |
Same as InsertMetafileFromHandle()
but accepts an additional parameter to zoom into a specific
area of an EMF file. |
|
| |
SetUseSwapFileEx() |
In contrast to SetUseSwapFile() the output
directory of the temp file can be specified in this version. |
|
| |
EMF conversion |
The EMF converter has been further
improved and it is now able to remove unnecessary records
completely. In addition, unnecessary MoveTo/LineTo are removed
and Bezier curves are stored in a more compact format
whenever possible.
Single characters are merged horizontally
to complete strings; this reduces the output file size
significantly.
It is now also possible to scale all
coordinates to the output window size. This technique avoids
floating point overflows in PDF viewer applications when
high resolution EMF files are converted to PDF, especially
if the EMF file uses 32 bit coordinates. The output file
size can also be reduced because fully scaled coordinates
are usually smaller than high resolution coordinates.
|
|
| |
PDF/A and PDF/X compatibility |
DynaPDF is now able to create PDF/A and
PDF/X compliant PDF files. |
|
| |
JPEG2000 compression
(experimental) |
DynaPDF supports now JPEG2000 compression
over all image input image formats. In addition, decoders
for the image formats JP2, JPC, and PGX were added to
DynaPDF.
However, JPEG2000 compression requires in
comparison to other compression filters very much CPU time
and the usage is more complicated because it not possible to
use default compression quality level that produces good results
with most images. Due the limitations this filter is marked
as experimental. |
|
| |
Version 2.0.8.167 |
|
|
| |
Bugfix |
Description |
|
| |
ImportPDFFile() |
List boxes were sometimes identified as
combo boxes so that the field type was changed during import. |
|
| |
SetFont() |
Acrobat 3 does not display embedded
TrueType fonts if the name table does not contain font names
for the language ID 0x0409 (English American). DynaPDF did
not create names for this language ID so that it is was
impossible to view such fonts with Acrobat 3. |
|
| |
Version 2.0.8.166 |
|
|
| |
Bugfix |
Description |
|
| |
SetFont() |
The cap height could be zero if the
typographic ascender of a TrueType font was not set. Adobe's
Acrobat viewer applications do not depend on the cap height. |
|
| |
Version 2.0.8.164 |
|
|
| |
Bugfix |
Description |
|
| |
Shadings |
Shadings produced a damaged PDF file due
to changes in a color function in version 2.0.7.163. |
|
| |
ImportPDFFile() |
Rendering Intents were encrypted by using
a wrong object number. |
|
| |
New functions |
Description |
|
| |
ChangeJavaScriptName() |
This function can be used to change the
name of a global JavaScript. |
|
| |
GetInIsSigned() |
This function checks whether
a PDF file contains a digital signature. |
|
| |
Version 2.0.7.163 |
|
|
| |
Bugfix |
Description |
|
| |
EMF conversion |
DynaPDF did not rotate text that was
printed with the undocumented record type EMRSMALLTEXTOUT. |
|
| |
New functions |
Description |
|
| |
ReadImageResolution() |
This function retrieves the resolution of
an image. Note that the resolution of an image file is a
user defined value. Not all image formats support a record
to store the resolution; the function sets the resolution to
zero in the latter case. |
|
| |
ReadImageResolutionEx() |
Same as ReadImageResolution(); this
version accepts an image buffer as input. |
|
| |
Version 2.0.6.162 |
|
|
| |
Bugfix |
Description |
|
| |
EMF conversion |
Colors of the system palette were not
properly identified.
Due to a bug in a color conversion
function it was impossible to use the color space DeviceCMYK. |
|
| |
Version 2.0.6.161 |
|
|
| |
Bugfix |
Description |
|
| |
Interactive Forms |
Fields with identical field names were not
supported. All functions to create fields were extended so
that such fields can be successfully created.
With Adobe's Designer created PDF files
use often Unicode strings for field names. Because of this
the functions GetField(), GetPageFiel() and GetFieldName()
must be extended so that Unicode names can be processed.
C/C++ and Delphi users must check the string length with
strlen() to determine whether the field name is an ANSI or
Unicode string. The field name is an Unicode string if
strlen(f.FieldName) != f.FieldNameLen.
Interactive Forms created by Adobe's could
not be properly imported if the flag ifImportAsPage was not
set. It was also possible that FlattenForm() produced an
Exception if such a form should be flattened. |
|
| |
EMF conversion |
DynaPDF did not check for open paths
before processing the EMF record EMRSMALLTEXTOUT. The PDF
file was damaged if an open path occurred before this record
type.
Images were wrongly cropped and appeared
on a wrong position if the world coordinate system of the
reference DC contained a translation or scale.
The start or end angle of an arc, pie, or
chord was wrongly calculated if the angle was nearly 90,
180, 270, or 360 degrees. DynaPDF must round the angle to
the nearest integer value to get correct results.
The handling of 1 bit images has been
changed:
DynaPDF prints such images now always
transparent as long as they must not be converted to RGB due
to the used background or foreground color. This results
mostly in a much better output. However, because DynaPDF
does still not support raster operation codes, the result is
not always predictable. |
|
| |
PDF output |
The used Quicksort algorithms of DynaPDF
could produce a buffer overrun. An error has never been
reported but it was theoretical possible that an exception
occurred during font selection or when the PDF file was
created. |
|
| |
IsColorPage() |
The function could not identify vector
graphics and text as color objects if the used color was an
ICC based color space. |
|
| |
Version 2.0.6.160 |
|
|
| |
Bugfix |
Description |
|
| |
PDF import |
Documents which use global page resources
could not be properly imported. Such documents are not
created by Adobe products. |
|
| |
IsEmptyPage(), IsColorPage() |
Both functions ignored images which were
inserted with DynaPDF functions as long as the document was
not saved and imported again. These functions were developed
to check imported pages. That people use them to check pages
e.g. after an EMF file was inserted was not considered. |
|
| |
Version 2.0.6.159 |
|
|
| |
Bugfix |
Description |
|
| |
TrueType fonts |
Due to changes in the embedding algorithm
of TrueType glyphs the space character could be replaced by
an arbitrary character. |
|
| |
Version 2.0.6.158 |
|
|
| |
Bugfix |
Description |
|
| |
PDF import |
DynaPDF was unable to decrypt PDF files if
the flag EncryptMetaData was set to false (PDF 1.5 or higher).
With Adobe's Designer created Interactive
Forms share form fonts with normal page contents. This
caused errors because it is not allowed to share form fonts
with page contents in older versions of Adobe's Acrobat.
A memory leak occurred if the optional
mapping name of fields was set.
Global javascripts were sorted before they were written to the file.
This caused errors if a specific execution order was
required, e.g. to initialize variables. |
|
| |
EMF conversion |
Complex clipping regions were not properly
applied if the graphics state was saved and restored more
than one time within a clipping region.
The bitmap of a monobrush was mirrored
vertically. |
|
| |
Text fields |
The font size of text fields was not
properly calculated if the font size was set to "auto". The
text appeared too large if the string width
was larger than the the field width. |
|
| |
New Functions |
Description |
|
| |
Get/SetCheckBoxDefState() |
This property enables the creation of
checkboxes with a different default state as visible when
the form is opened in Adobe's Acrobat. |
|
| |
Version 2.0.5.157 |
|
|
| |
Bugfix |
Description |
|
| |
EMF conversion |
Due to changes in the font handling in
version 2.0.5.155 an out of memory exception could occur if
a font could not be found.
Not all properties of a brush and pen were
restored with the EMF record RestoreDC. |
|
| |
Version 2.0.5.156 |
|
|
| |
Bugfix |
Description |
|
| |
EMF conversion |
DynaPDF did not check for open paths when
the EMF record RestoreDC was applied. Such open paths could
then appear in wrong colors and line width.
IntersectClipRect records restored a
previously created clipping region instead of creating an
intersection. |
|
| |
Version 2.0.5.155 |
|
|
| |
Bugfix |
Description |
|
| |
EMF conversion |
The font size of stockfonts was not
properly scaled if the scaling factor or the viewport was <
1.0.
DynaPDF prefers now TrueType fonts for
stockfonts if available; this results in better output.
The optional clipping rectangle within
text records is not longer ignored.
ExtCreateFont records were ignored if the
font name was not set, this is wrong. The font properties
are used if a text is printed without setting a font.
|
|
| |
Version 2.0.5.154 |
|
|
| |
Bugfix |
Description |
|
| |
EMF conversion |
Text that was printed with the undocumented EMF record
EMRSMALLTEXTOUT was not transformed with the transformation matrix and viewport. |
|
| |
Version 2.0.5.152 |
|
|
| |
New Functions |
Description |
|
| |
Get/SetFieldMapName() |
Optional mapping name that is used when
exporting form data to a web server. |
|
| |
Bugfix |
Description |
|
| |
EMF conversion |
DynaPDF checks for duplicate images during
EMF conversion to avoid embedding of identical
images multiple times. The duplicate checking based on a MD5 hash that is
created from the image data. To improve processing speed
DynaPDF used not the entire image buffer to create the hash,
that caused that in the worst case an image could be
replaced with another one. DynaPDF uses now the entire image
puffer to create the hash to avoid problems with the duplicate checking.
The text alignment was not restored with the current
graphics state. This could cause problems if the alignment was not set
before printing a text.
The EMF record StrokePath closed a previously painted path.
The intercharacter spacing array of text records is now calculated with
an error of 10 font units; this results in more compact string output. |
|
| |
Version 2.0.4.146 |
|
| |
New Functions |
Description |
|
| |
CloseAndSignFile() |
Function to digitally sign a PDF file. |
|
| |
CloseAndSignFileEx() |
Function to digitally sign
and encrypt a PDF file. |
|
| |
CreateSigField() |
Function to create an empty signature
field. |
|
| |
GetDynaPDFVersion() |
Returns the DynaPDF version string. |
|
| |
Get/SetFieldBorderWidth() |
Border width of interactive forms fields. |
|
| |
Get/SetFieldOrientation() |
This property can be used to rotate fields. |
|
| |
HaveOpenDoc() |
Checks whether an open PDF file is in
memory. |
|
| |
Bugfix |
Description |
|
| |
Changed font handling |
Acrobat 6/7 did not export embedded
TrueType fonts if the flag "Convert TrueType fonts to Type1"
was not enabled. The new Acrobat versions export TrueType
fonts only if they are organized in a very special way. |
|
| |
EMF conversion |
An exception could occur if 256
color images were downscaled to the wished resolution.
New Coordinate logic:
DynaPDF does not longer store coordinate
transformations in the resulting PDF file. This avoids
problems if very complex transformations are applied. The
new coordinate logic is absolutely safe. Especially clipping
regions cannot longer produce coordinate problems. |
|
| |
All image functions |
The color table of bitmaps and DIBs was
not properly converted from BGR to RGB. Such images could
then appear in wrong colors. |
|