PdfDocumentProcessor.CreateEmptyDocument(String, PdfSaveOptions) Method
Creates an empty PDF document with no pages using the file path and PDF save options (containing encryption settings and a signature) that will be applied to the document when it is saved.
Namespace: DevExpress.Pdf
Assembly: DevExpress.Docs.v24.2.dll
NuGet Package: DevExpress.Document.Processor
#Declaration
public void CreateEmptyDocument(
string path,
PdfSaveOptions saveOptions
)
#Parameters
Name | Type | Description |
---|---|---|
path | String | A string that is the full path to the PDF document file. |
save |
Pdf |
A Pdf |
#Remarks
Use this method to create an empty document. The document is created using the file path and PDF save options represented by the PdfSaveOptions object. The PDF save options will be applied to the document when it is saved. Using the PDF save options, you can access the encryption options (the PdfSaveOptions.EncryptionOptions property) to protect an empty document with a password and permissions. You can also sign a document using the PdfSaveOptions.Signature property.
Then, you can continue to generate the document layout (e.g., append pages with graphics to the PDF document, generate bookmarks, and attach files) using the PDF document creation API. For more information, see the Additional Content topic.
This method allows you to decrease memory consumption when merging is performed especially for large documents. This is achieved by saving merge result directly on a local disk. So, the whole document content is not kept in memory during the merging process.
Note
When all operations with a document created using the overloaded Create
The PDF specification does not describe empty documents. For this reason, most third-party PDF viewers cannot open such files. This does not apply to the DevExpress WinForms PDF Viewer and WPF PDF Viewer, which are less demanding concerning the validity of opened documents, and are capable of opening documents containing no pages.
#Example
This example shows the PDF Document Creation API that is used to programmatically generate a document layout.
- The custom
DrawGraphics
method draws content inside an empty PDF document. - The custom
AddWatermark
method generates a watermark with custom text and adds it to the created PDF document.
When you launch the app, the file is saved to your Documents folder (%userprofile%/Documents
).
using DevExpress.Drawing;
using DevExpress.Pdf;
using System;
using System.Diagnostics;
using System.Drawing;
using System.IO;
namespace DocumentCreationAPI {
class Program {
static void Main(string[] args) {
string docPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),"Result.pdf");
using (PdfDocumentProcessor processor = new PdfDocumentProcessor()) {
// Create an empty document.
processor.CreateEmptyDocument(docPath);
// Create and draw PDF graphics.
using (PdfGraphics graph = processor.CreateGraphics()) {
DrawGraphics(graph);
// Render a page with graphics.
processor.RenderNewPage(PdfPaperSize.Letter, graph);
}
}
// Generate a watermark.
AddWatermark("Not for sale",docPath,docPath);
Process.Start(docPath);
}
// Draw graphics inside a PDF document.
static void DrawGraphics(PdfGraphics graph) {
// Draw text lines on the page.
DXSolidBrush black = (DXSolidBrush)DXBrushes.Black;
DXFont font1 = new DXFont("Times New Roman", 32, DXFontStyle.Bold);
graph.DrawString("PDF Document Processor", font1, black, 180, 150);
DXFont font2 = new DXFont("Arial", 20);
graph.DrawString("Display, Print and Export PDF Documents", font2, black, 168, 230);
DXFont font3 = new DXFont("Arial", 10);
graph.DrawString("The PDF Document Processor is a non-visual component " +
"that provides the application programming interface of the PDF Viewer.", font3, black, 16, 300);
}
// Add a watermark with custom text.
static void AddWatermark(string text,string fileName,string resultFileName) {
using (PdfDocumentProcessor documentProcessor = new PdfDocumentProcessor()) {
string fontName = "Arial Black";
int fontSize = 12;
PdfStringFormat stringFormat = PdfStringFormat.GenericTypographic;
stringFormat.Alignment = PdfStringAlignment.Center;
stringFormat.LineAlignment = PdfStringAlignment.Center;
documentProcessor.LoadDocument(fileName);
using (DXSolidBrush brush = new DXSolidBrush(Color.FromArgb(63,Color.Black))) {
DXFont font = new DXFont(fontName,fontSize);
foreach (var page in documentProcessor.Document.Pages) {
var watermarkSize = page.CropBox.Width * 0.75;
using (PdfGraphics graphics = documentProcessor.CreateGraphics()) {
SizeF stringSize = graphics.MeasureString(text,font);
float scale = (float)(watermarkSize / (double)stringSize.Width);
graphics.TranslateTransform((float)(page.CropBox.Width * 0.5),(float)(page.CropBox.Height * 0.5));
graphics.RotateTransform((float)-45.0);
graphics.TranslateTransform((float)(-stringSize.Width * scale * 0.5),(float)(-stringSize.Height * scale * 0.5));
DXFont actualFont = new DXFont(fontName,fontSize * scale);
RectangleF rect = new RectangleF(0,0,stringSize.Width * scale,stringSize.Height * scale);
graphics.DrawString(text,actualFont,brush,rect,stringFormat);
graphics.AddToPageForeground(page,72,72);
}
}
}
documentProcessor.SaveDocument(resultFileName);
}
}
}
}