Генерация PDF из комментариев XML

Вопрос или проблема

Предыстория

Я пишу много кода на C# и использую XML-комментарии повсюду, чтобы описывать, как ведут себя мои методы, члены и свойства.

В конечном итоге я хотел бы собрать всю информацию, собранную из этих комментариев (вместе с методами, членами и именами свойств), и сгенерировать красивый/читабельный документ, описывающий мое API.

Я знаю, что существует несколько программ, которые делают подобные вещи, например, SandCastle help-builder. Однако я хотел бы избежать использования SandCastle и помощи Windows в целом.

На самом деле, я хотел бы сгенерировать мой документ в формате PDF, если это возможно.

Вопрос

Существует ли бесплатное/с открытым исходным кодом программное обеспечение для превращения всех моих XML-комментариев в красивый PDF-документ?

У нас есть собственные инструменты, которые это делают, и это довольно сложно, но это показывает, что это возможно. Мы больше работаем с Java, чем с C#, и конечно, мы используем XSLT, так что это, вероятно, окрашивает наш подход. Мы берем выходной файл apidoc.xml компилятора C# в качестве одного входного файла, другой XML-файл, созданный с помощью грубой разбивки исходного кода C#, как второй входной файл, затем объединяем их вместе (с использованием XSLT) в XML-файл в формате, совместимом с документацией наших Java APIs, произведенной с использованием javadoc и jeldoclet, комбинируем это с Java APIs, а затем превращаем результат в особый вид HTML5, который совместим с остальной нашей документацией, опять же используя XSLT. В наши дни мы не производим PDF, но делали это в прошлом, используя XSL-FO.

Это, конечно, внутренние инструменты, и они недостаточно формализованы для использования кем-либо другим, но я подумал, что просто опишу это, чтобы у вас было (a) доказательство того, что это можно сделать, и (b) мера сложности.

Мы вообще-то были удивлены, насколько плохи инструменты для этого в мире .NET по сравнению с аналогичными в Java. Возможно, с тех пор, как мы это сделали, что-то изменилось, я не смотрел недавно.

Ответ или решение

Генерация PDF из XML-комментариев в C

Введение

Ваша задача заключается в создании документации для API на основе XML-комментариев в коде C#. Это распространенная практика, так как XML-комментарии предоставляют структурированное описание методов, свойств и членов классов. В отличие от более привычных инструментов, таких как SandCastle, вы ищете открытое решение, которое позволит вам сгенерировать PDF-документ.

Подход к решению

Для достижения вашей цели, вам необходимо выполнить несколько шагов:

  1. Сбор XML-комментариев: Сначала вы должны сгенерировать XML-документацию из вашего C# кода. Это можно сделать, используя опцию /doc компилятора C#. После компиляции проект будет содержать файл .xml, содержащий ваши XML-комментарии.

  2. Применение XSLT для преобразования: Используя XSLT (Extensible Stylesheet Language Transformations), вы можете преобразовать XML-документы в требуемый формат. Создайте XSLT-шаблон, который извлечет нужную информацию из XML-файла и представит её в виде структуры, удобной для дальнейшей работы.

  3. Преобразование в PDF с использованием XSL-FO: Чтобы сгенерировать PDF-файл, вы можете воспользоваться XSL-FO (XSL Formatting Objects). Сначала нужно преобразовать ваш XML-документ в XSL-FO с помощью того же XSLT-шаблона, затем используйте движок для генерации PDF, например Apache FOP (Formatting Objects Processor). Это open-source решение, которое достаточно мощно и адаптивно.

Примерный процесс

  1. Создание XML-документации:
    Скомпилируйте проект с параметром /doc, чтобы получить файл XML с вашими комментариями.

    csc /doc:YourApiDocumentation.xml YourSourceFile.cs
  2. Создание XSLT-шаблона:
    Разработайте XSLT-файл, который будет трансформировать ваш XML в XSL-FO. Пример простой структуры:

    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
       <xsl:template match="/">
           <fo:root>
               <fo:layout-master-set>
                   <fo:simple-page-master master-name="simple" page-height="29.7cm" page-width="21cm" margin="2cm">
                       <fo:region-body region-name="body" margin="2cm"/>
                   </fo:simple-page-master>
               </fo:layout-master-set>
               <fo:page-sequence master-reference="simple">
                   <fo:flow flow-name="xsl-region-body">
                       <fo:block><xsl:value-of select="/api/docs"/></fo:block>
                   </fo:flow>
               </fo:page-sequence>
           </fo:root>
       </xsl:template>
    </xsl:stylesheet>
  3. Генерация XSL-FO и PDF:
    Убедитесь, что у вас установлен Apache FOP и выполните команду на генерацию PDF из XSL-FO файла:

    fop -xml YourApiDocumentation.xml -xsl YourXSLTFile.xsl -pdf YourApiDocumentation.pdf

Заключение

Создание PDF-документации на основе XML-комментариев в C# – это выполнимая задача, которая требует усилий по настройки рабочего процесса, но возможна благодаря открытым инструментам. В результате, используя комбинацию C#, XSLT и Apache FOP, вы сможете создать профессионально оформленный PDF-документ, который будет содержать всю необходимую информацию о вашем API.

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

Оцените материал
Добавить комментарий

Капча загружается...