2016-11-15 3 views
0

У меня есть существующий PDF, который имеет это как преобразование последней матрицы:iTextSharp PdfStamper ставит штрих-код в существующий PDF по последней матрицы

д 0,70711 0,70711 -0,70711 0,70711 141,73 274,96 см 1 0 0 1 -141,73 -274,96 см. (который имеет поворот на 45 градусов и некоторый переход).

Я использую PdfStamper для вставки изображения в OverContent (используя метод GetOverContent). Проблема в том, что последнее преобразование устанавливает поворот на 45 градусов, поэтому штрих-код также вращается. И я не могу сбросить эту матрицу. Я даже не могу получить последнюю матрицу преобразования.

Я уже пробовал PdfReaderContentParser, чтобы получить все матрицы и размножить их, чтобы я мог получить инвертированную матрицу для использования ConcatCTM с этой инвертированной матрицей, чтобы снова создать матрицу идентификаторов, но парсер не возвращает все матрицы. Он получает только матрицы для изображений, но не матрицы для текстов.

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

Как вернуть матрицу обратно в личность в существующем PDF? Так что вставленный штрих-код PdfStamper не поворачивается на 45 градусов.

Удовольствия не предлагают установку поворота на 45 градусов для изображения штрих-кода, оно ничего не решает, потому что PDF может иметь или не иметь матрицу вращения в конце.

Мне действительно нужно сбросить матрицу преобразования в матрицу идентичности для OverContent.

Большое спасибо, ребята ...

Edit: Это полное содержание:

д 0,70711 0,70711 -0,70711 0,70711 141,73 274,96 см 1 0 0 1 -141,73 -274,96 см

д BT 141,73 274,96 Td 5 Тр (некоторый текст) Tj ET

В

0,57 мас

BT/F1 20.00 Tf ET

д 1,00000 0,00000 0,00000 1,00000 155,91 246,61 см 1 0 0 1 -155,91 -246,61 см

д BT 155,91 246,61 Td 5 Тр (некоторый текст) Tj ET

Q

ответ

1

У вашего PDF есть проблема синтаксиса. Я вижу оператора «save state» q, но я не вижу оператора «состояния восстановления» Q.

Вместо:

q 0.70711 0.70711 -0.70711 0.70711 141.73 274.96 cm 1 0 0 1 -141.73 -274.96 cm 

Вы должны иметь:

q 0.70711 0.70711 -0.70711 0.70711 141.73 274.96 cm 1 0 0 1 -141.73 -274.96 cm Q 

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

Если вы хотите, чтобы это исправить для этого конкретного PDF, вы можете сделать это:

overContent.SetLiteral(" Q "); 

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

Update:

Вы говорите, что синтаксис кода выглядит следующим образом:

q 0.70711 0.70711 -0.70711 0.70711 141.73 274.96 cm 1 0 0 1 -141.73 -274.96 cm 
q BT 141.73 274.96 Td 5 Tr (some text) Tj ET 
Q 
0.57 w 
BT /F1 20.00 Tf ET 
q 1.00000 0.00000 0.00000 1.00000 155.91 246.61 cm 1 0 0 1 -155.91 -246.61 cm 
q BT 155.91 246.61 Td 5 Tr (some text) Tj ET 
Q 

Этот код является неправильным. Человек, создавший этот PDF-файл, либо использовал дрянной инструмент, либо использовал хороший инструмент очень плохо. Правильный синтаксис будет:

q 0.70711 0.70711 -0.70711 0.70711 141.73 274.96 cm 1 0 0 1 -141.73 -274.96 cm 
BT 141.73 274.96 Td 5 Tr (some text) Tj ET 
Q 
q 0.57 w 
BT /F1 20.00 Tf ET 
q 1.00000 0.00000 0.00000 1.00000 155.91 246.61 cm 1 0 0 1 -155.91 -246.61 cm 
BT 155.91 246.61 Td 5 Tr (some text) Tj ET 
Q 
Q 

Вы можете решить эту проблему следующим образом:

q 0.70711 0.70711 -0.70711 0.70711 141.73 274.96 cm 1 0 0 1 -141.73 -274.96 cm 
q BT 141.73 274.96 Td 5 Tr (some text) Tj ET 
Q 
0.57 w 
BT /F1 20.00 Tf ET 
q 1.00000 0.00000 0.00000 1.00000 155.91 246.61 cm 1 0 0 1 -155.91 -246.61 cm 
q BT 155.91 246.61 Td 5 Tr (some text) Tj ET 
Q 
Q 
Q 

Теперь q/Q последовательности сбалансированы. Я добавляю номера, чтобы показать вам, какие q соответствует, с которой Q:

q[1] 0.70711 0.70711 -0.70711 0.70711 141.73 274.96 cm 1 0 0 1 -141.73 -274.96 cm 
q[2] BT 141.73 274.96 Td 5 Tr (some text) Tj ET 
Q[2] 
0.57 w 
BT /F1 20.00 Tf ET 
q[3] 1.00000 0.00000 0.00000 1.00000 155.91 246.61 cm 1 0 0 1 -155.91 -246.61 cm 
q[4] BT 155.91 246.61 Td 5 Tr (some text) Tj ET 
Q[4] 
Q[3] 
Q[1] 

Этот синтаксис является неправильным (очевидно), но цифры показывают, почему существует два Q заявления отсутствуют.

+0

За этой линией находится оператор «Q». – Zelda

+0

Я не вижу этого в вашем вопросе (следовательно, ваш вопрос вводит в заблуждение). Более того, поведение, которое вы описываете, также говорит мне, что отсутствует 'Q'. Обратите внимание, что последовательности 'q' /' Q' могут быть вложенными. Возможно, вы смотрите на неправильный 'Q'. В любом случае: ваша проблема не может быть воспроизведена, поэтому вы, вероятно, должны поделиться PDF, который демонстрирует это поведение. –

+0

Если бы я мог, я бы поделился ею, но это конфиденциально. Он содержит конфиденциальные данные нашего клиента. Я отредактировал мой вопрос. – Zelda

Смежные вопросы