Tuesday, 05 April 2011 07:42
PDF Graphics Transparency in C#, VB.NET
using System;
using System.Drawing;
using Spire.Pdf;
using Spire.Pdf.Graphics;
namespace Transparency
{
class Program
{
static void Main(string[] args)
{
//Create a pdf document.
PdfDocument doc = new PdfDocument();
// Create one section
PdfSection section = doc.Sections.Add();
//Load image
PdfImage image = PdfImage.FromFile("SalesReportChart.png");
float imageWidth = image.PhysicalDimension.Width / 2;
float imageHeight = image.PhysicalDimension.Height / 2;
foreach (PdfBlendMode mode in Enum.GetValues(typeof(PdfBlendMode)))
{
PdfPageBase page = section.Pages.Add();
float pageWidth = page.Canvas.ClientSize.Width;
float y = 0;
//title
y = y + 5;
PdfBrush brush = new PdfSolidBrush(Color.OrangeRed);
PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial", 12f, FontStyle.Bold));
PdfStringFormat format = new PdfStringFormat(PdfTextAlignment.Center);
String text = String.Format("Transparency Blend Mode: {0}", mode);
page.Canvas.DrawString(text, font, brush, pageWidth / 2, y, format);
SizeF size = font.MeasureString(text, format);
y = y + size.Height + 6;
page.Canvas.DrawImage(image, 0, y, imageWidth, imageHeight);
page.Canvas.Save();
float d = (page.Canvas.ClientSize.Width - imageWidth) / 5;
float x = d;
y = y + d / 2;
for (int i = 0; i < 5; i++)
{
float alpha = 1.0f / 6 * (5 - i);
page.Canvas.SetTransparency(alpha, alpha, mode);
page.Canvas.DrawImage(image, x, y, imageWidth, imageHeight);
x = x + d;
y = y + d / 2;
}
page.Canvas.Restore();
}
//Save pdf file.
doc.SaveToFile("Transparency.pdf");
doc.Close();
//Launching the Pdf file.
System.Diagnostics.Process.Start("Transparency.pdf");
}
}
}
Imports System.Drawing
Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Namespace Transparency
Friend Class Program
Shared Sub Main(ByVal args() As String)
'Create a pdf document.
Dim doc As New PdfDocument()
' Create one section
Dim section As PdfSection = doc.Sections.Add()
'Load image
Dim image As PdfImage = PdfImage.FromFile("SalesReportChart.png")
Dim imageWidth As Single = image.PhysicalDimension.Width \ 2
Dim imageHeight As Single = image.PhysicalDimension.Height \ 2
For Each mode As PdfBlendMode In System.Enum.GetValues(GetType(PdfBlendMode))
Dim page As PdfPageBase = section.Pages.Add()
Dim pageWidth As Single = page.Canvas.ClientSize.Width
Dim y As Single = 0
'title
y = y + 5
Dim brush As PdfBrush = New PdfSolidBrush(Color.OrangeRed)
Dim font As New PdfTrueTypeFont(New Font("Arial", 12.0F, FontStyle.Bold))
Dim format As New PdfStringFormat(PdfTextAlignment.Center)
Dim text As String = String.Format("Transparency Blend Mode: {0}", mode)
page.Canvas.DrawString(text, font, brush, pageWidth / 2, y, format)
Dim size As SizeF = font.MeasureString(text, format)
y = y + size.Height + 6
page.Canvas.DrawImage(image, 0, y, imageWidth, imageHeight)
page.Canvas.Save()
Dim d As Single = (page.Canvas.ClientSize.Width - imageWidth) / 5
Dim x As Single = d
y = y + d / 2
For i As Integer = 0 To 4
Dim alpha As Single = 1.0F / 6 * (5 - i)
page.Canvas.SetTransparency(alpha, alpha, mode)
page.Canvas.DrawImage(image, x, y, imageWidth, imageHeight)
x = x + d
y = y + d / 2
Next i
page.Canvas.Restore()
Next mode
'Save pdf file.
doc.SaveToFile("Transparency.pdf")
doc.Close()
'Launching the Pdf file.
Process.Start("Transparency.pdf")
End Sub
End Class
End Namespace
Published in
Drawing
Tuesday, 05 April 2011 07:21
PDF DrawImage in C#, VB.NET
using System;
using System.Drawing;
using Spire.Pdf;
using Spire.Pdf.Graphics;
namespace DrawImage
{
class Program
{
static void Main(string[] args)
{
//Create a pdf document.
PdfDocument doc = new PdfDocument();
// Create one page
PdfPageBase page = doc.Pages.Add();
TransformText(page);
DrawImage(page);
TransformImage(page);
//Save pdf file.
doc.SaveToFile("DrawImage.pdf");
doc.Close();
//Launching the Pdf file.
System.Diagnostics.Process.Start("DrawImage.pdf");
}
private static void TransformImage(PdfPageBase page)
{
//save graphics state
PdfGraphicsState state = page.Canvas.Save();
//Draw the text - transform
PdfFont font = new PdfFont(PdfFontFamily.Helvetica, 18f);
PdfSolidBrush brush1 = new PdfSolidBrush(Color.Blue);
PdfSolidBrush brush2 = new PdfSolidBrush(Color.CadetBlue);
PdfStringFormat format = new PdfStringFormat(PdfTextAlignment.Center);
page.Canvas.TranslateTransform(page.Canvas.ClientSize.Width / 2, 20);
page.Canvas.DrawString("Sales Report Chart", font, brush1, 0, 0, format);
page.Canvas.ScaleTransform(1f, -0.8f);
page.Canvas.DrawString("Sales Report Chart", font, brush2, 0, -2 * 18 * 1.2f, format);
//restor graphics
page.Canvas.Restore(state);
}
private static void DrawImage(PdfPageBase page)
{
PdfImage image = PdfImage.FromFile(@"SalesReportChart.png");
float width = image.Width * 0.75f;
float height = image.Height * 0.75f;
float x = (page.Canvas.ClientSize.Width - width) / 2;
page.Canvas.DrawImage(image, x, 60, width, height);
}
private static void TransformText(PdfPageBase page)
{
PdfImage image = PdfImage.FromFile(@"SalesReportChart.png");
int skewX = 20;
int skewY = 20;
float scaleX = 0.2f;
float scaleY = 0.6f;
int width = (int)((image.Width + image.Height * Math.Tan(Math.PI * skewX / 180)) * scaleX);
int height = (int)((image.Height + image.Width * Math.Tan(Math.PI * skewY / 180)) * scaleY);
PdfTemplate template = new PdfTemplate(width, height);
template.Graphics.ScaleTransform(scaleX, scaleY);
template.Graphics.SkewTransform(skewX, skewY);
template.Graphics.DrawImage(image, 0, 0);
//save graphics state
PdfGraphicsState state = page.Canvas.Save();
page.Canvas.TranslateTransform(page.Canvas.ClientSize.Width - 50, 260);
float offset = (page.Canvas.ClientSize.Width - 100) / 12;
for (int i = 0; i < 12; i++)
{
page.Canvas.TranslateTransform(-offset, 0);
page.Canvas.SetTransparency(i / 12.0f);
page.Canvas.DrawTemplate(template, new PointF(0, 0));
}
//restor graphics
page.Canvas.Restore(state);
}
}
}
Imports System.Drawing
Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Namespace DrawImage
Friend Class Program
Shared Sub Main(ByVal args() As String)
'Create a pdf document.
Dim doc As New PdfDocument()
' Create one page
Dim page As PdfPageBase = doc.Pages.Add()
TransformText(page)
DrawImage(page)
TransformImage(page)
'Save pdf file.
doc.SaveToFile("DrawImage.pdf")
doc.Close()
'Launching the Pdf file.
Process.Start("DrawImage.pdf")
End Sub
Private Shared Sub TransformImage(ByVal page As PdfPageBase)
'save graphics state
Dim state As PdfGraphicsState = page.Canvas.Save()
'Draw the text - transform
Dim font As New PdfFont(PdfFontFamily.Helvetica, 18.0F)
Dim brush1 As New PdfSolidBrush(Color.Blue)
Dim brush2 As New PdfSolidBrush(Color.CadetBlue)
Dim format As New PdfStringFormat(PdfTextAlignment.Center)
page.Canvas.TranslateTransform(page.Canvas.ClientSize.Width \ 2, 20)
page.Canvas.DrawString("Sales Report Chart", font, brush1, 0, 0, format)
page.Canvas.ScaleTransform(1.0F, -0.8F)
page.Canvas.DrawString("Sales Report Chart", font, brush2, 0, -2 * 18 * 1.2F, format)
'restor graphics
page.Canvas.Restore(state)
End Sub
Private Shared Sub DrawImage(ByVal page As PdfPageBase)
Dim image As PdfImage = PdfImage.FromFile("SalesReportChart.png")
Dim width As Single = image.Width * 0.75F
Dim height As Single = image.Height * 0.75F
Dim x As Single = (page.Canvas.ClientSize.Width - width) / 2
page.Canvas.DrawImage(image, x, 60, width, height)
End Sub
Private Shared Sub TransformText(ByVal page As PdfPageBase)
Dim image As PdfImage = PdfImage.FromFile("SalesReportChart.png")
Dim skewX As Integer = 20
Dim skewY As Integer = 20
Dim scaleX As Single = 0.2F
Dim scaleY As Single = 0.6F
Dim width As Integer = CInt(Fix((image.Width + image.Height * Math.Tan(Math.PI * skewX \ 180)) * scaleX))
Dim height As Integer = CInt(Fix((image.Height + image.Width * Math.Tan(Math.PI * skewY \ 180)) * scaleY))
Dim template As New PdfTemplate(width, height)
template.Graphics.ScaleTransform(scaleX, scaleY)
template.Graphics.SkewTransform(skewX, skewY)
template.Graphics.DrawImage(image, 0, 0)
'save graphics state
Dim state As PdfGraphicsState = page.Canvas.Save()
page.Canvas.TranslateTransform(page.Canvas.ClientSize.Width - 50, 260)
Dim offset As Single = (page.Canvas.ClientSize.Width - 100) / 12
For i As Integer = 0 To 11
page.Canvas.TranslateTransform(-offset, 0)
page.Canvas.SetTransparency(i / 12.0F)
page.Canvas.DrawTemplate(template, New PointF(0, 0))
Next i
'restor graphics
page.Canvas.Restore(state)
End Sub
End Class
End Namespace
Published in
Drawing

