Черта линии (как и ширина линии, цвета заливки и обводки и многие другие свойства) является частью "графического состояния pdf".
Чтобы вернуть более раннее графическое состояние, PDF-файлы поддерживаютстек графических состояний. Когда текущее состояние - это то, к чему вы хотите вернуться позже, вы помещаете текущее состояние в этот стек. И когда вы хотите вернуться в это состояние, вы извлекаете его из этого стека.
Инструкция для нажатия называется save-state, инструкция для выталкивания восстановленного состояния. Подходящими методами PdfContentByte
являются SaveState()
и RestoreState()
.
Таким образом, начните с contentByte.SaveState()
, затем сделайте свое дело, затем завершите contentByte.RestoreState()
.
Добавьте в сторону, ваш код генерирует инструкции в недопустимом порядке:
contentByte.MoveTo(moveto_x, moveto_y);
contentByte.LineTo(lineto_x, lineto_y);
contentByte.SetLineWidth(lineWidth);
contentByte.SetLineDash(unitsOn, unitsOff, phase);
contentByte.Stroke();
Здесь вы сначала создаете путь, затем устанавливаете ширину линии и штрих, а затем обводите путь. Строго говоря, однако, между созданием пути и его отрисовкой инструкции может быть, самое большее, инструкция для объединения пути с путем клипа, но не более того.
Большинство зрителей PDF не настаивают на этом, поэтому, вероятно, у вас не будет конкретных проблем из-за этого.
Но если ваши PDF-файлы проверены, этот неверный порядок может быть указан как ошибка.
Таким образом, сначала задайте параметры, затем создайте путь и нарисуйте его.
contentByte.SaveState();
contentByte.SetLineWidth(lineWidth);
contentByte.SetLineDash(unitsOn, unitsOff, phase);
contentByte.MoveTo(moveto_x, moveto_y);
contentByte.LineTo(lineto_x, lineto_y);
contentByte.Stroke();
contentByte.RestoreState();