Существует ли инструмент командной строки для преобразования html-файлов в pdf?

Esa macro intenta producir un error de compilación si el argumento es verdadero (no -cero ). Lo hace definiendo una estructura con un campo de bits cuya longitud se vuelve negativa si ees verdadero.

Basado en las respuestas de esta pregunta en Stackoverflow , el problema es que el el truco utilizado en la macro no es compatible con C++, exactamente por la razón indicada en el mensaje de error :a diferencia de C, C++ no permite definir un structdentro de sizeof.

El kernel de Linux solo usa C, por lo que probablemente no les importen las incompatibilidades con C++ en los encabezados que usa el kernel.

Las respuestas a la pregunta vinculada contienen alternativas compatibles con C++ con el mismo efecto.

18
05.08.2019, 19:22
5 ответов

pandoc — отличный инструмент командной строки -для преобразования форматов файлов.

Недостатком является то, что для вывода PDF вам потребуется LaTeX. Использование

pandoc test.html -t latex -o test.pdf

Если у вас не установлен LaTeX, я рекомендую htmldoc .


Цитируется из Создание PDF-файла

By default, pandoc will use LaTeX to create the PDF, which requires that a LaTeX engine be installed.

Alternatively, pandoc can use ConTeXt, pdfroff, or any of the following HTML/CSS-to-PDF-engines, to create a PDF: wkhtmltopdf, weasyprint or prince. To do this, specify an output file with a.pdf extension, as before, but add the --pdf-engine option or -t context, -t html, or -t ms to the command line (-t html defaults to --pdf-engine=wkhtmltopdf).

35
27.01.2020, 19:45

Вы также можете попробовать wkhtmltopdf , использование и установка довольно просты.

26
27.01.2020, 19:45

Я успешно использую ветку 1.8 HTMLDOC в течение многих лет. Я поместил его в коммерческую систему, которая с 2003 года сгенерировала сотни тысяч отчетов.

Он не супер -универсальный, но очень эффективный и надежный. Он ограничен базовым набором постскриптумных шрифтов.

Он не поддерживает CSS, вместо этого использует специальный набор директив комментариев HTML для управления специфическими аспектами PDF.

Исходный код не слишком сложен для чтения и редактирования, если вам нужно добавить пользовательские средства, если вы знакомы с C. Он скомпилирован с помощью GCC или Visual Studio, в зависимости от вашей целевой платформы.

Обратите внимание, что HTML не обязательно должен находиться в файле. Вы можете сгенерировать его динамически из URL-адреса, php или aspx и т. д. Вы также можете подключить его к своему веб-серверу для динамического создания файла PDF.

В моем случае он генерирует файл PDF из страницы asp, который затем прикрепляется к электронному письму, вместо отправки HTML на принтер и машину для заполнения писем; это своего рода диспетчер очереди печати.

2
27.01.2020, 19:45

Существует также программа html2ps, с помощью которой можно легко преобразовать файл PostScript в формат pdf. Я использовал это несколько лет назад, и IIRC неплохо справился с большим руководством.

2
27.01.2020, 19:45

PhantomJS может сделать эту работу за вас. Он имеет функциональность командной строки и работает из коробки. Вам потребуется написать простую функцию Javascript, чтобы сообщить ей, что делать. На сайте есть краткое руководство и множество статей в Интернете, которые помогут вам. Обычно используется следующее:

phantomjs configFile.js htmlFile.html output.pdf

Вот пример скрипта для создания портретного PDF-файла формата A4, взятого из здесь , сохраните как ваш configFile.js

var page = require('webpage').create(),
    system = require('system'),
    fs = require('fs');

page.paperSize = {
    format: 'A4',
    orientation: 'portrait',
    margin: {
        top: "1.5cm",
        bottom: "1cm"
    },
    footer: {
        height: "1cm",
        contents: phantom.callback(function (pageNum, numPages) {
            return '' +
                '<div style="margin: 0 1cm 0 1cm; font-size: 0.65em">' +
                '   <div style="color: #888; padding:20px 20px 0 10px; border-top: 1px solid #ccc;">' +
                '       <span>REPORT FOOTER</span> ' +
                '       <span style="float:right">' + pageNum + ' / ' + numPages + '</span>' +
                '   </div>' +
                '</div>';
        })
    }
};

page.settings.dpi = "96";

page.content = fs.read(system.args[1]);

var output = system.args[2];

window.setTimeout(function () {
    page.render(output, {format: 'pdf'});
    phantom.exit(0);
}, 2000);
2
27.01.2020, 19:45

Теги

Похожие вопросы