我们正在创建使用包princexml PDF转换的HTML文件的PDF文件。 HTML文件的创建数据已经由服务器提供。在使用jquery输入串(HTML代码)浏览器是为PDF创建创建。从浏览器接收输入字符串后,服务器将创建一个html文件,这是输入princexml PDF转换为PDF创建。
Example for the input string
var sample = "<html>text</html>";//browser side
sample.html converted to sample.pdf //server side
是否有可能做在服务器端同样的事情,没有浏览器的帮助?
您可以使用模拟浏览器像http://phantomjs.org/。这允许生成渲染的页面图像。参见http://www.lelesys.com/en/media/technology/phantomjs-as-screen-capture-to-generate-image-pdf-files.html
这使您可以使用jQuery和其他一切 - 因为它使用了实际的渲染引擎。我猜你甚至不需要princexml然后。还有关于捕获常见问题解答页面:qazxsw POI
退房http://phantomjs.org/screen-capture.html - 使用的Webkit HTML转换为PDF(QtWebKit的)@ wkhtmltopdf
我知道这是一个有点老问题,但因为我发现了一个伟大的模块我想和大家一起分享。
模块命名http://wkhtmltopdf.org,可以让你在无头的模式下运行的Chrome,并通过API与之交互。所以,现在你可以创建一个模板,并通过POST调用采取模板的占位符的值,并动态生成的PDF,在服务器上。
我创建了一个小的POC这里是链接到它:Puppeteer
让我做了一下解释一下:
Demo-Puppeteer
现在,这个缓冲区基本上是一个二进制数据,你必须使用节点的文件模块把它写在文件中。
为了进一步的说明请查看 ...........
const content = await compile(templateName, data);
/***
* Launched the headless chrome in memory.
*/
const browser = await puppeteer.launch();
/***
* Created a new page(tab)
*/
const page = await browser.newPage();
/***
* Set the content of the new page
*/
await page.setContent(content, { waitUntil: 'networkidle0' });
/***
* Telling chrome to emulate screen i.e how the page looks if
* it would have been rendered in the normal browser.
*/
await page.emulateMedia('screen');
const byteArray = await page.pdf({
format: "A4",
landscape: true,
scale: 1.29,
printBackground: true
});
const buffer = Buffer.from(byteArray, 'binary');
/**
* We don't need the acknowledgement of this call that is the
* reason we are not waiting for this call to return.
*/
browser.close();
return buffer;
.......
你可以用下面的库中的任何一个的帮助下实现这一目标?
Exlpanation Link - FPDF是一个PHP类,允许生成纯PHP的PDF文件,也就是不使用的PDFlib库说。 f起FPDF代表免费:您可以将其用于任何一种用法,并对其进行修改以满足您的需求。
FPDF - HTML2PDF是一个HTML写在PHP4(利用FPDF),和PHP5(使用TCPDF)PDF转换器。它可以有效的HTML 4.01的PDF格式的转换,LGPL下分发。
HTML2PDF - DOMPDF是一个HTML到PDF转换器。在它的心脏,DOMPDF是(主要)CSS 2.1标准的HTML布局和用PHP编写的渲染引擎。这是一个风格的驱动渲染器:它会下载并阅读外部样式表,内嵌式的标签,和个人的HTML元素的样式属性。它还支持最表象的HTML属性。
GIT位置:dompdf
https://github.com/dompdf/dompdf - 该Pdfcrowd API是一个在线工具,可以让你轻松转换网页和原始的HTML代码,PDF在您的PHP应用程序。 PDF文件在云中生成的,不需要第三方库。所有你需要的是一个很小的PHP API客户端库。
你可以做到这一点,而不使用浏览器。您目前使用jQuery生成HTML内容,所以你需要在浏览器因为jQuery在浏览器中运行,对不对?
您可以通过编写产生所需的HTML内容,并将其发送到PDF转换器的服务器端应用程序移动HTML代码到服务器端的生成。
Princexml可以从许多服务器端编程语言被称为你可以在这里看到:command-line documentation
从列表中选择一个服务器端语言,生成该语言的HTML和发送HTML到PDF转换器。就这样。
此处是指文档http://www.princexml.com/doc/9.0/你可以选择你的服务器端语言和得到的东西完成。只是做一个表格并提交该数据。