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