我想从 html 生成 pdf。Agem prawn
似乎是最受欢迎的。我下载了它的手册,但没有关于如何从 html 生成 pdf 的信息。
特别是,我也需要它在 Heroku 上工作,但这是第二个目标。
那么如何使用html 从htmlPrawn
生成 pdf呢?
我想从 html 生成 pdf。Agem prawn
似乎是最受欢迎的。我下载了它的手册,但没有关于如何从 html 生成 pdf 的信息。
特别是,我也需要它在 Heroku 上工作,但这是第二个目标。
那么如何使用html 从htmlPrawn
生成 pdf呢?
寻找Pdfkit,它是第二受欢迎的 gem RubyToolbox。它使用 wkhtmltopdf 从 HTML 生成 PDF。关于RailsCasts是一个较旧的教程。
这是使用虾从 html 生成 pdf 的示例代码
/// <summary>
/// Convert the HTML code from the specified URL to a PDF document
and send the document to the browser
/// </summary>
private void ConvertURLToPDF()
{
string urlToConvert = textBoxWebPageURL.Text.Trim();
// Create the PDF converter. Optionally the HTML viewer width can
be specified as parameter
// The default HTML viewer width is 1024 pixels.
PdfConverter pdfConverter = new PdfConverter();
// set the license key - required
pdfConverter.LicenseKey = "R8nYyNnI2MjRxtjI29nG2drG0dHR0Q==";
// set the converter options - optional
pdfConverter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4;
pdfConverter.PdfDocumentOptions.PdfCompressionLevel = PdfCompressionLevel.Normal;
pdfConverter.PdfDocumentOptions.PdfPageOrientation = PdfPageOrientation.Portrait;
// set if header and footer are shown in the PDF - optional - default
is false
pdfConverter.PdfDocumentOptions.ShowHeader = cbAddHeader.Checked;
pdfConverter.PdfDocumentOptions.ShowFooter = cbAddFooter.Checked;
// set if the HTML content is resized if necessary to fit the PDF
page width - default is true
pdfConverter.PdfDocumentOptions.FitWidth = cbFitWidth.Checked;
// set the embedded fonts option - optional - default is false
pdfConverter.PdfDocumentOptions.EmbedFonts = cbEmbedFonts.Checked;
// set the live HTTP links option - optional - default is true
pdfConverter.PdfDocumentOptions.LiveUrlsEnabled = cbLiveLinks.Checked;
// set if the JavaScript is enabled during conversion to a PDF - default
is true
pdfConverter.JavaScriptEnabled = cbClientScripts.Checked;
// set if the images in PDF are compressed with JPEG to reduce the
PDF document size - default is true
pdfConverter.PdfDocumentOptions.JpegCompressionEnabled = cbJpegCompression.Checked;
// enable auto-generated bookmarks for a specified list of HTML selectors
(e.g. H1 and H2)
if (cbBookmarks.Checked)
{
pdfConverter.PdfBookmarkOptions.HtmlElementSelectors = new string[] { "H1", "H2" };
}
// add HTML header
if (cbAddHeader.Checked)
AddHeader(pdfConverter);
// add HTML footer
if (cbAddFooter.Checked)
AddFooter(pdfConverter);
// Performs the conversion and get the pdf document bytes that can
// be saved to a file or sent as a browser response
byte[] pdfBytes = pdfConverter.GetPdfBytesFromUrl(urlToConvert);
// send the PDF document as a response to the browser for download
System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;
response.Clear();
response.AddHeader("Content-Type", "application/pdf");
if (radioAttachment.Checked)
response.AddHeader("Content-Disposition",
String.Format("attachment; filename=GettingStarted.pdf; size={0}",
pdfBytes.Length.ToString()));
else
response.AddHeader("Content-Disposition",
String.Format("inline; filename=GettingStarted.pdf; size={0}",
pdfBytes.Length.ToString()));
response.BinaryWrite(pdfBytes);
// Note: it is important to end the response, otherwise the ASP.NET
// web page will render its content to PDF document stream
response.End();
}