Company Info
Siberix Report Writer is an advanced reporting solution for .Net Framework 2.0 and 3.0 designed to create industry standard PDF and XPS documents dynamically with API calls or from XML. It provides a variety of methods to format text, insert images, draw geometric figures and paths and allows to process complex layouts and flows.

This product doesn't require any third-party DLLs and supports both WinForms and ASP.NET applications.

Features:
  • Easy to use API and XML format
  • Advanced Document Object Model
  • Multiple sections with individual formatting
  • Headers, Footers, Stationeries and Decorations
  • Automatic page flow and stand alone pages
  • Page breaks on section and element level
  • Page and line numbering
  • Table of contents and Index
  • Multiple segments in every section
  • Bookmarks, Hyperlinks and Headings
  • Lists, Tables, Grids, Bands, Trees, and Flows
  • Element borders, spacings, paddings and backgrounds
  • Fixed, Relative and Dynamic element dimensions
  • Unbreakable elements and content chains
  • Horizontal and Vertical content groups
  • Rules, Stretchers and Gaps
  • Callback interface to resolve Merge codes and Containers
  • Advanced text formatting (Font family; Font size and color; Bold, Italic, Strikeout and Underline styles; Superscript and Subscript; Char and Word spacings; Tabs; Horizontal and Vertical alignment; Intervals and Indentations; First letter drop caps and Inline images)
  • Unicode support
  • Local TrueType font files
  • Imitation of bold and italic font styles, if required
  • Flate, JPEG and CCITT Group 4 image compression
  • Grayscale and BW image transformation
  • Import from metafiles (WMF)
  • Temporary file buffers
  • Shapes
  • Canvas elements (similar to GDI+; Lines, Rectangles, Ellipses, Polylines, Polygons, Arcs, Chords and Pies; Path composition; Bezier curves and Splines; Pen styles, widths, colors, caps and joins; SolidColor, Hatch, LinearGradient, RadialGradient and Texture brushes; Alpha channel; Font metrics; Clipping areas; Translation, Rotation, Skew and other transformations; Wrapper for the System.Drawing.Graphics class)
  • Site containers to place elements by their absolute positions and rotation angles
  • PDF Encryption, Digital signing, File Attachments, True Type font embedding and subsetting
  • Export to PDF and XPS, Thumbnail generation and Printing
Requirements:
  • PC with an Intel or compatible Pentium 600 MHz or higher processor
  • Windows 2000, Windows XP, Windows Server 2003, Windows Vista
  • .Net Framework 2.0 or .Net Framework 3.0 with Full Trust permissions (Partial Trust is also supported but need to be verified in your production environment)
  • Minimum of 128 Mb of RAM (256 and more recommended)
  • Memory requirements vary according to the nature of the project
FAQ
Q. Is Siberix Report Writer royalty free?
A. Yes, Siberix Report Writer has 100% royalty free distribution rights. Pay once and use the product wherever you want including web servers or your distribution packages.
Q. What does the Corporate License mean?
A. The Corporate License includes unlimited number of company's developer seats, unlimited number of company's web servers and unlimited number of distributions as a part of your application.
Q. What does the Source Code License mean?
A. The Source Code License covers the standard Corporate License and includes full source code for the Siberix Report Writer. You may perform any modifications to the product or even compile it in one binary file with your application. Please read the software license agreement for more details.
Q. Are there any limitations in the evaluation version?
A. No, it's fully functional and represents all original features and behavior. It allows you to perform any tests in your production environment until you get the commercial version of the product.
Q. Do I need to obtain any special license from Adobe?
A. Adobe PDF is an open standard and we haven't seen anything that prevents to develop a product for the PDF document generation. Siberix Report Writer doesn't use Acrobat Reader's interfaces to produce PDF documents and is not a plug-in to the Acrobat Reader in any way. From that point of view the product is a standalone third party component. Thus, we believe that you have to follow the Acrobat Reader's license agreement in the matter of distributing the Acrobat Reader itself and the Siberix Report Writer's license agreement in the matter of distributing the product.

You may need to get a license from Adobe to bundle the Acrobat Reader with your project distribution package. However, this has nothing to do with the product's API used to generate PDF files.
Q. Do I need to obtain any special license from Microsoft?
A. To the best of our knowledge, Microsoft doesn't forbid third party companies to develop a product for the XPS document generation. However, according to the XML Paper Specification Patent License we have to provide the following notice for your information:

This product may incorporate intellectual property owned by Microsoft Corporation. The terms and conditions upon which Microsoft is licensing such intellectual property may be found at http://go.microsoft.com/fwlink/?LinkId=52369.
Q. How to install or upgrade the product?
A. Siberix Report Writer doesn't require any installation. All you need to do is to copy Siberix.ReportWriter.dll into your project folder (desktop applications) or to the "bin" folder (ASPX applications) and reference it from the project. You may read regarding the "bin" folder and other deployment options in ASP.NET at the following link.

Notes

1. It's required to register the Siberix.ReportWriter.dll in the Global Assembly Cache (GAC) to work properly in the Medium Trust environment. You can use:
  • gacutil -i Siberix.ReportWriter.dll
  • Control Panel / Administrative Tools / Microsoft .NET Framework 2.0 Configuration / Manage the Assembly Cache / Add an Assembly to the Assembly Cache
You may read more regarding working in the Medium Trust environment at the following link.

2. In some rare cases you may find out that the evaluation watermark is still in place or get unexpected errors while installing or upgrading the product. To eliminate them please follow to the instructions below. It is preferred to perform all the steps together:

  • Check you have the latest Siberix.ReportWriter.dll
  • Remove all inclusions of Siberix.ReportWriter.dll at the temporary ASP.NET directory (%WINDOWS%\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root)
  • Open your project and remove all references to Siberix.ReportWriter.dll in your project including the main reference path (Right click on the project name in the Solution Explorer / Properties / References Path)
  • Save the project
  • Add references to Siberix.ReportWriter.dll in your project
  • Save and recompile the project
  • Clear your browser's cache
  • Restart the Internet Informational Server (IIS)
  • Run the project
Q. How do I get started with the product?
A. We recommend that you start with a brief review of the User's Guide and continue with a detailed analysis of supplied examples.
Q. How to stream out PDF or XPS documents in ASP.NET?
A. There are several ways to stream out PDF or XPS documents from an ASPX page. See the code samples below.

Content types:

PDF - application/pdf
XPS - application/vnd.ms-xpsdocument

1. Streaming into the context's response

[c#]

System.Web.HttpContext context = System.Web.HttpContext.Current;
System.Web.HttpResponse response = context.Response;
response.Clear();
response.ContentType = "application/pdf";
report.Publish(response.OutputStream, Siberix.Report.FileFormat.PDF);
response.End();

[vb]

Dim context As System.Web.HttpContext = System.Web.HttpContext.Current
Dim response As System.Web.HttpResponse = context.Response
response.Clear()
response.ContentType = "application/pdf"
report.Publish(response.OutputStream, Siberix.Report.FileFormat.PDF)
response.End()

Note: To stream out a PDF document over the https response please use the following lines:

[c#]

System.IO.MemoryStream ms = new System.IO.MemoryStream();

report.Publish(ms, Siberix.Report.FileFormat.PDF);

byte[] buffer = ms.ToArray();
int length = buffer.Length;

System.Web.HttpContext context = System.Web.HttpContext.Current;
System.Web.HttpResponse response = context.Response;
response.Clear();
response.ContentType = "application/pdf";
response.AddHeader("Content-Length", length.ToString());
response.AddHeader("Accept-Ranges", "bytes");
response.AddHeader("Accept-Header", length.ToString());
response.OutputStream.Write(buffer, 0, length);
response.End();

[vb]

Dim ms As System.IO.MemoryStream = New System.IO.MemoryStream()

report.Publish(ms, Siberix.Report.FileFormat.PDF)

Dim buffer As Byte() = ms.ToArray()
Dim length As Integer = buffer.Length

Dim context As System.Web.HttpContext = System.Web.HttpContext.Current
Dim response As System.Web.HttpResponse = context.Response
response.Clear()
response.ContentType = "application/pdf"
response.AddHeader("Content-Length", length.ToString())
response.AddHeader("Accept-Ranges", "bytes")
response.AddHeader("Accept-Header", length.ToString())
response.OutputStream.Write(buffer, 0, length)
response.End()

2. Streaming into the "Response" with the "inline" attribute

[c#]

Response.Clear();
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "inline; filename=Document.pdf");
report.Publish(Response.OutputStream, Siberix.Report.FileFormat.PDF);
Response.End();

[vb]

Response.Clear()
Response.ContentType = "application/pdf"
Response.AddHeader("content-disposition", "inline; filename=Document.pdf")
report.Publish(Response.OutputStream, Siberix.Report.FileFormat.PDF)
Response.End()

3. Streaming into the "Response" with the "attachment" attribute

[c#]

Response.Clear();
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment; filename=Document.pdf");
report.Publish(Response.OutputStream, Siberix.Report.FileFormat.PDF);
Response.End();

[vb]

Response.Clear()
Response.ContentType = "application/pdf"
Response.AddHeader("content-disposition", "attachment; filename=Document.pdf")
report.Publish(Response.OutputStream, Siberix.Report.FileFormat.PDF)
Response.End()

4. Saving to the server and redirecting to some HTML page with the link to the generated PDF document

[c#]

System.IO.FileStream stream = new System.IO.FileStream(Server.MapPath("Document.pdf"), System.IO.FileMode.Create, System.IO.FileAccess.Write);
report.Publish(stream, Siberix.Report.FileFormat.PDF);
stream.Close();

Response.Redirect("link.html");
or
Response.Clear();
Response.Output.Write("<a href=\"Document.pdf\">PDF</a>");
Response.End();

[vb]

Dim stream As System.IO.FileStream = New System.IO.FileStream(Server.MapPath("Document.pdf"), System.IO.FileMode.Create, System.IO.FileAccess.Write)
report.Publish(stream, Siberix.Report.FileFormat.PDF)
stream.Close()

Response.Redirect("link.html")
or
Response.Clear()
Response.Output.Write("<a href=""Document.pdf"">PDF</a>")
Response.End()
Q. What are the known limitations of the product?
A. Siberix Report Writer doesn't provide any methods to:

1. Open, modify, merge, split, fill forms or print existing PDF documents.
2. Convert Word, Excel or PowerPoint files into PDF documents.
3. Save reports in Word, Excel or PowerPoint formats.
4. Process EMF, EMF+, SVG or DXF images.
Q. Does Siberix Report Writer support XSL-FO?
A. No, Siberix Report Writer doesn't support XSL-FO. There are a lot of similarities between these two standards in fields of object design and layout composition. In spite of the fact that XSL-FO is extremely powerful standard it is at the same time very complicated and hard to understand. On the other hand, Siberix Report Writer provides a very convenient way to build reports with API calls or from XML files and allows to get started with the development immediately.
Q. How to embed a PDF document within an HTML page?
A. You can use the <EMBED> tag to embed PDF files within your HTML pages:

<EMBED src="Document.pdf" width="500" height="500"></EMBED>

For Netscape Navigator users also add the "href" attribute:

<EMBED src="Document.pdf" href="Document.pdf" width="500" height="500"></EMBED>
Q. How can I specify the name of the PDF document in ASP.NET?
A. You may use the "attachment" attribute. This will open the PDF document in a separate window:

Response.AddHeader("content-disposition", "attachment; filename=Document.pdf");

Another way is to use the last part of the URL as a name for the document:

http://www.myServer.com/pdf.aspx?filename=/Document.pdf
Q. Is it possible to show a PDF document starting at a particular page?
A. Yes, you may pass a page number in the "page" parameter. See the line below:

http://www.myServer.com/myFolder/myDocument.pdf#page=5
Q. How can I assign the permissions to some folder in ASP.NET?
A. Usually, it is just enough to use the "ASPNET" account. However, you may set the permissions using the following steps:

1. Select the folder
2. Select "Properties" (Right click)
3. Select "Security" tab
4. Select "Add"
5. Select "Advanced"
6. Click "Find Now"
7. Select "ASPNET" account and add it to the list
8. Set the required permissions for that account
Q. Is Siberix Report Writer 100% managed?
A. Siberix Report Writer is written in 100% pure C# without any "tricks" and "hooks". There are only a few native calls to retrieve font data and one unsafe part to speedup image processing. The rest of the product is 100% managed C#.

[DllImport("user32.dll")]
private static extern Int32 GetDC(Int32 hWnd);
[DllImport("user32.dll")]
private static extern Int32 ReleaseDC(Int32 hWnd, Int32 hDC);
[DllImport("gdi32.dll")]
private static extern Int32 SelectObject(Int32 hDC, Int32 hGDIObj);
[DllImport("gdi32.dll")]
private static extern Int32 DeleteObject(Int32 hGDIObj);
[DllImport("gdi32.dll")]
private static extern Int32 GetFontData(Int32 hDC, int table, int offset, [In, Out] byte[] buffer, int length);

BitmapData bmd = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
bmp.UnlockBits(bmd);
Q. Is strong-named Siberix.ReportWriter.dll supposed to reside in the GAC?
A. We believe that you have to explicitly register Siberix.ReportWriter.dll (gacutil -i Siberix.ReportWriter.dll) to store it in the Global Assembly Cache (GAC).
Q. How to run the Acrobat Reader from my application?
A. You may simply run the Acrobat Reader and open some PDF document in it with the following lines:

using System.Diagnostics;

Process process = new Process();
ProcessStartInfo info = new ProcessStartInfo("Document.pdf");
process.StartInfo = info;
process.Start();
Q. How to disable dynamic IIS compression at a page level?
A. You may use the following command line:

cscript C:\Inetpub\AdminScripts\adsutil.vbs set W3SVC/{siteID}/Root/{subfolder}{page.asp}/DoDynamicCompression False
Q. How to embed a multy-page TIFF image?
A. You may use the following lines:

[c#]

System.Drawing.Image tiff = System.Drawing.Image.FromFile("../../image.tiff");
System.Drawing.Imaging.FrameDimension dimension = new System.Drawing.Imaging.FrameDimension(tiff.FrameDimensionsList[0]);

int i = 0;
int cnt = tiff.GetFrameCount(dimension);

while (i < cnt)
{
     tiff.SelectActiveFrame(dimension, i);

     Siberix.Graphics.Image img = new Siberix.Graphics.Image(tiff);
     img.Preferences.Converter = Siberix.Graphics.Image.Converters.BW;
     img.Preferences.Compressor = Siberix.Graphics.Image.Compressors.CCITT;

     Siberix.Report.IImage image = section.AddImage(img);
     image.Width = new Siberix.Report.RelativeWidth(100);

     i++;
}

[vb]

Dim tiff As System.Drawing.Image = System.Drawing.Image.FromFile("../../image.tiff")
Dim dimension As System.Drawing.Imaging.FrameDimension = New System.Drawing.Imaging.FrameDimension(tiff.FrameDimensionsList(0))

Dim i As Integer = 0
Dim cnt As Integer = tiff.GetFrameCount(dimension)

While i < cnt

     tiff.SelectActiveFrame(dimension, i)

     Dim img As Siberix.Graphics.Image = New Siberix.Graphics.Image(tiff)
     img.Preferences.Converter = Siberix.Graphics.Image.Converters.BW
     img.Preferences.Compressor = Siberix.Graphics.Image.Compressors.CCITT

     Dim image As Siberix.Report.IImage = section.AddImage(img)
     image.Width = New Siberix.Report.RelativeWidth(100)

     i += 1

End While
Q. How to publish every page of the report individually?
A. You may use the following lines:

[c#]

Siberix.Report.Projection.IPageCollection pages = report.Generate();

int i = 1;

foreach (Siberix.Report.Projection.IPage page in pages)
{
     Siberix.PDF.Document pdfDocument = new Siberix.PDF.Document();
     Siberix.PDF.IPage pdfPage = pdfDocument.AddPage(page.Width, page.Height);
     page.Draw(pdfPage.Graphics);
     pdfPage.Graphics.Flush();
     pdfDocument.Generate("Document" + i.ToString() + ".pdf");
     i++;
}

[vb]

Dim pages As Siberix.Report.Projection.IPageCollection = report.Generate()

Dim i As Integer = 1

For Each page As Siberix.Report.Projection.IPage In pages

     Dim pdfDocument As Siberix.PDF.Document = New Siberix.PDF.Document()
     Dim pdfPage As Siberix.PDF.IPage = pdfDocument.AddPage(page.Width, page.Height)
     page.Draw(pdfPage.Graphics)
     pdfPage.Graphics.Flush()
     pdfDocument.Generate("Document" + i.ToString() + ".pdf")
     i += 1

Next
Q. How to publish a report from a command line?
A. You may use the following lines:

[c#]

static void Main(string[] args)
{
     if (args.Length == 2)
     {
         string src = args[0];
         string dst = args[1];
         string format = dst.Substring(dst.LastIndexOf(".") + 1, 3).ToUpper();

         Siberix.Report.Report report = new Siberix.Report.Report();

         report.Load(src);

         if (format == "PDF")
             report.Publish(dst, Siberix.Report.FileFormat.PDF);
         else
             report.Publish(dst, Siberix.Report.FileFormat.XPS);

         System.Console.Out.WriteLine();
         System.Console.Out.WriteLine("Siberix Report Writer. Version 8.0");
         System.Console.Out.WriteLine("Generation succeeded.");
         System.Console.Out.WriteLine();
     }
     else
     {
         System.Console.Out.WriteLine();
         System.Console.Out.WriteLine("Siberix Report Writer. Version 8.0");
         System.Console.Out.WriteLine();
         System.Console.Out.WriteLine("Example.exe input output");
         System.Console.Out.WriteLine();
         System.Console.Out.WriteLine(" input - specifies the name of the input XML file.");
         System.Console.Out.WriteLine(" output - specifies the name of the output file.");
         System.Console.Out.WriteLine();
     }
}

[vb]

Sub Main(ByVal args As String())

     If args.Length = 2 Then

         Dim src As String = args(0)
         Dim dst As String = args(1)
         Dim format As String = dst.Substring(dst.LastIndexOf(".") + 1, 3).ToUpper()

         Dim report As Siberix.Report.Report = New Siberix.Report.Report()

         report.Load(src)

         If format = "PDF" Then
             report.Publish(dst, Siberix.Report.FileFormat.PDF)
         Else
             report.Publish(dst, Siberix.Report.FileFormat.XPS)
         End If

         System.Console.Out.WriteLine()
         System.Console.Out.WriteLine("Siberix Report Writer. Version 8.0")
         System.Console.Out.WriteLine("Generation succeeded.")
         System.Console.Out.WriteLine()

     Else

         System.Console.Out.WriteLine()
         System.Console.Out.WriteLine("Siberix Report Writer. Version 8.0")
         System.Console.Out.WriteLine()
         System.Console.Out.WriteLine("Example.exe input output")
         System.Console.Out.WriteLine()
         System.Console.Out.WriteLine(" input - specifies the name of the input XML file.")
         System.Console.Out.WriteLine(" output - specifies the name of the output file.")
         System.Console.Out.WriteLine()

     End If

End Sub
Support
This service is available for both pre-sale customers and current subscribers with maintenance. We try to process any requests within 24 hours. If you have questions about licensing, integration, layout composition or want to report a bug, please do not hesitate to contact us, so we could assist you with the problem.

Please submit your questions by email to info@siberix.com
Academic Pricing
If you are qualified student, faculty member, staff member, or an accredited institution within the United States or Canada you are eligible for a 50% discount.
Small Business Support
If you are a small business company you are eligible for a major discount. Just contact our sales department, describe your company and your project and we'll find a way to provide you with the solution for the price you can afford.
Upgrade Policy
As a registered customer, you are entitled to obtain free upgrades during 6 months from the date of purchase. If you purchased the software more than 6 months ago, you are no longer entitled to obtain free upgrades. However, you can purchase an upgrade to the latest version at a greatly discounted price, and this will allow you to get free upgrades for another 6 months.
Return Policy
Siberix Technologies offers free evaluation versions of the products. Therefore, it is assumed that you have reviewed the software and are completely satisfied with its quality before effecting actual purchase. If you have not tried our free downloadable evaluation versions, please do so before purchasing the product. With knowledge of the above, no return request should be solicited by you on such basis. Our products are not refundable.
Copyright
You have our permission to print and use copies of the documents at this web site such as FAQ, User's guide, License agreement provided that:
  • All of the copyright notices appearing on such documents are included on all your copies.
  • If a document does not contain the Siberix Technologies copyright notice, then you will put the notice appearing below on your copy of the document.
  • Your use of such information is limited to personal use, informational, non-commercial purposes, and documents may not be modified or altered in any way.
Except as expressly provided herein, you may not use, download, upload, copy, print, display, perform, reproduce, publish, license, post, broadcast on any network or media, transmit or distribute any information from this web site in whole or in part without the prior written permission of Siberix Technologies.
Disclaimer
Siberix Technologies does not give any warranty or other assurance as to the operation, quality or functionality of this web site. Access to the site may be interrupted, restricted or delayed for any reason.

Siberix Technologies also does not give any warranty or other assurance as to the content of the material appearing on the site, its accuracy, completeness, timelessness or fitness for any particular purpose.

To the full extent permissible by law, Siberix Technologies disclaims all responsibility for any damages or losses (including, without limitation, financial loss, damages for loss in business projects, loss of profits or other consequential losses) arising in contract, tort or otherwise from the use of or inability to use this web site or any material appearing on it, or from any action or decision taken as a result of using this site or any such material. Siberix Technologies disclaims all responsibility and liability (including for negligence) in relation to information on or accessible from this web site.