cap*_*apn 3 c# itext itextsharp
我在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;
}
Run Code Online (Sandbox Code Playgroud)
一个pdf文件确实被创建了,所以我知道它已经过去了
using (FileStream fs = new FileStream(tempPDFFile, FileMode.Create))
Run Code Online (Sandbox Code Playgroud)
至少.
这段代码在dev和staging中运行得很好,但它会在生产中引发错误.有什么想法可以吗?
kuu*_*nbo 14
乍一看没有注意到,但是从上面的代码中:
Run Code Online (Sandbox Code Playgroud)document.Open(); PdfWriter.GetInstance(document, fs);
订单需要颠倒:
PdfWriter.GetInstance(document, fs);
document.Open();
Run Code Online (Sandbox Code Playgroud)
换句话说,你需要PdfWriter
在尝试之前打开它Document
归档时间: |
|
查看次数: |
7921 次 |
最近记录: |