我想在pdf中更改一些HTML.我的所有HTML都是HTML字符串,但我不知道如何正确传递它iTextSharp.
public void PDF()
{
// Create a doc object
var doc = new doc(PageSize.A4, 50, 50, 25, 25);
// Create a new PdfWrite object, writing the output to the file ~/PDFTemplate/SimpleFormFieldDemo.pdf
var output = new FileStream(Server.MapPath("t.pdf"), FileMode.Create);
var writer = PdfWriter.GetInstance(doc, output);
// Open the doc for writing
doc.Open();
//Add Wallpaper image to the pdf
var Wallpaper = iTextSharp.text.Image.GetInstance(Server.MapPath("hfc.png"));
Wallpaper.SetAbsolutePosition(0, 0);
Wallpaper.ScaleAbsolute(600, 840);
doc.Add(Wallpaper);
iTextSharp.text.html.simpleparser.HTMLWorker hw = new iTextSharp.text.html.simpleparser.HTMLWorker(doc);
StyleSheet css = new StyleSheet();
css.LoadTagStyle("body", "face", "Garamond");
css.LoadTagStyle("body", "encoding", "Identity-H");
css.LoadTagStyle("body", "size", "12pt");
hw.Parse(new StringReader(HTML));
doc.Close();
Response.Redirect("t.pdf");
}
Run Code Online (Sandbox Code Playgroud)
如果有人知道如何使这项工作..这是好的.谢谢Dom
请下载StackOverflow上的最佳iText问题.这是一本免费的电子书,你将从中受益.
下载完之后,请转到标题为"解析XML和XHTML"的部分.
请允许我引用这个问题的答案:RowSpan在iTextSharp中不起作用?
您正在使用
HTMLWorker而不是XML Worker,并且您是对的:HTMLWorker不支持CSS.说CSS在iTextSharp中不起作用是错误的.它在您使用时不起作用HTMLWorker,但是有记录:您需要的CSS在XML Worker中工作.
请丢弃您的代码,然后使用XML Worker重新开始.
书中有很多例子(简单的和复杂的例子).我只给你一个:
using (var fsOut = new FileStream(outputFile, FileMode.Create, FileAccess.Write))
using (var stringReader = new StringReader(result))
{
var document = new Document();
var pdfWriter = PdfWriter.GetInstance(document, fsOut);
pdfWriter.InitialLeading = 12.5f;
document.Open();
var xmlWorkerHelper = XMLWorkerHelper.GetInstance();
var cssResolver = new StyleAttrCSSResolver();
var xmlWorkerFontProvider = new XMLWorkerFontProvider();
foreach (string font in fonts)
{
xmlWorkerFontProvider.Register(font);
}
var cssAppliers = new CssAppliersImpl(xmlWorkerFontProvider);
var htmlContext = new HtmlPipelineContext(cssAppliers);
htmlContext.SetTagFactory(Tags.GetHtmlTagProcessorFactory());
PdfWriterPipeline pdfWriterPipeline = new PdfWriterPipeline(document, pdfWriter);
HtmlPipeline htmlPipeline = new HtmlPipeline(htmlContext, pdfWriterPipeline);
CssResolverPipeline cssResolverPipeline = new CssResolverPipeline(cssResolver, htmlPipeline);
XMLWorker xmlWorker = new XMLWorker(cssResolverPipeline, true);
XMLParser xmlParser = new XMLParser(xmlWorker);
xmlParser.Parse(stringReader);
document.Close();
}
}
Run Code Online (Sandbox Code Playgroud)
(来源:iTextSharp XmlWorker:从右到左)
如果您想要一个更简单的示例,请查看以下问题的答案:
将HTML字符串和CSS字符串解析为iText(Sharp)元素列表的代码非常简单:
ElementList list = XMLWorkerHelper.parseToElementList(html, css);
Run Code Online (Sandbox Code Playgroud)
您可以在iText官方网站上找到更多示例.
| 归档时间: |
|
| 查看次数: |
7528 次 |
| 最近记录: |