![](/img/trans.png)
[英]Generate one pdf document with multiple pages converting from html using IText 7
[英]How to use itext 7 to generate a PDF from an HTML div and save it to a folder on the server in .net
我正在尝试创建一个CV构建器,将用户编辑的CV保存到我项目中的文件夹中,以进行进一步的处理,以通过电子邮件发送它,我已经达到了使用itext来创建HTML div的PDF的目的,但是没有CSS或我从数据库返回的任何文本值。 通过一些研究,我发现可以通过使用itext 7和附加的pdfHTML来解决我的问题,但是找不到如何将其与ASP.NET代码一起使用的适当示例。 非常感谢您的帮助。
波纹管是我用来生成PDF的单击按钮事件的代码
protected void ButtonDownload_Click(object sender, EventArgs e)
{
Response.ContentType = "application/pdf";
//Response.AddHeader("content-disposition", "attachment;filename=Panel.pdf");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
contentdiv.RenderControl(hw); //convert the div to PDF
StringReader sr = new StringReader(sw.ToString());
Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 10f, 0f);
HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
pdfDoc.Open();
htmlparser.Parse(sr);
pdfDoc.Close();
string filename = base.Server.MapPath("~/PDF/" + "UserCV.pdf");
HttpContext.Current.Request.SaveAs(filename, false);
Response.End();
}
这张图片显示了我单击下载按钮时得到的pdf结果 ,这是html页面,它正在尝试转换 。HTML页面标题下方的文本是Labels,其值是通过从数据库中检索值来设置的
这是有关如何使用pdfHTML
该示例相当广泛,因为它还设置文档属性并注册自定义字体。
public void createPdf(String src, String dest, String resources) throws IOException {
try {
FileOutputStream outputStream = new FileOutputStream(dest);
WriterProperties writerProperties = new WriterProperties();
//Add metadata
writerProperties.addXmpMetadata();
PdfWriter pdfWriter = new PdfWriter(outputStream, writerProperties);
PdfDocument pdfDoc = new PdfDocument(pdfWriter);
pdfDoc.getCatalog().setLang(new PdfString("en-US"));
//Set the document to be tagged
pdfDoc.setTagged();
pdfDoc.getCatalog().setViewerPreferences(new PdfViewerPreferences().setDisplayDocTitle(true));
//Set meta tags
PdfDocumentInfo pdfMetaData = pdfDoc.getDocumentInfo();
pdfMetaData.setAuthor("Joris Schellekens");
pdfMetaData.addCreationDate();
pdfMetaData.getProducer();
pdfMetaData.setCreator("JS");
pdfMetaData.setKeywords("example, accessibility");
pdfMetaData.setSubject("PDF accessibility");
//Title is derived from html
// pdf conversion
ConverterProperties props = new ConverterProperties();
FontProvider fp = new FontProvider();
fp.addStandardPdfFonts();
fp.addDirectory(resources);//The noto-nashk font file (.ttf extension) is placed in the resources
props.setFontProvider(fp);
props.setBaseUri(resources);
//Setup custom tagworker factory for better tagging of headers
DefaultTagWorkerFactory tagWorkerFactory = new AccessibilityTagWorkerFactory();
props.setTagWorkerFactory(tagWorkerFactory);
HtmlConverter.convertToPdf(new FileInputStream(src), pdfDoc, props);
pdfDoc.close();
} catch (Exception e) {
e.printStackTrace();
}
}
这里最相关的行是
HtmlConverter.convertToPdf(new FileInputStream(src), pdfDoc, props);
从本质pdfHTML
,这告诉pdfHTML
执行inputstream的转换(由src指定),将内容放入pdfDoc
并使用给定的ConverterProperties
(由props
指定)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.