Кодеки: Как настроить параметры макета DOCX-документа?
В этом разделе
SDK позволяет указать параметры макета (размер страницы, отступы страницы, масштаб содержимого) DOCX-документа. Настройки макета страницы можно указать для всех страниц, четных и/или нечетных страниц, страниц указанных индексами.
Вот C#/VB.NET код, который демонстрирует, как установить параметры макета DOCX-документа:
/// <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