Создание чего-то печатаемого в C#

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

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

Какие-либо идеи/совет/мнения?Спасибо!

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

РЕДАКТИРОВАНИЕ 2: После некоторого проигрывания iTextSharp стал выбором для меня. Для любого задающегося вопросом в будущем, вот ссылка на большое и простое учебное руководство: http://www.mikesdotnetting.com/Category/20

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

11
задан David Archer 8 March 2010 в 10:23
поделиться

10 ответов

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

8
ответ дан 3 December 2019 в 07:12
поделиться

В настоящее время мы с большим успехом используем PDFSharp -

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

GDI + или WPF .. .. Все .NET, а не COM или взаимодействие.

Да, и его открытый исходный код. Вот пример кода -

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

3
ответ дан 3 December 2019 в 07:12
поделиться

Как Дэвид Я также рекомендовал I Text Sharp;) С его помощью довольно легко создать PDF-документ;) Я использую его в ASP .NET-проект. У него есть много опций для форматирования файла pdf, в моем примере я использую базовый;) Пример:

    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 ;)
1
ответ дан 3 December 2019 в 07:12
поделиться

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

0
ответ дан 3 December 2019 в 07:12
поделиться

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

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

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

0
ответ дан 3 December 2019 в 07:12
поделиться

Если вы ищете очень простой способ создания документов (возможно, не самый лучший, но, безусловно, простой), вы можете настроить документы Word с закладками и вставлять данные в закладки с помощью кода ], поэтому я предполагаю, что это сработает и для 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;
0
ответ дан 3 December 2019 в 07:12
поделиться

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

4
ответ дан 3 December 2019 в 07:12
поделиться

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

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

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

0
ответ дан 3 December 2019 в 07:12
поделиться

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

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

1
ответ дан 3 December 2019 в 07:12
поделиться

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

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

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

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

0
ответ дан 3 December 2019 в 07:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: