Back to Devexpress

PdfCreationOptions.Compatibility Property

officefileapi-devexpress-dot-pdf-dot-pdfcreationoptions-2b65503b.md

latest11.2 KB
Original Source

PdfCreationOptions.Compatibility Property

Gets or sets the compatibility mode of a document.

Namespace : DevExpress.Pdf

Assembly : DevExpress.Pdf.v25.2.Core.dll

NuGet Package : DevExpress.Pdf.Core

Declaration

csharp
public PdfCompatibility Compatibility { get; set; }
vb
Public Property Compatibility As PdfCompatibility

Property Value

TypeDescription
PdfCompatibility

A PdfCompatibility enumeration value that specifies the compatibility mode of a document.

|

Available values:

NameDescription
Pdf

The document supports the ISO 32000-1:2008 standard.

| | PdfA1b |

The document supports the ISO 19005-1:2005 standard.

| | PdfA2b |

The document supports the ISO 19005-2:2011 standard.

| | PdfA3b |

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

PDF/A requires widget annotations must have only one appearance. The following properties have no effect when a document is created with the Compatibility property set to PdfA1b, PdfA2b or PdfA3b:

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).

View Example

cs
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.CreateGraphicsWorldSystem()) {
                    DrawGraphics(graph);
                    // Render a page with graphics.
                    processor.RenderNewPage(PdfPaperSize.Letter, graph);
                }
            }
            // Generate a watermark.
            AddWatermark("Not for sale",docPath,docPath);
            Process.Start(new ProcessStartInfo(docPath) { UseShellExecute = true });
        }

        // 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, 140, 50);

            DXFont font2 = new DXFont("Arial", 20);
            graph.DrawString("Display, Print and Export PDF Documents", font2, black, 128, 120);

            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, 180);
        }

        // 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.CreateGraphicsPageSystem()) {
                            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);
                        }
                    }
                }
                documentProcessor.SaveDocument(resultFileName);
            }
        }
    }
}
vb
Imports DevExpress.Drawing
Imports DevExpress.Pdf
Imports System
Imports System.Diagnostics
Imports System.Drawing
Imports System.IO

Namespace DocumentCreationAPI

    Friend Class Program

        Shared Sub Main(ByVal args As String())

            Dim docPath As String = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "Result.pdf")

            Using processor As PdfDocumentProcessor = New PdfDocumentProcessor()
                ' Create an empty document.
                processor.CreateEmptyDocument(docPath)
                ' Create and draw PDF graphics.
                Using graph As PdfGraphics = processor.CreateGraphics()
                    DrawGraphics(graph)
                    ' Render a page with graphics.
                    processor.RenderNewPage(PdfPaperSize.Letter, graph)
                End Using
            End Using
            ' Generate a watermark.
            AddWatermark("Not for sale", docPath, docPath)
            Process.Start(New ProcessStartInfo(docPath) With {.UseShellExecute = True})
        End Sub

        ' Draw graphics inside a PDF document.
        Private Shared Sub DrawGraphics(ByVal graph As PdfGraphics)
            ' Draw text lines on the page.
            Dim black As DXSolidBrush = CType(DXBrushes.Black, DXSolidBrush)
            Dim font1 As DXFont = New DXFont("Times New Roman", 32, DXFontStyle.Bold)
            graph.DrawString("PDF Document Processor", font1, black, 140, 50)

            Dim font2 As DXFont = New DXFont("Arial", 20)
            graph.DrawString("Display, Print and Export PDF Documents", font2, black, 128, 120)

            Dim font3 As DXFont = 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, 180 )
        End Sub

        ' Add a watermark with custom text.
        Private Shared Sub AddWatermark(Text As String, fileName As String, resultFileName As String)
            Using documentProcessor As New PdfDocumentProcessor()
                Dim fontName As String = "Arial Black"
                Dim fontSize As Integer = 12
                Dim stringFormat As PdfStringFormat = PdfStringFormat.GenericTypographic
                stringFormat.Alignment = PdfStringAlignment.Center
                stringFormat.LineAlignment = PdfStringAlignment.Center
                documentProcessor.LoadDocument(fileName)
                Using brush As New SolidBrush(Color.FromArgb(63, Color.Black))
                    Using font As New Font(fontName, fontSize)
                        For Each page In documentProcessor.Document.Pages
                            Dim watermarkSize = page.CropBox.Width * 0.75
                            Using graphics As PdfGraphics = documentProcessor.CreateGraphicsPageSystem()
                                Dim stringSize As SizeF = graphics.MeasureString(Text, font)
                                Dim scale As Single = CSng(watermarkSize) / stringSize.Width
                                graphics.TranslateTransform(CSng(page.CropBox.Width * 0.5), CSng(page.CropBox.Height * 0.5))
                                graphics.RotateTransform(45.0)
                                graphics.TranslateTransform(CSng(-stringSize.Width * scale * 0.5), CSng(-stringSize.Height * scale * 0.5))
                                Using actualFont As Font = New Font(fontName, fontSize * scale)
                                    Dim rect As RectangleF = New RectangleF(0, 0, stringSize.Width * scale, stringSize.Height * scale)
                                    graphics.DrawString(Text, actualFont, brush, rect, stringFormat)
                                End Using
                                graphics.AddToPageForeground(page)
                            End Using
                        Next
                    End Using
                End Using
                documentProcessor.SaveDocument(resultFileName)
            End Using
        End Sub
    End Class
End Namespace

See Also

PdfCreationOptions Class

PdfCreationOptions Members

DevExpress.Pdf Namespace