Hot Fixes for Release 1.3

Dear Customers,

This thread is a collection describing hot fixes since release 1.3 (available at the download package) was published.

  1. First please check what is defined as a hot fix and what is defined as a new release at Aspose.

  2. Once a hot fix is ready, we update the Aspose.Pdf.zip file on the server and then add a post in this thread to declare what we have updated in the current fix. Please, check back on this thread to see what’s happening to Aspose.Pdf.dll.

  3. The url for the hot fix is always at Download .NET Component DLL to Process PDF | Aspose.PDF API. For efficiency we won’t mention the download address of the fix in our later posts any more so please bookmark this address for later use.

  4. To avoid confusion, we only store the latest hot fix on the server: whenever a new hotfix is introduced, we overwite the earlier one. So that you will always download the latest version.

  5. If you find Aspose.Pdf.dll functions improperly, we highly recommend that you try the latest fix before report the error in this forum. Past experience indicates some of the problems are caused by not using the latest hot fix. Thanks for your understanding and cooperation.

https://forum.aspose.com/t/138267

https://forum.aspose.com/t/138222

https://forum.aspose.com/t/138220

https://forum.aspose.com/t/138199

https://forum.aspose.com/t/138159

https://forum.aspose.com/t/138134

https://forum.aspose.com/t/138144

In this fix:

  1. Nested table is now supported.
  2. Performance is improved.

Please download the hotfix here.

Important Note:

To use nested table in api, you should:

  1. Use the Table(Section) constructor for the main table but not Table() constructor;
  2. Use the Table(Cell) constructor for the nested table;
  3. Use Cell(Row) constructor for cell instead of Cell(Table);

example for nested table:

[XML]

<?xml version="1.0" encoding="utf-8" ?> 
<Pdf xmlns="Aspose.Pdf">
	<Section PageMarginLeft="30" PageMarginRight="30" PageHeight="400">
		<Table>
			<Row>
				<Cell FitWidth="100">
					<Border>
						<All Color="gray 180"></All>
					</Border>
					<Text>
						<Segment>left cell</Segment>
					</Text>
				</Cell>
				<Cell FitWidth="200">
					<Border>
						<Top Color="gray 180"></Top>
						<Right Color="gray 180"></Right>
						<Bottom Color="gray 180"></Bottom>
					</Border>
					<Table>
						<Row>
							<Cell FitWidth="100" ColumnsSpan="2">
								<Border>
									<Bottom Color="gray 180"></Bottom>
								</Border>
								<Text MarginBottom="3" MarginLeft="5">
									<Segment>top cell</Segment>
								</Text>
							</Cell>
						</Row>
						<Row>
							<Cell FitWidth="100">
								<Border>
									<Right Color="gray 180"></Right>
								</Border>
								<Text MarginBottom="3" MarginLeft="5">
									<Segment>left bottom cell</Segment>
								</Text>
							</Cell>
							<Cell FitWidth="100">
								<Text MarginBottom="3" MarginLeft="5">
									<Segment>right bottom cell</Segment>
								</Text>
							</Cell>
						</Row>
				</Table>
				</Cell>
			</Row>
		</Table>
	</Section>
</Pdf>

[c#]

Pdf pdf = new Pdf();

Section section = new Section(pdf);
pdf.Sections.Add(section);

Aspose.Pdf.Table table1 = new Aspose.Pdf.Table(section);
section.Paragraphs.Add(table1);

Row row1 = new Row(table1);
table1.Rows.Add(row1);

Cell cell1 = new Cell(row1);
row1.Cells.Add(cell1);
cell1.FitWidth = 100;

BorderInfo border2 = new BorderInfo();
GraphInfo graphInfo1 = new GraphInfo();
graphInfo1.Color.ColorSpaceType = ColorSpaceType.Gray;
graphInfo1.Color.GrayColorSpace = new GrayColorSpace();
graphInfo1.Color.GrayColorSpace.GrayValue = 180;
border2.Left = border2.Right = border2.Bottom = border2.Top = graphInfo1;
cell1.Border = border2;

Text text1 = new Text(section);
cell1.Paragraphs.Add(text1);
Segment segment1 = new Segment(text1);
text1.Segments.Add(segment1);
segment1.Content = “left cell”;

Cell cell2 = new Cell(row1);
row1.Cells.Add(cell2);
cell2.FitWidth = 200;

border2 = new BorderInfo();
border2.Right = border2.Bottom = border2.Top = graphInfo1;
cell2.Border = border2;

Aspose.Pdf.Table cell2Table1 = new Aspose.Pdf.Table(cell2);
cell2.Paragraphs.Add(cell2Table1);

Row row1Cell2Table1 = new Row(cell2Table1);
cell2Table1.Rows.Add(row1Cell2Table1);

Cell cell1Row1Cell2Table1 = new Cell(row1Cell2Table1);
row1Cell2Table1.Cells.Add(cell1Row1Cell2Table1);
cell1Row1Cell2Table1.FitWidth = 100;
cell1Row1Cell2Table1.ColumnsSpan = 2;

border2 = new BorderInfo();
border2.Bottom = graphInfo1;
cell1Row1Cell2Table1.Border = border2;

text1 = new Text(section);
cell1Row1Cell2Table1.Paragraphs.Add(text1);
segment1 = new Segment(text1);
text1.Segments.Add(segment1);
segment1.Content = “top cell”;

Row row2Cell2Table1 = new Row(cell2Table1);
cell2Table1.Rows.Add(row2Cell2Table1);

Cell cell1Row2Cell2Table1 = new Cell(row2Cell2Table1);
row2Cell2Table1.Cells.Add(cell1Row2Cell2Table1);
cell1Row2Cell2Table1.FitWidth = 100;

border2 = new BorderInfo();
border2.Right = graphInfo1;
cell1Row2Cell2Table1.Border = border2;

text1 = new Text(section);
cell1Row2Cell2Table1.Paragraphs.Add(text1);
segment1 = new Segment(text1);
text1.Segments.Add(segment1);
segment1.Content = “left bottom cell”;

Cell cell2Row2Cell2Table1 = new Cell(row2Cell2Table1);
row2Cell2Table1.Cells.Add(cell2Row2Cell2Table1);
cell2Row2Cell2Table1.FitWidth = 100;

text1 = new Text(section);
cell2Row2Cell2Table1.Paragraphs.Add(text1);
segment1 = new Segment(text1);
text1.Segments.Add(segment1);
segment1.Content = “right bottom cell”;

pdf.Save(…);

[VisualBasic]

Dim pdf As Pdf = New Pdf()

Dim section As Section = New Section(pdf)
pdf.Sections.Add(section)

Dim table1 As Aspose.Pdf.Table = New Aspose.Pdf.Table(section)
table1.Margin.Top = 680
section.Paragraphs.Add(table1)

Dim row1 As Row = New Row(table1)
table1.Rows.Add(row1)

Dim cell1 As Cell = New Cell(row1)
row1.Cells.Add(cell1)
cell1.FitWidth = 100

Dim border2 As BorderInfo = New BorderInfo()
Dim graphInfo1 As GraphInfo = New GraphInfo()
graphInfo1.Color.ColorSpaceType = ColorSpaceType.Gray
graphInfo1.Color.GrayColorSpace = New GrayColorSpace()
graphInfo1.Color.GrayColorSpace.GrayValue = 180
border2.Left = graphInfo1
border2.Right = graphInfo1
border2.Bottom = graphInfo1
border2.Top = graphInfo1
cell1.Border = border2

Dim text1 As Text = New Text(section)
cell1.Paragraphs.Add(text1)
Dim segment1 As Segment = New Segment(text1)
text1.Segments.Add(segment1)
segment1.Content = “left cell”

Dim cell2 As Cell = New Cell(row1)
row1.Cells.Add(cell2)
cell2.FitWidth = 200

border2 = New BorderInfo()
border2.Right = graphInfo1
border2.Bottom = graphInfo1
border2.Top = graphInfo1
cell2.Border = border2

Dim cell2Table1 As Aspose.Pdf.Table = New Aspose.Pdf.Table(cell2)
cell2.Paragraphs.Add(cell2Table1)

Dim row1Cell2Table1 As Row = New Row(cell2Table1)
cell2Table1.Rows.Add(row1Cell2Table1)

Dim cell1Row1Cell2Table1 As Cell = New Cell(row1Cell2Table1)
row1Cell2Table1.Cells.Add(cell1Row1Cell2Table1)
cell1Row1Cell2Table1.FitWidth = 100
cell1Row1Cell2Table1.ColumnsSpan = 2

border2 = New BorderInfo()
border2.Bottom = graphInfo1
cell1Row1Cell2Table1.Border = border2

text1 = New Text(section)
cell1Row1Cell2Table1.Paragraphs.Add(text1)
segment1 = New Segment(text1)
text1.Segments.Add(segment1)
segment1.Content = “top cell”

Dim row2Cell2Table1 As Row = New Row(cell2Table1)
cell2Table1.Rows.Add(row2Cell2Table1)

Dim cell1Row2Cell2Table1 As Cell = New Cell(row2Cell2Table1)
row2Cell2Table1.Cells.Add(cell1Row2Cell2Table1)
cell1Row2Cell2Table1.FitWidth = 100

border2 = New BorderInfo()
border2.Right = graphInfo1
cell1Row2Cell2Table1.Border = border2

text1 = New Text(section)
cell1Row2Cell2Table1.Paragraphs.Add(text1)
segment1 = New Segment(text1)
text1.Segments.Add(segment1)
segment1.Content = “left bottom cell”

Dim cell2Row2Cell2Table1 As Cell = New Cell(row2Cell2Table1)
row2Cell2Table1.Cells.Add(cell2Row2Cell2Table1)
cell2Row2Cell2Table1.FitWidth = 100

text1 = New Text(section)
cell2Row2Cell2Table1.Paragraphs.Add(text1)
segment1 = New Segment(text1)
text1.Segments.Add(segment1)
segment1.Content = “right bottom cell”

pdf.Save(…)

In this fix:

  1. The left hanging text bug reported by @tbjerstedt in thread Bulleted lists () in table cells is fixed.

  2. We decide to remove the Pdf.Save(HttpResponse) method. See thread Page_Load Fires Twice for detail.

Please download the hotfix here.

In this fix the Table.IsBroken property is supported.

The value of the Table.IsBroken and Table.IsRowBroken should be set by user. The default value is true. If Table.IsBroken is set to false, the table will start at next page when it spans pages. and if Table.IsRowBroken is set to false, the row will start at new page when table spans pages.

Please download the hotfix here.

Please download the new xsd file here.

Dear customers,

In this hot fix,

1. Justify and FullJustify, requested by Full Justification.

(1). Justify and fulljustify support single-segment text only.

(2). AlignmentType adds new member: Justify and FullJustify, used only in single-segment text and can’t be used for other paragraphs.

[Visual Basic]

Dim pdf As Pdf = New Pdf()

Dim section As Section = New Section(pdf)
pdf.Sections.Add(section)

Dim text1 As Text = New Text(section)
text1.Margin.Top = 30
text1.TextInfo.Alignment = AlignmentType.Justify

section.Paragraphs.Add(text1)

Dim segment1 As Segment = New Segment(text1)
text1.Segments.Add(segment1)
segment1.Content = "This is text content with ‘Justify’ alignment. " & _
"This is text content with ‘Justify’ alignment. " & _
"This is text content with ‘Justify’ alignment. " & _
“This is text content with ‘Justify’ alignment.”

Dim text2 As Text = New Text(section)
text2.Margin.Top = 30
text2.TextInfo.Alignment = AlignmentType.FullJustify

section.Paragraphs.Add(text2)

Dim segment2 As Segment = New Segment(text2)
text2.Segments.Add(segment2)
segment2.Content = "This is text content with ‘Justify’ alignment. " & _
"This is text content with ‘Justify’ alignment. " & _
"This is text content with ‘Justify’ alignment. " & _
“This is text content with ‘Justify’ alignment.”

pdf.Save(Response)
Response.End()

[C#]

Pdf pdf = new Pdf();

Section section = new Section(pdf);
pdf.Sections.Add(section);

Text text1 = new Text(section);
text1.Margin.Top = 30;
text1.TextInfo.Alignment = AlignmentType.Justify;

section.Paragraphs.Add(text1);

Segment segment1 = new Segment(text1);
text1.Segments.Add(segment1);
segment1.Content =
"This is text content with ‘Justify’ alignment. " +
"This is text content with ‘Justify’ alignment. " +
"This is text content with ‘Justify’ alignment. " +
“This is text content with ‘Justify’ alignment.”;

Text text2 = new Text(section);
text2.Margin.Top = 30;
text2.TextInfo.Alignment = AlignmentType.FullJustify;

section.Paragraphs.Add(text2);

Segment segment2 = new Segment(text2);
text2.Segments.Add(segment2);
segment2.Content =
"This is text content with ‘Justify’ alignment. " +
"This is text content with ‘Justify’ alignment. " +
"This is text content with ‘Justify’ alignment. " +
“This is text content with ‘Justify’ alignment.”;

pdf.Save(Response);
Response.End();

[XML]

<?xml version="1.0" encoding="utf-8" ?>

This is text content with ‘Justify’ alignment. This is text content with ‘Justify’ alignment.
This is text content with ‘Justify’ alignment.This is text content with ‘Justify’ alignment.

This is text content with ‘FullJustify’ alignment. This is text content with ‘FullJustify’ alignment.
This is text content with ‘FullJustify’ alignment.This is text content with ‘FullJustify’ alignment.

2. CCITT, requested by CCITT Conversion Bug.

(1). Add new enum CcittSubFormat
public enum CcittSubFormat
{
///

/// CCITT group3 1D format
///
Group31D = 0,
///
/// CCITT group3 2D format
///
Group32D = 1,
///
/// CCITT group4 format
///
Group4 = -1,
///
///
///
UnKnown = -2

}

(2). ImageInfo adds a new property CcittSubFormat. When you use CCITT image you need to set this property.

[Visual Basic]

Dim pdf As Pdf = New Pdf()

Dim section As Section = New Section(pdf)
section.PageInfo.PageWidth = 3500
section.PageInfo.PageHeight = 2500
pdf.Sections.Add(section)

Dim image1 As Aspose.Pdf.Image = New Aspose.Pdf.Image(section)
section.Paragraphs.Add(image1)

image1.ImageInfo.File = “Y:/Images/Bag11083_X4.fax”
image1.ImageInfo.ImageFileType = ImageFileType.Ccitt
image1.ImageInfo.CcittSubFormat = CcittSubFormat.Group4
image1.ImageWidth = 2560
image1.ImageHeight = 1779

pdf.Save(Response)
Response.End()

[C#]

Pdf pdf = new Pdf();

Section section = new Section(pdf);
section.PageInfo.PageWidth = 3500;
section.PageInfo.PageHeight = 2500;
pdf.Sections.Add(section);

Aspose.Pdf.Image image1 = new Aspose.Pdf.Image(section);
section.Paragraphs.Add(image1);

image1.ImageInfo.File = “Y:/Images/Bag11083_X4.fax”;
image1.ImageInfo.ImageFileType = ImageFileType.Ccitt;
image1.ImageInfo.CcittSubFormat = CcittSubFormat.Group4;
image1.ImageWidth = 2560;
image1.ImageHeight = 1779;

pdf.Save(Response);
Response.End();

[XML]

<?xml version="1.0" encoding="utf-8" ?> <BR>
<Pdf xmlns="Aspose.Pdf" CompressionLevel="0">
	<Section PageMarginLeft="30" PageMarginRight="30" PageWidth="3500" PageHeight="2500">
		<Image File="Y:/Images/Bag11083_X4.fax" Type="ccitt" CcittSubFormat="Group4" Width="2560" Height="1779">
		</Image>
	</Section>
</Pdf>

Please download the hotfix here.

Please download the new xsd file here .

In this fix:

  1. A bug about graph note reported by @tbjerstedt in thread Graph containing only Note does not display is fixed.

2). The Aspose.Pdf.dll is now strongly named.

3). Fix a bug in licensing.

Please download the hotfix here.

In this release:

Unicode support for truetype font is added.

Please download new release here.

The following is an example:

[XML]

<?xml version="1.0" encoding="utf-8" ?> 
<Pdf xmlns="Aspose.Pdf">
	<Section>
		<Text> 
			<Segment FontName="Comic Sans MS" IsUnicode="true" 
				TruetypeFontFileName="c:/winnt/fonts/comic.ttf">
				greek characters: ΓΔΣγ
			</Segment> 
		</Text>	
		<Text> 
			<Segment FontName="Comic Sans MS" IsUnicode="true" 
				TruetypeFontFileName="c:/winnt/fonts/comic.ttf">
				cyrillic characters: ИяФ
			</Segment> 
		</Text>	
	</Section>
</Pdf>

[C#]

Pdf pdf = new Pdf();

Section section = new Section(pdf);
pdf.Sections.Add(section);

Text text1 = new Text(section);
section.Paragraphs.Add(text1);

Segment segment1 = new Segment(text1);
text1.Segments.Add(segment1);
segment1.TextInfo.FontName = “Comic Sans MS”;
segment1.TextInfo.IsUnicode = true;
segment1.TextInfo.TruetypeFontFileName = “c:/winnt/fonts/comic.ttf”;
segment1.Content = “greek characters: \u0393\u0394\u03a3\u03b3”;

Text text2 = new Text(section);
section.Paragraphs.Add(text2);

Segment segment2 = new Segment(text2);
text2.Segments.Add(segment2);
segment2.TextInfo.FontName = “Comic Sans MS”;
segment2.TextInfo.IsUnicode = true;
segment2.TextInfo.TruetypeFontFileName = “c:/winnt/fonts/comic.ttf”;
segment2.Content = “cyrillic characters: \u0418\u044f\u0424”;

pdf.Save(…);

[VisualBasic]

Dim pdf As Pdf = New Pdf()

Dim section As Section = New Section(pdf)
pdf.Sections.Add(section)

Dim text1 As Text = New Text(section)
section.Paragraphs.Add(text1)

Dim segment1 As Segment = New Segment(text1)
text1.Segments.Add(segment1)
segment1.TextInfo.FontName = “Comic Sans MS”
segment1.TextInfo.IsUnicode = True
segment1.TextInfo.TruetypeFontFileName = “c:/winnt/fonts/comic.ttf”
segment1.Content = "greek characters: " & ChrW(&H393) & ChrW(&H394) & ChrW(&H3A3) & ChrW(&H3B3)

Dim text2 As Text = New Text(section)
section.Paragraphs.Add(text2)

Dim segment2 As Segment = New Segment(text2)
text2.Segments.Add(segment2)
segment2.TextInfo.FontName = “Comic Sans MS”
segment2.TextInfo.IsUnicode = True
segment2.TextInfo.TruetypeFontFileName = “c:/winnt/fonts/comic.ttf”
segment2.Content = "cyrillic characters: " & ChrW(&H418) & ChrW(&H44F) & ChrW(&H424)

pdf.Save(…)

Here is an example about how to use chinese.