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