Digitally Sign PDF with Timestamp Server in C#/VB.NET
Digital timestamps mark a PDF signature with the time and date as proof of integrity. A timestamp shows that the contents of the document existed at a point in time, and are unchanged. This article is going to introduce how to digitally sign a PDF document with a timestamp server by using Spire.PDF.
Code Snippets
using Spire.Pdf; using Spire.Pdf.Graphics; using Spire.Pdf.Security; using System.Drawing; namespace SignPDFwithTimestamp { class Program { static void Main(string[] args) { //create a PdfDocument object and load a PDF file PdfDocument doc = new PdfDocument(); doc.LoadFromFile(@"C:\Users\Administrator\Desktop\Example.pdf"); //load the certificate .pfx file PdfCertificate cert = new PdfCertificate(@"C:\Users\Administrator\Desktop\gary.pfx", "e-iceblue"); //add a signature to the specified position PdfSignature signature = new PdfSignature(doc, doc.Pages[0], cert, "signature"); signature.Bounds = new RectangleF(new PointF(350, 700), new SizeF(180, 90)); //set the signature content signature.NameLabel = "Digitally signed by:Gary"; signature.LocationInfoLabel = "Location:"; signature.LocationInfo = "CN"; signature.ReasonLabel = "Reason: "; signature.Reason = "Ensure authenticity"; signature.ContactInfoLabel = "Contact Number: "; signature.ContactInfo = "028-81705109"; signature.DocumentPermissions = PdfCertificationFlags.AllowFormFill | PdfCertificationFlags.ForbidChanges; signature.GraphicsMode = GraphicMode.SignImageAndSignDetail; signature.SignImageSource = PdfImage.FromFile(@"C:\Users\Administrator\Desktop\company-logo.jpg"); //configure a timestamp server string url = "http://timestamp.wosign.com/rfc3161"; signature.ConfigureTimestamp(url); //save to file doc.SaveToFile("output.pdf"); } } }
Imports Spire.Pdf Imports Spire.Pdf.Graphics Imports Spire.Pdf.Security Imports System.Drawing Namespace SignPDFwithTimestamp Class Program Private Shared Sub Main(args As String()) 'create a PdfDocument object and load a PDF file Dim doc As PdfDocument = New PdfDocument() doc.LoadFromFile("C:\Users\Administrator\Desktop\Example.pdf") 'load the certificate .pfx file Dim cert As PdfCertificate = New PdfCertificate("C:\Users\Administrator\Desktop\gary.pfx","e-iceblue") 'add a signature to the specified position Dim signature As PdfSignature = New PdfSignature(doc,doc.Pages(0),cert,"signature") signature.Bounds = New RectangleF(New PointF(350, 700), New SizeF(180, 90)) 'set the signature content signature.NameLabel = "Digitally signed by:Gary" signature.LocationInfoLabel = "Location:" signature.LocationInfo = "CN" signature.ReasonLabel = "Reason: " signature.Reason = "Ensure authenticity" signature.ContactInfoLabel = "Contact Number: " signature.ContactInfo = "028-81705109" signature.DocumentPermissions = PdfCertificationFlags.AllowFormFill | PdfCertificationFlags.ForbidChanges signature.GraphicsMode = GraphicMode.SignImageAndSignDetail signature.SignImageSource = PdfImage.FromFile("C:\Users\Administrator\Desktop\company-logo.jpg") 'configure a timestamp server Dim url As String = "http://timestamp.wosign.com/rfc3161" signature.ConfigureTimestamp(url) 'save to file doc.SaveToFile("output.pdf") End Sub End Class End Namespace
Output
Set the print settings of PowerPoint document in C#
PowerPoint print settings allow users to control how presentation slides are printed, such as print all slides, print some selected slides, print slides with frames or not, print many slides into one page, print order, print color and so on. This article will show you how to set print options when print PowerPoint documents in C#.
Firstly, view Microsoft PowerPoint's page print settings:
Code Snippets of set print settings of PowerPoint document by using PrinterSettings object to print the presentation slides:
static void Main(string[] args) { //load the sample document from file Presentation ppt = new Presentation(); ppt.LoadFromFile("Sample.pptx"); //use PrinterSettings object to print presentation slides PrinterSettings ps = new PrinterSettings(); ps.PrintRange = PrintRange.AllPages; ps.PrintToFile = true; ps.PrintFileName = ("Print.xps"); //print the slide with frame ppt.SlideFrameForPrint = true; //print the slide with Grayscale ppt.GrayLevelForPrint = true; //Print 4 slides horizontal ppt.SlideCountPerPageForPrint = PageSlideCount.Four; ppt.OrderForPrint = Order.Horizontal; ////only select some slides to print //ppt.SelectSlidesForPrint("1", "3"); //print the document ppt.Print(ps); }
Code Snippets of set print document name by using PrintDocument object to print presentation slides:
static void Main(string[] args) { //load the sample document from file Presentation ppt = new Presentation(); ppt.LoadFromFile("Sample.pptx"); //use PrintDocument object to print presentation slides PresentationPrintDocument document = new PresentationPrintDocument(ppt); //print document to virtual printer document.PrinterSettings.PrinterName = "Microsoft XPS Document Writer"; //print the slide with frame ppt.SlideFrameForPrint = true; //print 4 slides horizontal ppt.SlideCountPerPageForPrint = PageSlideCount.Four; ppt.OrderForPrint = Order.Horizontal; //print the slide with Grayscale ppt.GrayLevelForPrint = true; //set the print document name document.DocumentName = "Print Task"; document.PrinterSettings.PrintToFile = true; document.PrinterSettings.PrintFileName = ("Print.xps"); ppt.Print(document); }
C#/VB.NET: Convert PDF to PostScript (PS)
PostScript was developed by Adobe Systems in the 1980s as a way of turning digital graphics or text files into a fixed format ready for printing. With the passage time, although the PostScript (PS) file format is no longer as popular as it once was, now it is still supported by most printers. In this article, you will learn how to how to programmatically convert a PDF file to a PostScript (PS) file using Spire.PDF for .NET.
Install Spire.PDF for .NET
To begin with, you need to add the DLL files included in the Spire.PDF for.NET package as references in your .NET project. The DLL files can be either downloaded from this link or installed via NuGet.
PM> Install-Package Spire.PDF
Convert PDF to PostScript in C# and VB.NET
Converting PDF to PS can improve the quality of the printed output. With Spire.PDF for .NET, you can complete the conversion with only three lines of code. The following are the detailed steps.
- Create a PdfDocument instance.
- Load a sample PDF file using PdfDocument.LoadFromFile() method.
- Save the PDF file as a PS file using PdfDocument.SaveToFile(string filename, FileFormat.POSTSCRIPT) method.
- C#
- VB.NET
using Spire.Pdf; namespace PDFtoPS { class Program { static void Main(string[] args) { //Create a PdfDocument instance PdfDocument document = new PdfDocument(); //Load a sample PDF file document.LoadFromFile("Test.pdf"); //Save the PDF file as a PS file document.SaveToFile("toPostScript.ps", FileFormat.POSTSCRIPT); } } }
Apply for a Temporary License
If you'd like to remove the evaluation message from the generated documents, or to get rid of the function limitations, please request a 30-day trial license for yourself.
Convert PDF to PCL in C#/VB.NET
A PCL file is a Printer Command Language document. Printer Command Language is a page description language developed by HP as a printer protocol and has been widely supported in many printers now. Start from version 5.2.3, Spire.PDF supports converting PDF file to PCL format. There are six major levels of PCL, the PCL here refers to PCL 6 (PCL 6 Enhanced or PCL XL).
Example code
using Spire.Pdf; namespace PDFtoPCL { class Program { static void Main(string[] args) { //Create a PdfDocument instance PdfDocument pdf = new PdfDocument(); //Load the PDF file pdf.LoadFromFile("Input.pdf"); //Save to PCL format pdf.SaveToFile("ToPCL.pcl", FileFormat.PCL); } } }
Imports Spire.Pdf Namespace PDFtoPCL Class Program Private Shared Sub Main(args As String()) Dim pdf As PdfDocument = New PdfDocument() pdf.LoadFromFile("Input.pdf") pdf.SaveToFile("ToPCL.pcl", FileFormat.PCL) End Sub End Class End Namespace
Convert Word to PCL
PCL File is Digital printed document created in the Printer Command Language (more commonly referred to as PCL) page description language. From v7.1.19, Spire.Doc supports to convert word document to PCL. There are many kinds of standard for PCL document; the PCL here refers to PCL 6 (PCL 6 Enhanced or PCL XL). This article will show you how to save word document to PCL in C# and VB.NET by only three lines of codes.
using Spire.Doc; namespace DOCPCL { class Program { static void Main(string[] args) { //load the sample document Document doc = new Document(); doc.LoadFromFile("Sample.docx", FileFormat.Docx2010); //save the document as a PCL file doc.SaveToFile("Result.pcl", FileFormat.PCL); } } }
Imports Spire.Doc Namespace DOCPCL Class Program Private Shared Sub Main(args As String()) 'load the sample document Dim doc As New Document() doc.LoadFromFile("Sample.docx", FileFormat.Docx2010) 'save the document as a PCL file doc.SaveToFile("Result.pcl", FileFormat.PCL) End Sub End Class End Namespace
Modify and Apply Slide Masters in PowerPoint in Java
The slide master in PowerPoint preserves some fixed styles, such as background image, title and theme color, which can be inherited by other slides. This article demonstrates how to customize the slide masters in a PowerPoint file and apply them to different slides using Spire.Presentation for Java.
Apply One Slide Master in PowerPoint
import com.spire.presentation.*; import com.spire.presentation.drawing.BackgroundType; import com.spire.presentation.drawing.FillFormatType; import com.spire.presentation.drawing.IImageData; import com.spire.presentation.drawing.PictureFillType; import javax.imageio.ImageIO; import java.awt.*; import java.awt.geom.Rectangle2D; import java.awt.image.BufferedImage; import java.io.FileInputStream; public class ModifyAndApplySlideMaster { public static void main(String[] args) throws Exception { //create a Presentation object and specify the slide size Presentation presentation = new Presentation(); presentation.getSlideSize().setType(SlideSizeType.SCREEN_16_X_9); //get the first slide master IMasterSlide masterSlide = presentation.getMasters().get(0); //set the background image of the slide master String backgroundPic = "C:/Users/Administrator/Desktop/bg.jpg"; BufferedImage image = ImageIO.read(new FileInputStream(backgroundPic)); IImageData imageData = presentation.getImages().append(image); masterSlide.getSlideBackground().setType(BackgroundType.CUSTOM); masterSlide.getSlideBackground().getFill().setFillType(FillFormatType.PICTURE); masterSlide.getSlideBackground().getFill().getPictureFill().setFillType(PictureFillType.STRETCH); masterSlide.getSlideBackground().getFill().getPictureFill().getPicture().setEmbedImage(imageData); //add an image (company logo) to slide master String logo = "C:/Users/Administrator/Desktop/logo.png"; image = ImageIO.read(new FileInputStream(logo)); imageData = presentation.getImages().append(image); IEmbedImage imageShape = masterSlide.getShapes().appendEmbedImage(ShapeType.RECTANGLE,imageData,new Rectangle2D.Float(40,40,200,60)); imageShape.getLine().setFillType(FillFormatType.NONE); //add some text (company name) to slide master IAutoShape textShape = masterSlide.getShapes().appendShape(ShapeType.RECTANGLE, new Rectangle2D.Float((float) presentation.getSlideSize().getSize().getWidth()-200,(float) presentation.getSlideSize().getSize().getHeight()-60,200,30));//Shapes.AppendShape(ShapeType.Rectangle, new RectangleF(ppt.SlideSize.Size.Width-200, ppt.SlideSize.Size.Height-60, 200, 30)); textShape.getTextFrame().setText("Chengdu E-iceblue Co., Ltd."); textShape.getTextFrame().getTextRange().setFontHeight(15f); textShape.getTextFrame().getTextRange().getFill().setFillType(FillFormatType.SOLID); textShape.getTextFrame().getTextRange().getFill().getSolidColor().setColor(Color.blue); textShape.getTextFrame().getTextRange().getParagraph().setAlignment(TextAlignmentType.CENTER); textShape.getFill().setFillType(FillFormatType.NONE); textShape.getLine().setFillType(FillFormatType.NONE); //append a new slide presentation.getSlides().append(); //save to file presentation.saveToFile("ModifySlideMaster.pptx", FileFormat.PPTX_2013); presentation.dispose(); } }
Apply Multiple Slide Maters in PowerPoint
import com.spire.presentation.*; import com.spire.presentation.drawing.BackgroundType; import com.spire.presentation.drawing.FillFormatType; import com.spire.presentation.drawing.IImageData; import com.spire.presentation.drawing.PictureFillType; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.FileInputStream; public class CreateAndApplyMultiSlideMasters { public static void main(String[] args) throws Exception { //create a Presentation object and specify the slide size Presentation presentation = new Presentation(); presentation.getSlideSize().setType(SlideSizeType.SCREEN_16_X_9); //add four new slides to the presentation for (int i = 0; i < 4; i++) { presentation.getSlides().append(); } //get the first slide master IMasterSlide first_master = presentation.getMasters().get(0); //create another slide master based on the first one presentation.getMasters().appendSlide(first_master); IMasterSlide second_master = presentation.getMasters().get(1); //set different background images for the two masters String pic1 = "C:/Users/Administrator/Desktop/image1.png"; String pic2 = "C:/Users/Administrator/Desktop/image2.png"; BufferedImage image = ImageIO.read(new FileInputStream(pic1)); IImageData imageData = presentation.getImages().append(image); first_master.getSlideBackground().setType(BackgroundType.CUSTOM); first_master.getSlideBackground().getFill().setFillType(FillFormatType.PICTURE); first_master.getSlideBackground().getFill().getPictureFill().setFillType(PictureFillType.STRETCH); first_master.getSlideBackground().getFill().getPictureFill().getPicture().setEmbedImage(imageData); image = ImageIO.read(new FileInputStream(pic2)); imageData = presentation.getImages().append(image); second_master.getSlideBackground().setType(BackgroundType.CUSTOM); second_master.getSlideBackground().getFill().setFillType(FillFormatType.PICTURE); second_master.getSlideBackground().getFill().getPictureFill().setFillType(PictureFillType.STRETCH); second_master.getSlideBackground().getFill().getPictureFill().getPicture().setEmbedImage(imageData); //apply the first master along with the layout to the first slide presentation.getSlides().get(0).setLayout(first_master.getLayouts().get(6)); //apply the second master along with the layout to the rest slides for (int i = 1; i < presentation.getSlides().getCount(); i++) { presentation.getSlides().get(i).setLayout(second_master.getLayouts().get(6)); } //save to file presentation.saveToFile("ApplyMultiMasters.pptx", FileFormat.PPTX_2013); presentation.dispose(); } }
Shrink Text to Fit in a Cell in Excel in C#
Shrink to fit is a useful option in Excel, it enables us to automatically reduce the font size in a cell until the text fits within the cell. This article demonstrates how to accomplish the same functionality programmatically in C# using Spire.XLS.
Below is the screenshot of the input Excel file:
Detail steps:
Step 1: Instantiate a Workbook object and load the Excel file.
Workbook workbook = new Workbook(); workbook.LoadFromFile(@"Input.xlsx");
Step 2: Get the first worksheet.
Worksheet sheet = workbook.Worksheets[0];
Step 3: Specify the cell range to shrink text.
CellRange cell = sheet.Range["A1:E3"];
Step 4: Enable ShrinkToFit.
CellStyle style = cell.Style; style.ShrinkToFit = true;
Step 5: Save the file.
workbook.SaveToFile("ShrinkTextToFitCell.xlsx", ExcelVersion.Version2013);
Output:
Full code:
using Spire.Xls; namespace ShrinkText { class Program { static void Main(string[] args) { //Load the Excel file Workbook workbook = new Workbook(); workbook.LoadFromFile(@"Input.xlsx"); //Get the first worksheet Worksheet sheet = workbook.Worksheets[0]; //The cell range to shrink text CellRange cell = sheet.Range["A1:E3"]; //Enable ShrinkToFit CellStyle style = cell.Style; style.ShrinkToFit = true; //Save the file workbook.SaveToFile("ShrinkTextToFitCell.xlsx", ExcelVersion.Version2013); } } }
Create Spot Color in PDF in Java
This article will demonstrate how to create spot color to PDF file using Spire.PDF in Java.
import com.spire.pdf.*; import com.spire.pdf.colorspace.*; import com.spire.pdf.graphics.*; import java.awt.*; import java.awt.geom.Point2D; public class SpotColor { public static void main(String[] args) { //Create a PdfDocument instance PdfDocument pdf = new PdfDocument(); //Add a page PdfPageBase page = pdf.getPages().add(); //Define the spot color "MySpotColor" from the built-in color. PdfRGBColor pdfRGBColor = new PdfRGBColor(new Color(148,0,211)); PdfSeparationColorSpace cs = new PdfSeparationColorSpace("MySpotColor",pdfRGBColor); //Apply the spot color while drawing content on the page. PdfSeparationColor color = new PdfSeparationColor(cs, 1f); PdfSolidBrush brush = new PdfSolidBrush(color); page.getCanvas().drawString("Tint=1.0", new PdfFont(PdfFontFamily.Helvetica, 10f), brush, new Point2D.Float(160, 160)); //Draw pie with spot color(DarkViolet) page.getCanvas().drawPie(brush, 148, 200, 60, 60, 360, 360); page.getCanvas().drawString("Tint=0.7", new PdfFont(PdfFontFamily.Helvetica, 10f), brush, new Point2D.Float(230, 160)); color = new PdfSeparationColor(cs, 0.7f); brush = new PdfSolidBrush(color); page.getCanvas().drawPie(brush, 218, 200, 60, 60, 360, 360); page.getCanvas().drawString("Tint=0.4", new PdfFont(PdfFontFamily.Helvetica, 10f), brush, new Point2D.Float(300, 160)); color = new PdfSeparationColor(cs, 0.4f); brush = new PdfSolidBrush(color); page.getCanvas().drawPie(brush, 288, 200, 60, 60, 360, 360); page.getCanvas().drawString("Tint=0.1", new PdfFont(PdfFontFamily.Helvetica, 10f), brush, new Point2D.Float(370, 160)); color = new PdfSeparationColor(cs, 0.1f); brush = new PdfSolidBrush(color); page.getCanvas().drawPie(brush, 358, 200, 60, 60, 360, 360); //Save the document pdf.saveToFile("output/drawContentWithSpotColor.pdf"); } }
Effective screenshot after adding spot color in PDF in Java application:
Java: Convert PowerPoint Presentations to PDF
When a PowerPoint presentation is converted to PDF, its document layout and formatting are fixed. Recipients can view the converted document without having Microsoft PowerPoint to be installed, but they can not modify it easily. In this article, we will demonstrate how to convert PowerPoint presentations to PDF in Java using Spire.Presentation for Java library.
- Convert a Whole PowerPoint Presentation to PDF
- Convert Specific Slide of a PowerPoint Presentation to PDF
Install Spire.Presentation for Java
First of all, you're required to add the Spire.Presentation.jar file as a dependency in your Java program. The JAR file can be downloaded from this link. If you use Maven, you can easily import the JAR file in your application by adding the following code to your project's pom.xml file.
<repositories> <repository> <id>com.e-iceblue</id> <name>e-iceblue</name> <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url> </repository> </repositories> <dependencies> <dependency> <groupId>e-iceblue</groupId> <artifactId>spire.presentation</artifactId> <version>9.4.5</version> </dependency> </dependencies>
Convert a Whole PowerPoint Presentation to PDF in Java
The following steps show you how to convert a whole PowerPoint presentation to PDF:
- Initialize an instance of Presentation class.
- Load the PowerPoint presentation using Presentation.loadFromFile() method.
- Save it to PDF using Presentation.saveToFile(filePath, FileFormat.PDF) method.
- Java
import com.spire.presentation.FileFormat; import com.spire.presentation.ISlide; import com.spire.presentation.Presentation; public class ConvertPowerPointToPDF { public static void main(String []args) throws Exception { //Create a Presentation instance Presentation ppt = new Presentation(); //Load a PowerPoint presentation ppt.loadFromFile("Sample.pptx"); //Save it as PDF ppt.saveToFile("ToPdf1.pdf", FileFormat.PDF); } }
Convert Specific Slide of a PowerPoint Presentation to PDF in Java
The following steps show you how to convert a specific slide of a PowerPoint presentation to PDF:
- Initialize an instance of Presentation class.
- Load the PowerPoint presentation using Presentation.loadFromFile() method.
- Get the desired slide by its index using Presentation.getSlides().get(slideIndex) method.
- Save it to PDF using ISlide.saveToFile(filePath, FileFormat.PDF) method.
- Java
import com.spire.presentation.FileFormat; import com.spire.presentation.ISlide; import com.spire.presentation.Presentation; public class ConvertSlidesToPDF { public static void main(String []args) throws Exception { //Create a Presentation instance Presentation ppt = new Presentation(); //Load a PowerPoint presentation ppt.loadFromFile("Sample.pptx"); //Get the second slide ISlide slide= ppt.getSlides().get(1); //Save the slide to PDF slide.saveToFile("ToPdf2.pdf", FileFormat.PDF); } }
Apply for a Temporary License
If you'd like to remove the evaluation message from the generated documents, or to get rid of the function limitations, please request a 30-day trial license for yourself.
Set Table Row Height and Column Width in PowerPoint in Java
This article demonstrates how to set the row height and column width of an existing table in a PowerPoint document using Spire.Presentation for Java.
Below is the screenshot of the input PowerPoint document:
import com.spire.presentation.FileFormat; import com.spire.presentation.ISlide; import com.spire.presentation.ITable; import com.spire.presentation.Presentation; public class Table_Row_Height_and_Column_Width { public static void main(String[] args) throws Exception { //Load the PowerPoint document Presentation ppt = new Presentation(); ppt.loadFromFile("Table.pptx"); //Get the first slide ISlide slide = ppt.getSlides().get(0); //Get the first table in the slide ITable table = (ITable) slide.getShapes().get(0); //Change the height of the first table row and the width of the first table column table.getTableRows().get(0).setHeight(100); table.getColumnsList().get(0).setWidth(250); //Save the document ppt.saveToFile("Output.pptx", FileFormat.PPTX_2013); ppt.dispose(); } }
Output: