Создание файлов PDF во времени выполнения в [закрытом] c#

Использование функции String match() не возвратит захваченные группы, если установлен глобальный модификатор, как вы выяснили.

В этом случае вы хотели бы использовать RegExp и вызвать функцию exec(). String 's match() почти идентичен функции RegExp exec() ... кроме случаев, подобных этим. Если глобальный модификатор установлен, нормальная функция match() не вернет захваченные группы, тогда как функция RegExp exec() будет. (Замечание здесь , среди других мест.)

Еще один улов, который следует помнить, заключается в том, что exec() не возвращает совпадений в одном большом массиве - он продолжает возвращать совпадения до тех пор, пока он не будет запущен , и в этом случае он возвращает null.

Итак, например, вы можете сделать что-то вроде этого:

var pattern = /t(e)(s)t/g;  // Alternatively, "new RegExp('t(e)(s)t', 'g');"
var match;    

while (match = pattern.exec(text)) {
    // Do something with the match (["test", "e", "s"]) here...
}

Еще одно замечание: RegExp.prototype.exec() и RegExp.prototype.test() выполнить регулярное выражение в предоставленной строке и вернуть первый результат. Каждый последовательный вызов будет проходить через обновление набора результатов RegExp.prototype.lastIndex на основе текущей позиции в строке.

Вот пример: // помните, что в примере и шаблоне есть 4 совпадения. lastIndex начинается с 0

pattern.test(text); // pattern.lastIndex = 4
pattern.test(text); // pattern.lastIndex = 9
pattern.exec(text); // pattern.lastIndex = 14
pattern.exec(text); // pattern.lastIndex = 19

// if we were to call pattern.exec(text) again it would return null and reset the pattern.lastIndex to 0
while (var match = pattern.exec(text)) {
    // never gets run because we already traversed the string
    console.log(match);
}

pattern.test(text); // pattern.lastIndex = 4
pattern.test(text); // pattern.lastIndex = 9

// however we can reset the lastIndex and it will give us the ability to traverse the string from the start again or any specific position in the string
pattern.lastIndex = 0;

while (var match = pattern.exec(text)) {
    // outputs all matches
    console.log(match);
}

Вы можете найти информацию о том, как использовать RegExp объекты на MDN (в частности, здесь представлена ​​документация для exec() функция [/ д2]).

82
задан Lonzo 21 January 2009 в 14:03
поделиться

9 ответов

iTextSharp http://itextsharp.sourceforge.net/

, Сложный но всесторонний.

38
ответ дан ine 5 November 2019 в 16:55
поделиться

Ну, свободный и не бесплатно, я использую .NET WebSuperGoo ABCpdf компонент, что я просто люблю его!

не бесплатно , потому что необходимо заплатить за него.

для свободного , потому что, даже если необходимо заплатить, у них есть пробная версия и Вы можете запрашивать бесплатную лицензию , если Вы не возражаете, это, на Вашем шоу сайта "Этот сайт использует компонент.NET WebSuperGoo ABCpdf" со ссылкой на их веб-сайт.

я сделал это, и я получил бесплатную лицензию (версия 5 в то время) так, я могу сказать, что это работает (даже если веб-сайт больше не онлайн) - я все еще имею и использую компонент ~:)

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

4
ответ дан balexandre 5 November 2019 в 16:55
поделиться

Я настоятельно рекомендую: iTextSharp

2
ответ дан Przemek 5 November 2019 в 16:55
поделиться

Я использовал ( iTextSharp) в прошлом с хорошими результатами.

1
ответ дан Knobloch 5 November 2019 в 16:55
поделиться

Я отправил образец того, как использовать iTextSharp в одном из моих блогов:

http://devpinoy.org/blogs/marl/archive/2008/02/14/create-pdf-in-c-2008-a-pdf-sample-app-for-grade-1-pupils.aspx

0
ответ дан MarlonRibunal 5 November 2019 в 16:55
поделиться

Как насчет iTextSharp?

iText является PDF (среди других) библиотека поколения, которая также портирована (и сохранена в синхронизации) к C#.

0
ответ дан Francisco Canedo 5 November 2019 в 16:55
поделиться

Для этого я изучил под управлением ЛАТЕКСНЫЕ приложения для генерации PDF. Хотя эта опция, вероятно, будет намного более сложной и мощной, чем те перечисленные здесь.

0
ответ дан Simon P 5 November 2019 в 16:55
поделиться

Я использовал Gnostice в прошлом и нашел, что они очень хороши.

http://www.gnostice.com/PDFOne_dot_Net.asp

0
ответ дан Khadaji 5 November 2019 в 16:55
поделиться

Взгляните на PDFSharp

, Это - открытый исходный код, и это записано в.NET, я использую его сам для некоторого поколения счета PDF.

31
ответ дан R2D2 5 November 2019 в 16:55
поделиться
Другие вопросы по тегам:

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