我使用HTML富文本編輯器來幫助我建立了動態PDF報告模板,它的正常工作,只是它不改變字體 - 在HTML中字型無變化爲PDF生成面對。使用iTextSharp的
該編輯器使用字體標籤而不是CSS樣式,我歡迎任何以編程方式更改字體標籤使用的樣式,而不是等同的標籤。
HTML(是它的凌亂,它從一個所見即所得的編輯器):
<div>
<br>
<div align="center">
<font size="5">
<b>
<br>
<div align="center">
<font font-face="Times New Roman" size="5">
<b>Example
<font size="6">Chamber
<font size="5">
<font size="4">Website</font>
</font></font>Quotes</b>
</font>
<font face="Times New Roman">
<br>
<font face="Times New Roman">
<br>~
<font face="Times New Roman" color="#0000FF">
<b>
<u> [!PlanName] </u></b>
</font>
<font face="Times New Roman">
<br>~
<font face="Times New Roman" color="#0000FF">
<b> </b>
</font>
<font face="Times New Roman" color="#0000FF">
<b>
<font color="#000000">Deductible
$[!PlanDeductible]: </font></b>
</font>
<font face="Times New Roman" color="#B0B0FF">
[!PlanRate]
<br>
<font face="Times New Roman">/~/~</font>
<br>
<br>
<br>
<font face="Courier New" size="1">
Copyright Example.com</font>
<br>
<br>
<font face="Arial">test</font>
<br></br>
</br>
</br>
</br>
</br>
</br>
</br></font></br>
</font></br>
</font>
</br>
</font>
</div>
</br>
</b>
</font>
</div>
</br></div>
C#:
public static byte[] ConvertHtmlToPdf(string html)
{
html = HtmlPostProcessor.Process(html);
byte[] fileData = null;
string tempPath = ConfigurationManager.AppSettings["TempDirectory"];
string tempPDFFile = Path.Combine(tempPath, Guid.NewGuid() + ".pdf");
Document document = new Document(PageSize.LETTER, 50, 50, 50, 50);
using (FileStream fs = new FileStream(tempPDFFile, FileMode.Create))
{
PdfWriter.GetInstance(document, fs);
using (StringReader stringReader = new StringReader(html))
{
List<IElement> parsedList = HTMLWorker.ParseToList(stringReader, null);
document.Open();
foreach (IElement item in parsedList)
{
document.Add(item);
}
document.Close();
}
}
FileStream generatedPDF = File.Open(tempPDFFile, FileMode.Open);
fileData = new byte[(int)generatedPDF.Length];
int result = generatedPDF.Read(fileData, 0, (int)generatedPDF.Length);
generatedPDF.Close();
File.Delete(tempPDFFile);
return fileData;
}
編輯
我一直在使用iTextSharp的版本5.1.1.0 。
有AW只註冊幾種字體?說8個網頁字體? – capn
此外,插入線FontFactory.RegisterDirectories()HTMLWorker.ParseToList前右()並沒有這樣做,除了讓它慢的事情,但我會查看您鏈接到更多的明天那個文件。謝謝! – capn
您使用的是哪個版本?我在你的例子中使用HTML測試5.1.3,它工作。 [結果PDF文件在這裏](http://goo.gl/Tv242)。在打開「Document」對象之前,您可能希望將調用插入'FontFactory.RegisterDirectories()',對不起。我會試着看看我能否拿出一個例子來在今天/明天晚些時候註冊一定數量的字體。 – kuujinbo