Повернуть PDF 90 градусов в iTextSharp [дубликат]

Замена Ereg с помощью preg (начиная с PHP 5.3.0) была правильным шагом в нашу пользу.

preg_match, который использует синтаксис регулярных выражений, совместимый с Perl, часто является более быстрой альтернативой ereg.

Вы должны знать 4 основных элемента для отображения шаблонов ereg для preg:

  1. Добавить разделители (/): 'pattern' => '/pattern/'
  2. Разделитель Escape, если он часть шаблона: 'patt/ern' => '/patt\/ern/' Достичь его программно следующим образом: $old_pattern = '<div>.+</div>'; $new_pattern = '/' . addcslashes($old_pattern, '/') . '/';
  3. eregi (нечувствительность к регистру): 'pattern' => '/pattern/i' Итак, если вы используете функцию eregi для случая insenstive matching, просто добавьте 'i' в конец нового шаблона ('/ pattern /').
  4. Значения ASCII: В ereg, если вы используете число в шаблоне, предполагается, что вы ссылаетесь к ASCII персонажа. Но в preg число не рассматривается как значение ASCII. Таким образом, если ваш шаблон содержит значение ASCII в выражении ereg (например: новая строка, табуляции и т. Д.), Преобразуйте его в шестнадцатеричный и префикс с помощью \ x. Example: 9(tab) becomes \x9 or alternatively use \t.
6
задан Casey 19 November 2014 в 16:24
поделиться

1 ответ

Пример Rotate90Degrees использует PdfReader для получения экземпляра документа, а затем изменяет значение /Rotate в каждом словаре страниц. Если такой записи нет, добавляется запись /Rotate со значением 90:

final PdfReader reader = new PdfReader(source);
final int pagesCount = reader.getNumberOfPages();

for (int n = 1; n <= pagesCount; n++) {
    final PdfDictionary page = reader.getPageN(n);
    final PdfNumber rotate = page.getAsNumber(PdfName.ROTATE);
    final int rotation =
            rotate == null ? 90 : (rotate.intValue() + 90) % 360;

    page.put(PdfName.ROTATE, new PdfNumber(rotation));
}

Как только это будет сделано, мы используем PdfStamper для сохранения изменения:

PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
stamper.close();
reader.close();

Это для iText Java. Для iTextSharp перенос Java на C # легко, поскольку терминология идентична. Измените некоторые более низкие случаи на верхние регистры следующим образом:

PdfDictionary page = reader.GetPageN(1);
page.Put(PdfName.ROTATE, new PdfNumber(90));

В части вопроса этого сообщения есть более или менее идентичный фрагмент кода: Как повернуть страницу PDF с помощью iTextSharp, не вызывая ошибки в Ghostscript?

10
ответ дан Community 22 August 2018 в 17:02
поделиться
Другие вопросы по тегам:

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