Congratulations to all monthly winners of May 2013 !!! They have won INR 2900 cash and INR 27497 worth prize.
DotNetFunda.Com Logo
Twitter TwitterLinkedIn
YouTubeGoogle
 Online : 15937 |  Welcome, Guest!   Register  Login
 Home > Blogs > C# > Easily Set PDF View Preference with C#,VB.NET ...
Lacy

Easily Set PDF View Preference with C#,VB.NET

 Blog author: Lacy | Posted on: 6/4/2012 | Category: C# Blogs | Views: 944 | Status: [Member] | Points: 75 | Alert Moderator   
Ads

Preference belongs to everyone, almost everybody has preferences.  If you choose ten person and view the layout of their desktop, the result may make you feel it is amazing that all the desktops are different both in the backdrop and the position of content. What makes this? It is view preference.

Recently, I read a book, a research shows that the view preference of people in American differs from people in China, the view preference of American is "F", but the Chinese is "Column". Thus, satisfying the view preference of different people is significant. For software applications, providing the function of setting the view preference by people themselves gains great popularity. Of course, as to PDF creation component Spire.PDF users, viewing the PDF page according to their own like is rather easy. Please follow the below procedure.


Procedure

Step1. Create a new project .


1.Create a new project in Console Application in Visual Studio.

2.Set the Target framework to be .NET Framework 2 or above.

Step2. Add reference.

1.Add System Drawing and Spire.PDF Dll as references in Project at the top of the Visual Studio.

2.Add following using at the top of the method.

C#
using System.Drawing;
using Spire.Pdf;
using Spire.Pdf.Graphics;

VB.NET
Imports System.Drawing
Imports Spire.Pdf
Imports Spire.Pdf.Graphics

Step3. Set PDF view preference.

1.Create a new PDF Document.

C# Code:
            //Create a pdf document.
            PdfDocument doc = new PdfDocument();
            // Create one page
            PdfPageBase page = doc.Pages.Add();

VB.NET Code:
            'Create a pdf document.
            Dim doc As New PdfDocument()
            ' Create one page
            Dim page As PdfPageBase = doc.Pages.Add()
2. Draw the created page. 

In a first sight, you may find that this step is a little complicated, because the code is really long, but the fact is not like that. You can divide this step to be three: page header, title and content. If you have icon and reference content, you can set them, but not all PDF pages have an icon and reference content. If you have an existing PDF Document and want to set view preference, this step should be avoided.

C# Code:
private static void DrawPage(PdfPageBase page)
        {
            float pageWidth = page.Canvas.ClientSize.Width;
            float y = 0;
            //page header
            PdfPen pen1 = new PdfPen(Color.LightGray, 1f);
            PdfBrush brush1 = new PdfSolidBrush(Color.LightGray);
            PdfTrueTypeFont font1 = new PdfTrueTypeFont(new Font("Arial", 8f, FontStyle.Italic));
            PdfStringFormat format1 = new PdfStringFormat(PdfTextAlignment.Right);
            String text = "Demo of Spire.Pdf";
            page.Canvas.DrawString(text, font1, brush1, pageWidth, y, format1);
            SizeF size = font1.MeasureString(text, format1);
            y = y + size.Height + 1;
            page.Canvas.DrawLine(pen1, 0, y, pageWidth, y);
            //title
            y = y + 5;
            PdfBrush brush2 = new PdfSolidBrush(Color.Black);
            PdfTrueTypeFont font2 = new PdfTrueTypeFont(new Font("Arial", 16f, FontStyle.Bold));
            PdfStringFormat format2 = new PdfStringFormat(PdfTextAlignment.Center);
            format2.CharacterSpacing = 1f;
            text = "Summary of Science";
            page.Canvas.DrawString(text, font2, brush2, pageWidth / 2, y, format2);
            size = font2.MeasureString(text, format2);
            y = y + size.Height + 6;
            //icon
            PdfImage image = PdfImage.FromFile
            (@"C:\Program Files\e-iceblue\Spire.Pdf\Demos\Data\Wikipedia_Science.png");
            page.Canvas.DrawImage(image, new PointF(pageWidth - image.PhysicalDimension.Width, y));
            float imageLeftSpace = pageWidth - image.PhysicalDimension.Width - 2;
            float imageBottom = image.PhysicalDimension.Height + y;
            //refenrence content
            PdfTrueTypeFont font3 = new PdfTrueTypeFont(new Font("Arial", 9f));
            PdfStringFormat format3 = new PdfStringFormat();
            format3.ParagraphIndent = font3.Size * 2;
            format3.MeasureTrailingSpaces = true;
            format3.LineSpacing = font3.Size * 1.5f;
            String text1 = "(All text and picture from ";
            String text2 = "Wikipedia";
            String text3 = ", the free encyclopedia)";
            page.Canvas.DrawString(text1, font3, brush2, 0, y, format3);
            size = font3.MeasureString(text1, format3);
            float x1 = size.Width;
            format3.ParagraphIndent = 0;
            PdfTrueTypeFont font4 = new PdfTrueTypeFont(new Font("Arial", 9f, FontStyle.Underline));
            PdfBrush brush3 = PdfBrushes.Blue;
            page.Canvas.DrawString(text2, font4, brush3, x1, y, format3);
            size = font4.MeasureString(text2, format3);
            x1 = x1 + size.Width;
            page.Canvas.DrawString(text3, font3, brush2, x1, y, format3);
            y = y + size.Height;
            //content
            PdfStringFormat format4 = new PdfStringFormat();
            text = System.IO.File.ReadAllText
            (@"C:\Program Files\e-iceblue\Spire.Pdf\Demos\Data\Summary_of_Science.txt");
            PdfTrueTypeFont font5 = new PdfTrueTypeFont(new Font("Arial", 10f));
            format4.LineSpacing = font5.Size * 1.5f;
            PdfStringLayouter textLayouter = new PdfStringLayouter();
            float imageLeftBlockHeight = imageBottom - y;
            PdfStringLayoutResult result
             = textLayouter.Layout(text, font5, format4, new SizeF(imageLeftSpace, imageLeftBlockHeight));
            if (result.ActualSize.Height < imageBottom - y)
            {
                imageLeftBlockHeight = imageLeftBlockHeight + result.LineHeight;
                result = textLayouter.Layout(text, font5, format4, new SizeF(imageLeftSpace, imageLeftBlockHeight));
            }
            foreach (LineInfo line in result.Lines)
            {
                page.Canvas.DrawString(line.Text, font5, brush2, 0, y, format4);
                y = y + result.LineHeight;
            }
            PdfTextWidget textWidget = new PdfTextWidget(result.Remainder, font5, brush2);
            PdfTextLayout textLayout = new PdfTextLayout();
            textLayout.Break = PdfLayoutBreakType.FitPage;
            textLayout.Layout = PdfLayoutType.Paginate;
            RectangleF bounds = new RectangleF(new PointF(0, y), page.Canvas.ClientSize);
            textWidget.StringFormat = format4;
            textWidget.Draw(page, bounds, textLayout);
        }
VB.NET Code:

Private Shared Sub DrawPage(ByVal page As PdfPageBase)
            Dim pageWidth As Single = page.Canvas.ClientSize.Width
            Dim y As Single = 0
            'page header
            Dim pen1 As New PdfPen(Color.LightGray, 1.0F)
            Dim brush1 As PdfBrush = New PdfSolidBrush(Color.LightGray)
            Dim font1 As New PdfTrueTypeFont(New Font("Arial", 8.0F, FontStyle.Italic))
            Dim format1 As New PdfStringFormat(PdfTextAlignment.Right)
            Dim text As String = "Demo of Spire.Pdf"
            page.Canvas.DrawString(text, font1, brush1, pageWidth, y, format1)
            Dim size As SizeF = font1.MeasureString(text, format1)
            y = y + size.Height + 1
            page.Canvas.DrawLine(pen1, 0, y, pageWidth, y)
            'title
            y = y + 5
            Dim brush2 As PdfBrush = New PdfSolidBrush(Color.Black)
            Dim font2 As New PdfTrueTypeFont(New Font("Arial", 16.0F, FontStyle.Bold))
            Dim format2 As New PdfStringFormat(PdfTextAlignment.Center)
            format2.CharacterSpacing = 1.0F
            text = "Summary of Science"
            page.Canvas.DrawString(text, font2, brush2, pageWidth / 2, y, format2)
            size = font2.MeasureString(text, format2)
            y = y + size.Height + 6
            'icon
            Dim image As PdfImage = PdfImage.FromFile
            ("C:\Program Files\e-iceblue\Spire.Pdf\Demos\Data\Wikipedia_Science.png ")
            page.Canvas.DrawImage(image, New PointF(pageWidth - image.PhysicalDimension.Width, y))
            Dim imageLeftSpace As Single = pageWidth - image.PhysicalDimension.Width - 2
            Dim imageBottom As Single = image.PhysicalDimension.Height + y
            'refenrence content
            Dim font3 As New PdfTrueTypeFont(New Font("Arial", 9.0F))
            Dim format3 As New PdfStringFormat()
            format3.ParagraphIndent = font3.Size * 2
            format3.MeasureTrailingSpaces = True
            format3.LineSpacing = font3.Size * 1.5F
            Dim text1 As String = "(All text and picture from "
            Dim text2 As String = "Wikipedia"
            Dim text3 As String = ", the free encyclopedia)"
            page.Canvas.DrawString(text1, font3, brush2, 0, y, format3)
            size = font3.MeasureString(text1, format3)
            Dim x1 As Single = size.Width
            format3.ParagraphIndent = 0
            Dim font4 As New PdfTrueTypeFont(New Font("Arial", 9.0F, FontStyle.Underline))
            Dim brush3 As PdfBrush = PdfBrushes.Blue
            page.Canvas.DrawString(text2, font4, brush3, x1, y, format3)
            size = font4.MeasureString(text2, format3)
            x1 = x1 + size.Width
            page.Canvas.DrawString(text3, font3, brush2, x1, y, format3)
            y = y + size.Height
            'content
            Dim format4 As New PdfStringFormat()
            text = System.IO.File.ReadAllText
          ("C:\Program Files\e-iceblue\Spire.Pdf\Demos\Data\Summary_of_Science.txt ")
            Dim font5 As New PdfTrueTypeFont(New Font("Arial", 10.0F))
            format4.LineSpacing = font5.Size * 1.5F
            Dim textLayouter As New PdfStringLayouter()
            Dim imageLeftBlockHeight As Single = imageBottom - y
            Dim result As PdfStringLayoutResult _
                = textLayouter.Layout(text, font5, format4, New SizeF(imageLeftSpace, imageLeftBlockHeight))
            If result.ActualSize.Height < imageBottom - y Then
                imageLeftBlockHeight = imageLeftBlockHeight + result.LineHeight
                result = textLayouter.Layout(text, font5, format4, New SizeF(imageLeftSpace, imageLeftBlockHeight))
            End If
            For Each line As LineInfo In result.Lines
                page.Canvas.DrawString(line.Text, font5, brush2, 0, y, format4)
                y = y + result.LineHeight
            Next line
            Dim textWidget As New PdfTextWidget(result.Remainder, font5, brush2)
            Dim textLayout As New PdfTextLayout()
            textLayout.Break = PdfLayoutBreakType.FitPage
            textLayout.Layout = PdfLayoutType.Paginate
            Dim bounds As New RectangleF(New PointF(0, y), page.Canvas.ClientSize)
            textWidget.StringFormat = format4
            textWidget.Draw(page, bounds, textLayout)
        End Sub
3.Set PDF view preferences.

C# Code:
            //set view reference
            doc.ViewerPreferences.CenterWindow = true;
            doc.ViewerPreferences.DisplayTitle = false;
            doc.ViewerPreferences.FitWindow = false;
            doc.ViewerPreferences.HideMenubar = true;
            doc.ViewerPreferences.HideToolbar = true;
            doc.ViewerPreferences.PageLayout = PdfPageLayout.SinglePage;

VB.NET Code:
            'set view reference
            doc.ViewerPreferences.CenterWindow = True
            doc.ViewerPreferences.DisplayTitle = False
            doc.ViewerPreferences.FitWindow = False
            doc.ViewerPreferences.HideMenubar = True
            doc.ViewerPreferences.HideToolbar = True
            doc.ViewerPreferences.PageLayout = PdfPageLayout.SinglePage

Step4. Save the PDF file and launch it.

C# Code:
            //Save pdf file.
            doc.SaveToFile("ViewerPreference.pdf");
            doc.Close();
            //Launching the Pdf file.
            System.Diagnostics.Process.Start("ViewerPreference.pdf");

VB.NET Code:
            'Save pdf file.
            doc.SaveToFile("ViewerPreference.pdf")
            doc.Close()
            'Launching the Pdf file.
            Process.Start("ViewerPreference.pdf")

Preview

            


Code Source

Blog Source



Found interesting? Add this to:


About Keating Arly

Experience:1 year(s)
Home page:http://www.e-iceblue.com
Member since:Tuesday, March 27, 2012
Level:Starter
Status: [Member]
Biography:
>> Write Response - Respond to this post and get points

More Blogs

About Us | Contact Us | The Team | Advertise | Software Development | Write for us | Testimonials | Privacy Policy | Terms of Use | Link Exchange | Members | Go Top
General Notice: If you find plagiarised (copied) contents on this page, please let us know the original source along with your correct email id (to communicate) for further action.
Copyright © DotNetFunda.Com. All Rights Reserved. Copying or mimicking the site design and layout is prohibited. Logos, company names used here if any are only for reference purposes and they may be respective owner's right or trademarks. | 6/19/2013 6:44:06 PM