VintaSoft Imaging .NET SDK 12.4: Documentation for .NET developer
In This Topic
    Codecs: How to set layout settings of DOCX document?
    In This Topic
    SDK allows to specify layout settings (page size, page padding, content scale) of DOCX document.
    Page layout settings can be specified for all pages, even and/or odd pages, pages specified by indices.

    Here is C#/VB.NET code that shows how to set layout settings of DOCX document:
    /// <summary>
    /// Class shows how to convert DOCX document to PDF document using specified layout settings.
    /// </summary>
    public class DocxConverter
    {
    
        /// <summary>
        /// Converts DOCX document to PDF document using specified layout settings.
        /// </summary>
        public static void ConvertDocxToPdf(string docxFileName, string pdfFileName)
        {
            // create image collection
            using (Vintasoft.Imaging.ImageCollection imageCollection = new Vintasoft.Imaging.ImageCollection())
            {
                // subscribe to the ImageCollection.LayoutSettingsRequest event
                imageCollection.LayoutSettingsRequest += ImageCollection_LayoutSettingsRequest;
    
                // add XLSX document to the image collection
                imageCollection.Add(docxFileName);
    
                // create PDF encoder that will create new PDF file
                using (Vintasoft.Imaging.Codecs.Encoders.PdfEncoder pdfEncoder =
                    new Vintasoft.Imaging.Codecs.Encoders.PdfEncoder(true))
                {
                    // save images of image collection to PDF document using PDF encoder
                    imageCollection.SaveSync(pdfFileName, pdfEncoder);
                }
    
                // dispose images
                imageCollection.ClearAndDisposeItems();
            }
        }
    
        /// <summary>
        /// Handles the LayoutSettingsRequest event of the ImageCollection object.
        /// </summary>
        private static void ImageCollection_LayoutSettingsRequest(object sender, Vintasoft.Imaging.DocumentLayoutSettingsRequestEventArgs e)
        {
            // if DOCX codec is used
            if (e.Codec.Name == "Docx")
            {
                // change layout settings of DOCX document
    
                Vintasoft.Imaging.Codecs.Decoders.DocumentLayoutSettings layoutSettings = e.LayoutSettings;
    
                // page size - A4
                Vintasoft.Imaging.ImageSize pageSize = Vintasoft.Imaging.ImageSize.FromPaperKind(Vintasoft.Imaging.PaperSizeKind.A4);
    
                // book stitch size - 20mm
                float stitchSize = (float)Vintasoft.Imaging.Utils.UnitOfMeasureConverter.ConvertToDeviceIndependentPixels(20, Vintasoft.Imaging.UnitOfMeasure.Millimeters);
    
                // set even page size to A4, padding from right - 20mm
                layoutSettings.EvenPageLayoutSettings = new Vintasoft.Imaging.Codecs.Decoders.PageLayoutSettings(pageSize);
                layoutSettings.EvenPageLayoutSettings.PagePadding = new Vintasoft.Imaging.PaddingF(0, 0, stitchSize, 0);
    
                // set odd page size to A4, padding from left - 20mm
                layoutSettings.OddPageLayoutSettings = new Vintasoft.Imaging.Codecs.Decoders.PageLayoutSettings(pageSize);
                layoutSettings.OddPageLayoutSettings.PagePadding = new Vintasoft.Imaging.PaddingF(stitchSize, 0, 0, 0);
            }
        }
    }
    
    ''' <summary>
    ''' Class shows how to convert DOCX document to PDF document using specified layout settings.
    ''' </summary>
    Public Class DocxConverter
    
        ''' <summary>
        ''' Converts DOCX document to PDF document using specified layout settings.
        ''' </summary>
        Public Shared Sub ConvertDocxToPdf(docxFileName As String, pdfFileName As String)
            ' create image collection
            Using imageCollection As New Vintasoft.Imaging.ImageCollection()
                ' subscribe to the ImageCollection.LayoutSettingsRequest event
                AddHandler imageCollection.LayoutSettingsRequest, AddressOf ImageCollection_LayoutSettingsRequest
    
                ' add XLSX document to the image collection
                imageCollection.Add(docxFileName)
    
                ' create PDF encoder that will create new PDF file
                Using pdfEncoder As New Vintasoft.Imaging.Codecs.Encoders.PdfEncoder(True)
                    ' save images of image collection to PDF document using PDF encoder
                    imageCollection.SaveSync(pdfFileName, pdfEncoder)
                End Using
    
                ' dispose images
                imageCollection.ClearAndDisposeItems()
            End Using
        End Sub
    
        ''' <summary>
        ''' Handles the LayoutSettingsRequest event of the ImageCollection object.
        ''' </summary>
        Private Shared Sub ImageCollection_LayoutSettingsRequest(sender As Object, e As Vintasoft.Imaging.DocumentLayoutSettingsRequestEventArgs)
            ' if DOCX codec is used
            If e.Codec.Name = "Docx" Then
                ' change layout settings of DOCX document
    
                Dim layoutSettings As Vintasoft.Imaging.Codecs.Decoders.DocumentLayoutSettings = e.LayoutSettings
    
                ' page size - A4
                Dim pageSize As Vintasoft.Imaging.ImageSize = Vintasoft.Imaging.ImageSize.FromPaperKind(Vintasoft.Imaging.PaperSizeKind.A4)
    
                ' book stitch size - 20mm
                Dim stitchSize As Single = CSng(Vintasoft.Imaging.Utils.UnitOfMeasureConverter.ConvertToDeviceIndependentPixels(20, Vintasoft.Imaging.UnitOfMeasure.Millimeters))
    
                ' set even page size to A4, padding from right - 20mm
                layoutSettings.EvenPageLayoutSettings = New Vintasoft.Imaging.Codecs.Decoders.PageLayoutSettings(pageSize)
                layoutSettings.EvenPageLayoutSettings.PagePadding = New Vintasoft.Imaging.PaddingF(0, 0, stitchSize, 0)
    
                ' set odd page size to A4, padding from left - 20mm
                layoutSettings.OddPageLayoutSettings = New Vintasoft.Imaging.Codecs.Decoders.PageLayoutSettings(pageSize)
                layoutSettings.OddPageLayoutSettings.PagePadding = New Vintasoft.Imaging.PaddingF(stitchSize, 0, 0, 0)
            End If
        End Sub
    End Class