Подтвердить что ты не робот

Создание чего-то, что можно печатать на С#

Просто интересно, может ли кто-нибудь рассказать мне о простом способе создания файлов для печати? На данный момент я просто пишу HTML-код, но мне интересно, не существует ли более простой способ сделать это, чтобы дать мне больше контроля над тем, что он печатается? Что-то похожее на распечатку Access или распечатку Excel - где я мог бы решить, как проложить вещи и почти "Слить почту" с деталями через программирование.

В принципе, я хочу создать что-то для печати, у которого могут быть таблицы, облегающие его, и может быть длиннее или короче для каждой записи в зависимости от количества внешних ключей (например, один сотрудник может иметь 10 заданий сегодня или всего 3. Я хочу создать документ, который будет генерировать и печатать).

Любые идеи/советы/мнения? Спасибо!

EDIT: Вау, спасибо за все ответы! Для этой конкретной задачи FlowDocuments, кажется, ближе всего к тому, что я на самом деле после этого, поэтому я буду играть с этим. В любом случае у меня есть несколько действительно хороших вариантов.

EDIT 2: После некоторых игр iTextSharp стал для меня выбором. Для любого, кто задается вопросом в будущем, вот ссылка на большой и простой учебник: http://www.mikesdotnetting.com/Category/20

Еще раз спасибо!

4b9b3361

Ответ 1

Я бы создал PDF файл, который можно просматривать где угодно и будет поддерживать форматирование. Посмотрите здесь: http://itextsharp.sourceforge.net/

Ответ 2

Всегда есть FlowDocuments. Ознакомьтесь с обзором в MSDN http://msdn.microsoft.com/en-us/library/aa970909.aspx и посмотреть, соответствуют ли они тем, что вы хотите сделать. Они довольно легко печатаются и могут быть сериализованы в xaml. Возможно, это не то, что вам нужно, но они очень полезны.

Ответ 4

Если вы используете генератор PDF или XPS, вам по-прежнему требуется определить состав документа, очень похожий на сценарий вашего HTML, поэтому я не вижу, что он дает вам гораздо больше значений, кроме созданного файла, в готовом для печати формате.

То, что вам нужно, - это то, что вы можете создать шаблон и просто заполнить пробел, поэтому я предлагаю вам либо перейти на автоматизацию Word или Excel, либо посмотреть на небольшую библиотеку генерации отчетов. Я сталкиваюсь с этим, и, возможно, стоит проверить. http://www.fyireporting.com/

Ответ 5

Как Дэвид, я также рекомендовал я 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 ;)

Ответ 6

Если вы ищете очень простой способ создания документов (не самое лучшее, но это легко), вы можете настроить документы Word с закладками и вставить данные в закладки через код, поэтому я предполагаю, что это тоже будет работать для Excel (если у них есть закладки?):

EDIT: Здесь быстрый перевод на С# (был протестирован в vb, но не С#):

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;

Ответ 7

XPS - это решение MSFT для печати структурированных и отформатированных документов. Я не говорю, чтобы отправить кому-то XPS, просто чтобы использовать поддержку .NET для печати через инфраструктуру XPS.

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

Это очень легко сделать, если вы делаете WPF. По сути, XPS является MSFT PDF. Любой, кто работает с Vista или 7, может просматривать/распечатывать их отлично.

Ответ 8

Я создал распечатки с веб-сайтов с использованием формата Excel XML. В основном это означает, что вам не нужно использовать API Office для создания документа (который может быть громоздким и требует дополнительных библиотек на веб-сервере). Вместо этого вы можете просто взять XML-шаблон, использовать XPath, LINQ to XML или другие технологии для вставки ваших данных в шаблон, а затем передать его пользователю и распечатать его.

Создание шаблона очень просто. Вы просто используете Excel для создания документа, а затем сохраните его в формате XML Spreadsheet. XML немного угнетает, но это не страшно.

Документация в формате XML-таблицы находится здесь:
http://msdn.microsoft.com/en-us/library/aa140066%28office.10%29.aspx

Обратите внимание, что документация предназначена для Excel 2002. Формат изменяется в новых версиях Excel, но он совместим с обратными.

Ответ 9

Мы используем ActiveReports. Это очень легко определить ваш макет и может печатать и экспортировать в нескольких форматах, pdf, rtf, excel, tiff и т.д.

Ответ 10

В прошлом я делал слова и идеи для генерации PDF файлов, а поддержка для создания pdf файлов в pdfsharp (@Kris) довольно хороша, и я буду использовать его раньше автоматизации офиса.

Надеюсь, что я не неправильно читал ваши потребности, а вместо того, чтобы экспортировать в определенном формате, а затем уволил функцию печати, я бы в эти дни пересматривал простую старую печать в браузере. Раньше ужасные ограничения печати в браузере означали, что печать была плохим опытом (без усадки и т.д.). Но современные браузеры имеют достаточную поддержку печати, чтобы быть приемлемыми для простых заданий.

Я только что проверил печать этой страницы в Firefox 3.5.8 и IE8, и обе поддерживают сжатие в соответствии с требованиями, и я считаю, что простая таблица стилей печати будет создавать красивые рабочие листы прямо из браузера, если вы (предположительно внутренней) аудитории гарантированно иметь современный браузер.