我在 iTextSharp 中收到“文档未打开”错误,但仅限于生产环境。该代码在我的开发机器和暂存中运行良好。我在阶段服务器上的 Temp 文件夹中设置了相同的权限。
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");
int num = FontFactory.RegisterDirectory(@"C:\Windows\Fonts");
using (FileStream fs = new FileStream(tempPDFFile, FileMode.Create))
{
using (Document document = new Document(PageSize.LETTER, 50, 50, 50, 50))
{
document.Open();
PdfWriter.GetInstance(document, fs);
using (StringReader stringReader = new StringReader(html))
{
List<IElement> parsedList = HTMLWorker.ParseToList(stringReader, null);
foreach (IElement item in parsedList)
{
document.Add(item);
}
}
}
}
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;
}
确实创建了一个 pdf 文件,所以我知道它过去了
using (FileStream fs = new FileStream(tempPDFFile, FileMode.Create))
至少。
该代码在开发和登台中运行良好,但在生产中会引发错误。关于为什么会这样的任何想法吗?
乍一看没有注意到,但是从上面的代码来看:
document.Open();
PdfWriter.GetInstance(document, fs);
需要颠倒顺序:
PdfWriter.GetInstance(document, fs);
document.Open();
换句话说,您需要PdfWriter
before你尝试打开Document
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)