Конвертация других форматов файлов в PDF в .NET

Обзор

Эта статья объясняет, как конвертировать различные другие типы форматов файлов в PDF с использованием C#. Она охватывает следующие темы.

Следующий пример кода также работает с библиотекой Aspose.PDF.Drawing.

Формат: EPUB

Формат: Markdown

Формат: MD

Формат: PCL

Формат: Text

Формат: TXT

Формат: Plain Text

Формат: Преформатированный TXT

Формат: Пре Текст

Формат: XPS

Конвертация EPUB в PDF

Aspose.PDF для .NET позволяет легко конвертировать файлы EPUB в формат PDF.

EPUB (сокращение от электронная публикация) является свободным и открытым стандартом электронных книг от Международного форума по цифровым публикациям (IDPF). EPUB (сокращение от электронная публикация) является свободным и открытым стандартом электронных книг от Международного форума цифровых публикаций (IDPF).

EPUB также поддерживает контент с фиксированным макетом. Формат предназначен как единый формат, который издатели и конвертационные компании могут использовать внутри компании, а также для распространения и продажи. Он заменяет стандарт Open eBook. Версия EPUB 3 также поддерживается Книжной промышленной исследовательской группой (BISG), ведущей ассоциацией книжной торговли для стандартизации лучших практик, исследований, информации и событий для упаковки содержимого.

Шаги: Конвертирование EPUB в PDF на C# Шаги: Конвертация EPUB в PDF на C#

  1. Создайте экземпляр класса EpubLoadOptions.
  2. Создайте экземпляр класса Document с указанием исходного имени файла и опций.
  3. Сохраните документ с желаемым именем файла.

Следующий фрагмент кода показывает, как конвертировать файлы EPUB в формат PDF на C#.

public static void ConvertEPUBtoPDF()
{
    EpubLoadOptions option = new EpubLoadOptions();
    Document pdfDocument= new Document(_dataDir + "WebAssembly.epub", option);
    pdfDocument.Save(_dataDir + "epub_test.pdf");
}

Вы также можете установить размер страницы для конвертации. Чтобы определить новый размер страницы, используйте объект SizeF и передайте его в конструктор EpubLoadOptions.

public static void ConvertEPUBtoPDFAdv()
{
    EpubLoadOptions option = new EpubLoadOptions(new SizeF(1190, 1684));
    Document pdfDocument= new Document(_dataDir + "WebAssembly.epub", option);
    pdfDocument.Save(_dataDir + "epub_test.pdf");
}

Конвертирование Markdown в PDF

Эта функция поддерживается начиная с версии 19.6 или выше.

Aspose.PDF для .NET предоставляет функциональность создания PDF документа на основе входного файла данных Markdown. Для конвертации Markdown в PDF необходимо инициализировать Document с использованием MdLoadOptions.

Следующий фрагмент кода показывает, как использовать эту функциональность с библиотекой Aspose.PDF:

Шаги: Конвертация Markdown в PDF на C# | Шаги: Конвертация Markdown в PDF на C# | Шаги: Конвертация MD в PDF на C#

  1. Создайте экземпляр класса MdLoadOptions .
  2. Создайте экземпляр класса Document с указанием исходного имени файла и опций.
  3. Сохраните документ с желаемым именем файла.
// Путь к директории документов.
string dataDir = RunExamples.GetDataDir_AsposePdf_DocumentConversion();
// Открыть документ Markdown
Document pdfDocument= new Document(dataDir + "sample.md", new MdLoadOptions());
// Сохранить документ в формате PDF
pdfDocument.Save(dataDir + "MarkdownToPDF.pdf");

Конвертация PCL в PDF

PCL (язык команд принтера) — это разработанный Hewlett-Packard язык принтера, предназначенный для доступа к стандартным функциям принтера. PCL (Язык команд принтера) — это язык принтеров Hewlett-Packard, разработанный для доступа к стандартным функциям принтера.

В настоящее время поддерживаются только PCL5 и более старые версии

```
        </td>
        <td>
            &nbsp;
        </td>
        <td>
            Разрешить печать символов, не относящихся к ASCII. Не реализовано из-за отсутствия образцовых файлов с <br> текстом Unicode
        </td>
    </tr>
    <tr>
        <td>
            PCL6 (PCL-XL)
        </td>
        <td>
            &nbsp;
        </td>
        <td>
            Реализовано только в бета-версии из-за недостатка тестовых файлов. Встроенные шрифты также не поддерживаются.<br> Расширение JetReady не поддерживается, поскольку невозможно получить спецификацию JetReady.
        </td>
        <td>
            Бинарный формат файла.
        </td>
    </tr>
</tbody>
Наборы команд Поддержка Исключения Описание
Команды управления заданиями
    <tr>
        <td>
            Команды управления заданиями
        </td>
        <td>
            +
        </td>
        <td>
            Режим двусторонней печати
        </td>
        <td>
            Управление процессом печати: количество копий, приемный лоток, односторонняя/двусторонняя печать, смещения слева и сверху и т.д.
        </td>
    </tr>
    <tr>
        <td>
            Команды управления страницами
        </td>
        <td>
            +
        </td>
        <td>
            Команда пропуска перфорации
        </td>
        <td>
            Указание размера страницы, полей, ориентации страницы, межстрочных и межсимвольных расстояний и т.д.
        </td>
    </tr>
    <tr>
        <td>
            Команды позиционирования курсора
        </td>
        <td>
            +
        </td>
        <td>
            &nbsp;
        </td>
        <td>
            Указание позиции курсора и, следовательно, начала текста, растровых или векторных изображений и деталей.
        </td>
    </tr>

<tr>
    <td>
        Укажите позицию курсора и, следовательно, исходные позиции текста, растровых или векторных изображений и деталей.
    </td>
</tr>
<tr>
    <td>
        Команды выбора шрифта
    </td>
    <td>
        +
    </td>
    <td>
        <ol>
            <li>Команда печати прозрачных данных.</li>
            <li>Встроенные программные шрифты. В текущей версии вместо создания программного шрифта наша библиотека выбирает
                подходящий шрифт из существующих "жестких" шрифтов TrueType, установленных на целевой машине. <br/>
                Подходящесть определяется по соотношению ширины и высоты.<br/>
                Эта функция работает только для шрифтов Bitmap и TrueType и не
                гарантирует, что текст, напечатанный с использованием программного шрифта, будет соответствовать тому, что в исходном файле.<br/>
                Поскольку коды символов в программном шрифте могут не совпадать с умолчательными.
            </li>
            <li>Пользовательские наборы символов.</li>
        </ol>
    </td>
</tr>
  • Пользовательские наборы символов.
  • Разрешить загрузку мягких (встроенных) шрифтов из файла PCL и управление ими в памяти.
    Команды растровой графики + Только черно-белые Разрешить загрузку растровых изображений из файла PCL в память, указать параметры растра,
    такие как ширина, высота, тип сжатия, разрешение и т.д.
    Команды работы с цветом +   Разрешить раскраску для всех печатаемых объектов.
    Команды модели печати ```

    Команды печати модели + Разрешить заполнение текста, растровых изображений и прямоугольных областей растровыми предопределенными и пользовательскими узорами, указать режим прозрачности для узоров и исходного растрового изображения. Предопределенные узоры включают штриховку, крестообразную штриховку и теневые узоры.

    Команды заполнения прямоугольной области + Разрешить создание и заполнение прямоугольных областей узорами.

    Команды векторной графики HP-GL/2 + Команда векторной графики с экранированием (SV), Команда режима прозрачности (TR), Команда прозрачных данных (TD), RO

    
    Команды Screened Vector Command (SV), Transparency Mode Command (TR), Transparent Data Command (TD), RO
    (Rotate Coordinate System), Scalable or Bitmap Fonts Command (SB), Character Slant Command (SL) и
    Extra Space (ES) не реализованы, а команды DV (Define Variable Text Path) реализованы в
    бета-версии.
    </td>
    <td>
    Разрешить загрузку векторных изображений HP-GL/2 из файла PCL в память. Векторное изображение имеет начало в нижнем
    левом углу печатаемой области, может быть масштабировано, перемещено, повернуто и обрезано. <br>
    Векторное изображение может содержать текст, как метки, и геометрические фигуры, такие
    как прямоугольник, круг, эллипс, линия, дуга, кривая Безье и сложные фигуры, составленные из простых. <br> Закрытые фигуры, включая буквы меток, могут быть заполнены
    сплошной заливкой или векторным узором. <br> Узор может быть
    штриховкой, крестообразной штриховкой, теневой заливкой, растровой пользовательской, PCL штриховкой или крестообразной штриховкой и PCL
    
     штриховка, крест-накрест, штриховка, растровый пользовательский, штриховка PCL или крест-накрест и пользовательский PCL.
    Узоры PCL представляют собой растр. Метки могут быть индивидуально вращены, масштабированы и направлены в
    четыре стороны: вверх, вниз, влево и вправо. Направления влево и вправо включают расположение букв одна за другой.
    Направления вверх и вниз включают расположение букв одна под другой.
    
    Макросы   Позволяют загружать последовательность команд PCL в память и использовать эту последовательность много раз, например, для печати заголовка страницы или установки одного форматирования для набора страниц.
    Текст Unicode

    Конвертация PCL файла в формат PDF

    Для конвертации из PCL в PDF, Aspose.PDF использует класс PclLoadOptions, который используется для инициализации объекта LoadOptions.

    Для конвертации из PCL в PDF, Aspose.PDF использует класс [`PclLoadOptions`](https://reference.aspose.com/pdf/net/aspose.pdf/pclloadoptions), который используется для инициализации объекта LoadOptions.
    
    Следующий фрагмент кода показывает процесс конвертации файла PCL в формат PDF.
    
    <a name="csharp-convert-pcl-to-pdf" id="csharp-convert-pcl-to-pdf"><strong><em>Шаги:</em> Конвертация PCL в PDF на C#</strong></a>
    
    1. Создайте экземпляр класса [PclLoadOptions](https://reference.aspose.com/pdf/net/aspose.pdf/pclloadoptions/).
    2. Создайте экземпляр класса [Document](https://reference.aspose.com/pdf/net/aspose.pdf/document/) с указанием исходного имени файла и опций.
    3. Сохраните документ с желаемым именем файла.
    
    ```csharp
    public static void ConvertPCLtoPDF()
    {
        PclLoadOptions options = new PclLoadOptions();
        Document pdfDocument= new Document(_dataDir + "demo.pcl", options);
        pdfDocument.Save(_dataDir + "pcl_test.pdf");
    }
    

    Также вы можете отслеживать обнаружение ошибок в процессе конвертации. Вы также можете отслеживать обнаружение ошибок в процессе конвертации.

    public static void ConvertPCLtoPDFAvdanced()
    {
        PclLoadOptions options = new PclLoadOptions { SupressErrors = true };
        Document pdfDocument= new Document(_dataDir + "demo.pcl", options);
        if (options.Exceptions!=null)
            foreach (var ex in options.Exceptions)
            {
                Console.WriteLine(ex.Message);
            }
        pdfDocument.Save(_dataDir + "pcl_test.pdf");
    }
    

    Известные проблемы

    1. Исходное положение текстовых строк и изображений может незначительно отличаться от исходного файла PCL, если направление печати не равно 0°. То же относится к векторным изображениям, если система координат векторного графика повернута (предшествует команда RO).
    2. Исходное положение меток на векторных изображениях может отличаться от исходного файла PCL, если на метки влияет последовательность команд: Исходное положение метки (LO), Определение переменного текстового пути (DV), Абсолютное направление (DI) или Относительное направление (DR).
    3. Если обработанный файл PCL содержит шрифты Intellifont или Universal, будет выброшено исключение, поскольку шрифты Intellifont и Universal не поддерживаются.
    4. Если обработанный файл PCL содержит команды макросов, результат обработки сильно отличается от исходного файла, поскольку команды макросов не поддерживаются.

    Конвертация текста в PDF

    Aspose.PDF для .NET поддерживает функцию конвертации обычного текста и предварительно отформатированного текстового файла в формат PDF.

    Конвертация текста в PDF означает добавление фрагментов текста на страницу PDF. Что касается текстовых файлов, мы имеем дело с 2 типами текста: предварительная форматирование (например, 25 строк по 80 символов в каждой) и неформатированный текст (обычный текст). В зависимости от наших потребностей, мы можем контролировать это добавление самостоятельно или доверить его алгоритмам библиотеки.

    Преобразование обычного текстового файла в PDF

    В случае с обычным текстовым файлом мы можем использовать следующую технику:

    Шаги: Преобразование текста в PDF на C# | Шаги: Преобразование TXT в PDF на C# | Шаги: Преобразование простого текста в PDF на C#

    1. Используйте TextReader для чтения всего текста;
    2. Создайте новый объект TextFragment и передайте объект TextReader в его конструктор;
    3. Добавьте объект TextFragment как параграф в коллекцию Paragraphs. Если объем текста превышает размер страницы, алгоритм библиотеки автоматически добавляет дополнительные страницы;
    4. Используйте метод Save класса Document;
    // Для полных примеров и файлов данных, пожалуйста, перейдите по ссылке https://github.com/aspose-pdf/Aspose.PDF-for-.NET
    // Путь к директории документов.
    string dataDir = RunExamples.GetDataDir_AsposePdf_DocumentConversion();
    // Чтение исходного текстового файла
    TextReader tr = new StreamReader(dataDir + "log.txt");
    
    // Создание экземпляра объекта Document с помощью вызова его пустого конструктора
    Document pdfDocument= new Document();
    
    // Добавление новой страницы в коллекцию Pages документа
    Page page = pdfDocument.Pages.Add();
    
    // Создание экземпляра TextFragment и передача текста из объекта reader в его конструктор в качестве аргумента
    TextFragment text = new TextFragment(tr.ReadToEnd());
    
    // Добавление нового текстового параграфа в коллекцию параграфов и передача объекта TextFragment
    page.Paragraphs.Add(text);
    
    // Сохранение результирующего PDF-файла
    pdfDocument.Save(dataDir + "TexttoPDF_out.pdf");
    

    Конвертация предварительно отформатированного текстового файла в PDF

    Конвертация предварительно отформатированного текста похожа на обработку обычного текста, но требует выполнения дополнительных действий, таких как настройка полей, выбор типа и размера шрифта. Очевидно, что шрифт должен быть моноширинным (например, Courier New).

    Следуйте этим шагам для конвертации предварительно отформатированного текста в PDF с помощью C#:

    Шаги: Конвертация предварительно отформатированного текста в PDF на C# | Шаги: Конвертация предварительно отформатированного TXT в PDF на C#

    1. Прочитайте весь текст как массив строк;
    2. Создайте объект Document и добавьте новую страницу в коллекцию Pages; В данном случае алгоритм библиотеки также добавляет дополнительные страницы, но мы можем контролировать этот процесс самостоятельно. Следующий пример показывает, как конвертировать предварительно отформатированный текстовый файл (80x25) в PDF-документ формата A4.
    public static void ConvertPreFormattedTextToPdf()
    {
        // Читаем текстовый файл как массив строк
        var lines = System.IO.File.ReadAllLines(_dataDir + "rfc822.txt");
    
        // Создаем объект Document, вызвав его пустой конструктор
        Document pdfDocument= new Document();
    
        // Добавляем новую страницу в коллекцию Pages документа
        Page page = pdfDocument.Pages.Add();
    
        // Устанавливаем левый и правый отступы для лучшего представления
        page.PageInfo.Margin.Left = 20;
        page.PageInfo.Margin.Right = 10;
        page.PageInfo.DefaultTextState.Font = FontRepository.FindFont("Courier New");
        page.PageInfo.DefaultTextState.FontSize = 12;
    
        foreach (var line in lines)
        {
            // проверяем, содержит ли строка символ "разрыв формы"
            // см. https://en.wikipedia.org/wiki/Page_break
            if (line.StartsWith("\x0c"))
            {
                page = pdfDocument.Pages.Add();
                page.PageInfo.Margin.Left = 20;
                page.PageInfo.Margin.Right = 10;
                page.PageInfo.DefaultTextState.Font = FontRepository.FindFont("Courier New");
                page.PageInfo.DefaultTextState.FontSize = 12;
            }
            else
            {
                // Создаем экземпляр TextFragment и
                // передаем строку в его
                // конструктор в качестве аргумента
                TextFragment text = new TextFragment(line);
    
                // Добавляем новый текстовый параграф в коллекцию параграфов и передаем объект TextFragment
                page.Paragraphs.Add(text);
            }
        }
    
        // Сохраняем результирующий PDF-файл
        pdfDocument.Save(_dataDir + "TexttoPDF_out.pdf");
    }
    

    Преобразование XPS в PDF

    Aspose.PDF для .NET поддерживает функцию конвертации файлов XPS в формат PDF. Ознакомьтесь с этой статьей, чтобы решить свои задачи.

    Тип файла XPS в первую очередь связан с XML Paper Specification от корпорации Microsoft. XML Paper Specification (XPS), ранее известная под кодовым названием Metro и включающая маркетинговую концепцию Next Generation Print Path (NGPP), является инициативой Microsoft по интеграции создания и просмотра документов в ее операционную систему Windows.

    Для преобразования XPS в PDF с помощью Aspose.PDF для .NET мы ввели класс с названием XpsLoadOption, который используется для инициализации объекта LoadOptions. Для конвертации XPS в PDF с помощью Aspose.PDF для .NET, мы представили класс под названием XpsLoadOption, который используется для инициализации объекта LoadOptions.

    Следующий пример кода показывает процесс конвертации файла XPS в формат PDF на языке C#.

    Шаги: Конвертация XPS в PDF на C#

    1. Создайте экземпляр класса XpsLoadOptions.
    2. Сохраните документ в формате PDF с желаемым именем файла.
    // Для полных примеров и файлов данных, пожалуйста, перейдите по ссылке https://github.com/aspose-pdf/Aspose.PDF-for-.NET
    // Путь к каталогу документов.
    string dataDir = RunExamples.GetDataDir_AsposePdf_DocumentConversion();
    
    // Создайте объект LoadOption с использованием опции загрузки XPS
    Aspose.Pdf.LoadOptions options = new XpsLoadOptions();
    
    // Создайте объект документа
    Aspose.Pdf.Document pdfDocument = new Aspose.Pdf.Document(dataDir + "XPSToPDF.xps", options);
    
    // Сохраните полученный документ PDF
    document.Save(dataDir + "XPSToPDF_out.pdf");
    

    Конвертация PostScript в PDF

    Aspose.PDF для .NET поддерживает возможность конвертации файлов PostScript в формат PDF. Одной из особенностей Aspose.PDF является возможность установки набора папок шрифтов, которые будут использоваться во время конвертации.

    Для конвертации файла PostScript в формат PDF, Aspose.PDF для .NET предлагает класс PsLoadOptions, который используется для инициализации объекта LoadOptions. Позже этот объект может быть передан в конструктор объекта Document, что поможет движку рендеринга PDF определить формат исходного документа.

    Следующий фрагмент кода может быть использован для конвертации файла PostScript в формат PDF с помощью Aspose.PDF для .NET:

    // Для полных примеров и файлов данных, пожалуйста, перейдите на https://github.com/aspose-pdf/Aspose.PDF-for-.NET
    // Путь к директории с документами.
    string _dataDir = RunExamples.GetDataDir_AsposePdf_DocumentConversion();
    // Создание нового экземпляра PsLoadOptions
    PsLoadOptions options = new PsLoadOptions();
    // Открытие .ps документа с созданными параметрами загрузки
    Document pdfDocument = new Document(_dataDir + "input.ps", options);
    // Сохранение документа
    pdfDocument.Save(dataDir + "PSToPDF.pdf");
    

    Кроме того, вы можете задать набор папок со шрифтами, которые будут использоваться во время конвертации:

    public static void ConvertPostscriptToPDFAvdanced()
    {
        PsLoadOptions options = new PsLoadOptions
        {
            FontsFolders = new [] { @"c:\tmp\fonts1", @"c:\tmp\fonts2"}
        };
        Document pdfDocument = new Document(_dataDir + "input.ps", options);
        pdfDocument.Save(_dataDir + "ps_test.pdf");
    }
    

    Конвертация XML в PDF

    Формат XML используется для хранения структурированных данных. Существует несколько способов конвертации XML в PDF в Aspose.PDF:

    1. Преобразуйте любые данные XML в HTML с помощью XSLT и конвертируйте HTML в PDF, как описано ниже
    2. Создайте XML-документ с использованием схемы XSD Aspose.PDF
    3. Используйте XML-документ на основе стандарта XSL-FO

    Преобразование XSL-FO в PDF

    Преобразование файлов XSL-FO в PDF можно реализовать с использованием традиционной техники Aspose.PDF - создайте объект Document с XslFoLoadOptions. Но иногда вы можете столкнуться с некорректной структурой файла. В этом случае конвертер XSL-FO позволяет настроить стратегию обработки ошибок. Вы можете выбрать ThrowExceptionImmediately, TryIgnore или InvokeCustomHandler.

    public static void Convert_XSLFO_to_PDF()
    {
        // Создайте объект XslFoLoadOption
        var options = new XslFoLoadOptions(".\\samples\\employees.xslt");
        // Установите стратегию обработки ошибок
        options.ParsingErrorsHandlingType = XslFoLoadOptions.ParsingErrorsHandlingTypes.ThrowExceptionImmediately;
        // Создайте объект Document
        var pdfDocument = new Aspose.Pdf.Document(".\\samples\\employees.xml", options);
        pdfDocument.Save(_dataDir + "data_xml.pdf");
    }
    

    Преобразование LaTeX/TeX в PDF

    Формат файла LaTeX - это текстовый файл с разметкой в производном LaTeX из семейства языков TeX, и LaTeX является производным форматом системы TeX. LaTeX (ˈleɪtɛk/lay-tek или lah-tek) - это система подготовки документов и язык разметки документов. Он широко используется для коммуникации и публикации научных документов во многих областях, включая математику, физику и информатику. Также он играет важную роль в подготовке и публикации книг и статей, содержащих сложные многоязычные материалы, такие как санскрит и арабский, включая критические издания. LaTeX использует программу вёрстки TeX для форматирования своего вывода и сам написан на макроязыке TeX.

    Aspose.PDF для .NET поддерживает функционал конвертации файлов TeX в формат PDF. Для реализации этой задачи пространство имен Aspose.Pdf содержит класс под названием LatexLoadOptions, который предоставляет возможности загрузки файлов LaTex и вывода результатов в формате PDF с использованием класса Document. Следующий фрагмент кода демонстрирует процесс конвертации файла LaTex в формат PDF на языке C#.

    public static void ConvertTeXtoPDF()
    {
        // Создаем объект опций загрузки Latex
        TeXLoadOptions options = new TeXLoadOptions();
        // Создаем объект документа
        Aspose.Pdf.Document pdfDocument= new Aspose.Pdf.Document(_dataDir + "samplefile.tex", options);
        // Сохраняем результат в файл PDF
        pdfDocument.Save(_dataDir + "TeXToPDF_out.pdf");
    }