我已经搜索了关于此主题的300多篇帖子中的大多数帖子,但找不到具体解决此问题的帖子。
我尝试了最简单的文件创建者,结果相同:(来自http://www.codeproject.com/Articles/686994/Create-Read-Advance-PDF-Report-using-iTextSharp-in#1)我在另一篇文章中找到了此链接。
public byte[] generatePublicationCitationReport(List<int> pubIDs)
{
//Step 1: Create a System.IO.FileStream object:
MemoryStream ms = new MemoryStream();
//Step 2: Create a iTextSharp.text.Document object:
Document doc = new Document();
//Step 3: Create a iTextSharp.text.pdf.PdfWriter object. It helps to write the Document to the Specified FileStream:
PdfWriter writer = PdfWriter.GetInstance(doc, ms);
//Step 4: Openning the Document:
doc.Open();
//Step 5: Adding a Paragraph by creating a iTextSharp.text.Paragraph object:
doc.Add(new Paragraph("Hello World"));
//Step 6: Closing the Document:
doc.Close();
return ms.ToArray();
}
修改了代码,略微改变了&#34;文件流&#34; to&#34; memorystream&#34;并将其传递回调用函数以打开文件。
上面的代码生成一个0字节的文件并尝试打开它。当打开失败时,我收到一条错误消息,指示&#34;无法加载PDF文件。&#34;
我尝试从SQL数据库中的数据创建的引文列表中生成PDF文件。我正确地获取数据并可以使用Response.Write显示它。
在我的代码中,我添加一个循环来单独创建每个引文并将其添加到段落中。
iTextSharp.text.Paragraph paragraph1 = new iTextSharp.text.Paragraph();
iTextSharp.text.Paragraph paraCitations = new iTextSharp.text.Paragraph();
iTextSharp.text.Paragraph paragraph3 = new iTextSharp.text.Paragraph();
iTextSharp.text.Chunk chunk1 = new iTextSharp.text.Chunk("Chunky stuff here...");
paragraph1.Add("Paragraph stuff goes here...");
for (int i = 0; i < pubIDs.Count; i++)
{
string pubCitation = createPubCitation(pubIDs[i]);
chunk1.Append(pubCitation);
paraCitations.Add(chunk1);
}
paragraph3.Add("New paragraph - paraCitations - goes here");
doc.Add(paragraph1);
doc.Add(paraCitations);
doc.Add(paragraph3);
doc.Close();
return ms.toArray();
}
有什么建议吗?指针?回答?
谢谢, 鲍勃
这是调用并从程序返回以创建PDF文件并打开它...
pubCitationAsPDF = p.generatePublicationCitationReport(pubIDs);
Response.ClearContent();
Response.ClearHeaders();
Response.ContentType = "application/pdf";
Response.AddHeader("Content-Disposition", "attachment; filename=publicationCitations.pdf");
Response.End();
Response.Flush();
Response.Clear();
答案 0 :(得分:1)
根据评论,您的问题似乎与下载文件的方式和创建文件有关。
您的下载代码不包括将内存流中的字节添加到您的响应中。
将下载代码更改为:
player_cards = cards.shuffle.shift
player_cards = cards.shuffle.pop