创建可在C#中打印的内容

时间:2010-02-26 13:21:29

标签: c# pdf printing pdf-generation itextsharp

只是想知道是否有人能告诉我一种创建打印文件的简单方法?目前我只是编写HTML脚本,但我想知道是否有一些更简单的方法可以让我更好地控制它的打印内容? Access打印输出或Excel打印输出的东西 - 在那里我可以决定如何布局,并且几乎通过编程“邮件合并”细节。

基本上,我想创建一些可以包含表的打印内容,并且根据外键的数量,每个记录可以更长或更短(例如,一个工作人员今天可以有10个工作,或者只有3个工作。我想创建一个将生成并打印的文档。

任何想法/建议/意见?谢谢!

编辑:哇,谢谢所有的回复!对于这个特殊的任务,FlowDocuments似乎是最接近我实际上的,所以我会玩它。无论哪种方式,我现在有几个非常好的选择。

编辑2:经过一段时间的游戏,iTextSharp已成为我的选择。对于任何想知道未来的人来说,这里有一个非常简单的教程链接:http://www.mikesdotnetting.com/Category/20

再次感谢!

10 个答案:

答案 0 :(得分:8)

我会创建一个PDF文件,几乎可以在任何地方查看,并保持格式化。看看这里:http://itextsharp.sourceforge.net/

答案 1 :(得分:4)

总有FlowDocuments。查看MSDN的概述 http://msdn.microsoft.com/en-us/library/aa970909.aspx并查看它们是否符合您的要求。它们非常容易打印,可以序列化为xaml。可能不完全是你想要的,但它们非常有用。

答案 2 :(得分:3)

我们目前正在使用PDFSharp取得巨大成功 -

http://www.pdfsharp.com/PDFsharp/

GDI +或WPF ...所有.NET,而不是COM或互操作。

哦,它的开源。这是一些示例代码 -

http://www.pdfsharp.net/wiki/PDFsharpSamples.ashx

答案 3 :(得分:1)

如果您使用PDF或XPS生成器,它仍然需要您定义文档组成非常类似于编写HTML脚本,所以我没有看到它为您提供了除创建文件以打印就绪格式之外的更多值。

您需要的是可以设计模板并填写空白的内容,因此我建议您选择Word或Excel自动化,否则请查看一些轻量级报表生成库。我遇到过这个,也许值得一试。 http://www.fyireporting.com/

答案 4 :(得分:1)

David 我也推荐I Text Sharp;)使用它创建pdf文档非常容易;)我在ASP.NET项目中使用它。它有很多选项来格式化pdf文件,在我的例子中我使用basic;) 例如:

    string file = @"d:\print.pdf";  //path to pdf file
    Document myDocument = new Document(PageSize.A4.Rotate());        
    PdfWriter.GetInstance(myDocument, new FileStream(file, FileMode.Create));
    myDocument.Open();
    //data to save in pdf- unimportant!
    Opiekun obiekun = (from opiekunTmp in db.Opiekuns where opiekunTmp.idOpiekun == nalez.Dziecko.idOpiekun select opiekunTmp).SingleOrDefault();
    Dziecko dzieckoZap = (from dzieckoTmp in db.Dzieckos where dzieckoTmp.idDziecko == nalez.idDziecko select dzieckoTmp).SingleOrDefault();
    //some info about font
    BaseFont times = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1250, BaseFont.EMBEDDED);
    Font font = new Font(times, 12);
    myDocument.Add(new Paragraph("--------------------------Raport opłaty--------------------------",font));
    myDocument.Add(new Paragraph("Data rozliczenia: " + (((TextBox)this.GridViewOplaty.Rows[e.RowIndex].Cells[8].Controls[0]).Text), font));
    myDocument.Add(new Paragraph("Płatnik: " + obiekun.Imie + " " + obiekun.Nazwisko, font));
    myDocument.Add(new Paragraph("Dziecko: " + dzieckoZap.Imie + " " + dzieckoZap.Nazwisko, font));
    myDocument.Add(new Paragraph(""));
    myDocument.Add(new Paragraph("Data             Podpis płatnika: " + obiekun.Imie + " " + obiekun.Nazwisko, font));
    myDocument.Add(new Paragraph(""));
    myDocument.Add(new Paragraph("  ...........       ................................."));
    myDocument.Close(); //we close the pdf and open
    System.Diagnostics.Process.Start(file); //and open our file if You want that ;)

答案 5 :(得分:0)

如果您正在寻找一种非常简单的方法来创建文档(问题不是最好的,但确实很容易),您可以使用书签设置Word文档并将数据插入书签through code,这样我猜这也适用于Excel(如果他们有书签?):

编辑:以下是对c#的快速翻译(已在vb中测试,但未在c#中测试):

Word.Application oWord = default(Word.Application);
Word.Document oDoc = default(Word.Document);

oWord = Interaction.CreateObject("Word.Application");
oWord.Visible = false;

oDoc = oWord.Documents.Add(Directory + "\\MyDocument.dot");

oDoc.Bookmarks("MyBookmark").Range.Text = strBookmark;

oDoc.PrintOut();
oDoc.Close(Word.WdSaveOptions.wdDoNotSaveChanges);
oDoc = null;
oWord.Application.Quit();
oWord = null;

答案 6 :(得分:0)

XPS是MSFT打印结构化和格式化文档的解决方案。我不是说派人去购买XPS,只是为了通过XPS框架使用.NET支持进行打印。

http://roecode.wordpress.com/2007/12/21/using-flowdocument-xaml-to-print-xps-documents/

如果你正在做WPF,这很容易做到。基本上XPS是MSFT的PDF。任何运行Vista或7的人都可以查看/打印它们。

答案 7 :(得分:0)

我使用Excel XML格式从网站创建了打印输出。基本上这意味着您不必使用Office API来生成文档(这可能很麻烦,并且需要Web服务器上的额外库)。相反,您可以只使用XML模板,使用XPath,LINQ to XML或其他技术将数据插入模板,然后将其流式传输给用户,然后他们就可以打印出来。

生成模板很简单。您只需使用Excel创建文档,然后将其保存为“XML电子表格”格式。 XML有点压抑,但并不可怕。

XML电子表格格式的文档如下:
http://msdn.microsoft.com/en-us/library/aa140066%28office.10%29.aspx

请注意,该文档适用于Excel 2002.格式在较新版本的Excel中会发生变化,但它向后兼容。

答案 8 :(得分:0)

我们使用ActiveReports。定义您的布局非常容易,可以打印和导出多种格式,pdf,rtf,excel,tiff等。

答案 9 :(得分:0)

过去我已经完成了pdf生成这个词,pdfsharp(@Kris)对pdf生成的支持非常好,我会在办公自动化之前使用它。

我希望我不会错误地阅读您的需求,而不是以特定格式导出然后触发打印功能,我现在会重新考虑普通的旧浏览器打印。在过去,浏览器打印的可怕局限意味着打印是一种糟糕的体验(没有缩小到适合等)。但现代浏览器有足够的打印支持,可以接受简单的工作。

我刚刚检查了在Firefox 3.5.8和IE8中打印此页面,并且都支持缩小版本,我认为简单的打印样式表会直接在浏览器中生成漂亮的工作表,只要你的(大概是这样的)内部)观众保证拥有现代浏览器。