PdfCreationOptions.Compatibility Property
Gets or sets the compatibility mode of a document.
Namespace: DevExpress.Pdf
Assembly: DevExpress.Pdf.v24.2.Core.dll
NuGet Package: DevExpress.Pdf.Core
#Declaration
public PdfCompatibility Compatibility { get; set; }
#Property Value
Type | Description |
---|---|
Pdf |
A Pdf |
Available values:
Name | Description |
---|---|
The document supports the ISO 32000-1:2008 standard. |
|
Pdf |
The document supports the ISO 19005-1:2005 standard. |
Pdf |
The document supports the ISO 19005-2:2011 standard. |
Pdf |
The document supports the ISO 19005-3:2012 standard. |
#Remarks
The Compatibility property can return one of the following enumeration values: PdfA1b, PdfA2b, PdfA3b and Pdf.
PDF/A imposes the following restrictions:
- Non-embedded fonts are not supported;
- PDF/A-1b, and PDF/A-2b documents can’t contain file attachments;
- Encryption is forbidden;
- Transparency is forbidden in a PDF/A-1 document (all transparency information is ignored and exceptions are not raised).
Note
Since PDF/A requires widget annotations must have only one appearance, Pdf
#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);
}
}
}
}