我正在尝试从ASP.NET MVC 2应用程序动态生成和打印Avery标签。标签将限制在大约5个左右的不同模板中。我想知道这样做的最佳方法是什么?标签对我们的应用至关重要,因此,我们需要尽可能减少打印错误。
我听说我可以使用kludgey方法制作HTML模板,但是会出现很多打印错误。我遇到的更好的方法是打印到PDF。这种方法是否存在任何缺陷,实施起来有多难?我还会这样做吗? 有没有人知道任何能够处理这项功能的API或第三方软件?
答案 0 :(得分:4)
由于浏览器的打印行为不一致,我也在努力使用HTML / CSS方法。
我创建了一个C#库,用ASP.NET生成PDF格式的Avery Labels,我希望你会发现它很有用:
https://github.com/wheelibin/SharpPDFLabel#readme
您可以在标签上添加图片和文字,并且可以轻松定义更多标签类型。
(我将它用于条形码标签,条形码生成为图像,然后使用此库添加到标签中。)
干杯
答案 1 :(得分:1)
看看CSS Media选项。 http://www.w3.org/TR/CSS2/media.html
基本上,您可以将样式定位到打印机,这可以隐藏页面上所有非必要的guff并执行微调布局选项。
- 更新:有关PDF生成的更多信息:
对于PDF,通常你在服务器上有一个PDF引擎(并且有很多东西),它有一个生成PDF文件的模板,然后这个文件通常通过通用处理程序下载到浏览器。使用服务器上的html模板生成PDF应该可以消除浏览器的不一致性。
http://www.codeproject.com/KB/aspnet/Creating_PDF_documents_in.aspx
我偶然发现了使用Razor View Engine生成PDF的ala MVC的技术,看起来很有希望。
http://www.emphess.net/2010/11/09/create-high-quality-pdfs-with-razor-view-engine-and-latex/
答案 2 :(得分:1)
如果您想在工作表上多次打印相同的内容,Wheelibin的SharpPDFLabel是很好的。如果您需要打印不相同的标签(即表格上的每个标签都有不同的内容),I blogged my MVC / iTextSharp / PDF solution here。
答案 3 :(得分:0)
我会使用iTextSharp创建一个包含所需格式的PDF文件。
这是一个非常流行的开源PDF库,可以在.Net中使用。 http://sourceforge.net/projects/itextsharp/
答案 4 :(得分:0)
如果这是一个Intranet应用程序和少量并发用户,我建议您考虑使用Word Automation。多年来,我已经实现了自动化Word女士的Win32应用程序,Winform和Web应用程序,虽然很多人会批评它的使用,但我个人发现它有它的利基,并且非常有用并且如果管理得当,效果很好。对于打印到标签,一些关键问题将是布局,格式化和分页。使用Word MailMerge的美妙之处在于,您可以使用Word女士设计和测试所有内容。然后,您可以创建模板文件,从自动化角度来看,您需要做的就是:
使用文字自动化的另一个非常好的功能是您能够记录宏并查看代码。因此,例如,如果您不确定如何设置上面的数据源/邮件合并选项,则可以在UI中执行此操作时记录宏。稍后,查看生成的VBA代码并在.NET代码中转换相同的逻辑以实现相同的处理逻辑流程。
以下是一些帮助您入门的信息(基于Word 2003,但对于新版本,对象模型非常相似) http://www.c-sharpcorner.com/UploadFile/amrish_deep/WordAutomation05102007223934PM/WordAutomation.aspx
答案 5 :(得分:0)
关于创建PDF输出问题的问题。经常让我们得到的一件事就是当我们使用条形码时。当我们这样做并生成PDF时,用户有时会打开诸如“缩放到适合页面”的设置,这可能会调整输出大小并导致条形码不可读。
答案 6 :(得分:0)
我相信使用@print css媒体类型声明将是“印记”标签的最佳整体解决方案。将需要进行实验,因为各种打印机和布局细节可能会影响布局,但我正在制定一个现在需要这个并且主要朝着这个方向发展的解决方案。我会尽力跟进,让你知道它的运作情况。我需要设置我们的在线应用程序,在Avery 5392 6-up穿孔徽章上印上名字徽章。
答案 7 :(得分:0)
我想到的一个想法是使用CSS style like this one和库来将HTML转换为服务器上的PDF,以便所有客户端的输出都是一致的。我使用EvoPDF作为后者;这需要钱,但也有免费选择。
答案 8 :(得分:-1)
这可以通过在avery格式的.DOCX文件中操作XML来实现。不需要第三方组件,您可以修改它以适应任何数据源,XML,DataTable等。
有关此信息,请参阅我的博客文章“Printable Avery Labels via ASP.net and Microsoft Word XML”。