C# 从具有相同样式的HTML生成PDF
这是我在C#中的代码&它给出了加载pdf的指令C# 从具有相同样式的HTML生成PDF,c#,asp.net,itextsharp,C#,Asp.net,Itextsharp,这是我在C#中的代码&它给出了加载pdf的指令 public void SetPdfFormat() { Response.ContentType = "application/pdf"; Response.AddHeader("content-disposition", "attachment;filename=Panel.pdf"); Response.AddHeader("content-disposition", "filename=Panel.pdf");
public void SetPdfFormat()
{
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=Panel.pdf");
Response.AddHeader("content-disposition", "filename=Panel.pdf");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
pnlQuotation.RenderControl(hw);
StringReader sr = new StringReader(sw.ToString());
Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 100f, 0f);
HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
pdfDoc.Open();
htmlparser.Parse(sr);
pdfDoc.Close();
Response.Write(pdfDoc);
Response.End();
}
但当我调用该函数时,pdf将根据html加载更多的项,而datatables将加载带有边框的单元格。我只需要左/右页边距的边框,而不需要顶部和底部的边框
我可以为pdf单元格分别覆盖和添加css吗
请用示例代码为我提供解决方案这里有一个.NET库: 我通过访问找到此链接: 我个人没有使用过这个图书馆 下面是winnovative软件的示例代码:
/// <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();
}
//
///将HTML代码从指定的URL转换为PDF文档
并将文档发送到浏览器
///
私有void ConvertURLToPDF()
{
字符串urlToConvert=textBoxWebPageURL.Text.Trim();
//创建PDF转换器。可以选择HTML查看器宽度
被指定为参数
//默认HTML查看器宽度为1024像素。
PdfConverter PdfConverter=新的PdfConverter();
//设置许可证密钥-必需
pdfConverter.LicenseKey=“R8nYyNnI2MjRxtjI29nG2drG0dHR0Q=”;
//设置转换器选项-可选
pdfConverter.PdfDocumentOptions.PdfPageSize=PdfPageSize.A4;
pdfConverter.PdfDocumentOptions.PdfCompressionLevel=PdfCompressionLevel.Normal;
pdfConverter.PdfDocumentOptions.PdfPageOrientation=PdfPageOrientation.patrait;
//设置是否在PDF中显示页眉和页脚-可选-默认值
是假的
pdfConverter.PdfDocumentOptions.ShowHeader=cbAddHeader.Checked;
pdfConverter.PdfDocumentOptions.ShowFooter=cbAddFooter.Checked;
//如果需要调整HTML内容的大小以适合PDF格式,则设置
页面宽度-默认值为true
pdfConverter.PdfDocumentOptions.FitWidth=cbFitWidth.Checked;
//设置嵌入字体选项-可选-默认值为false
pdfConverter.PdfDocumentOptions.EmbedFonts=cbEmbedFonts.Checked;
//设置live HTTP链接选项-可选-默认值为true
pdfConverter.PdfDocumentOptions.LiveUrlsEnabled=cbLiveLinks.Checked;
//设置在转换为PDF时是否启用JavaScript-默认值
是真的
pdfConverter.JavaScriptEnabled=cbClientScripts.Checked;
//设置是否使用JPEG压缩PDF格式的图像以减少
PDF文档大小-默认值为true
pdfConverter.PdfDocumentOptions.JpegCompressionEnabled=cbJpegCompression.Checked;
//为指定的HTML选择器列表启用自动生成的书签
(例如H1和H2)
如果(cbBookmarks.Checked)
{
pdfConverter.PdfBookmarkOptions.HtmlElementSelectors=新字符串[]{“H1”,“H2”};
}
//添加HTML标题
if(cbAddHeader.Checked)
AddHeader(pdfConverter);
//添加HTML页脚
如果(cbAddFooter.Checked)
AddFooter(pdfConverter);
//执行转换并获取可以转换的pdf文档字节
//保存到文件或作为浏览器响应发送
字节[]pdfBytes=pdfConverter.GetPdfBytesFromUrl(urlToConvert);
//将PDF文档作为响应发送到浏览器进行下载
System.Web.HttpResponse response=System.Web.HttpContext.Current.response;
response.Clear();
AddHeader(“内容类型”、“应用程序/pdf”);
如果(无线电附件。选中)
response.AddHeader(“内容处置”,
String.Format(“附件;文件名=GettingStarted.pdf;大小={0}”,
pdfBytes.Length.ToString());
其他的
response.AddHeader(“内容处置”,
Format(“inline;filename=GettingStarted.pdf;size={0}”,
pdfBytes.Length.ToString());
响应。二进制写入(pdfBytes);
//注意:结束响应很重要,否则ASP.NET
//网页将其内容呈现为PDF文档流
response.End();
}