2009-05-14 6 views
1
.

. Я работаю с iTextSharp и .NET 3.5 SP1 (в C#, как вы можете догадаться) и модифицировать некоторые существующие PDF-файлы, используя класс PdfStamper. Теперь у меня есть две проблемы: (? Постскриптум)Проблема с системой координат и смещением. Текст в разных PDF-файлах с использованием iTextSharp.

Трансформация системы координат

Как я это вижу, iTextSharp использует точки в качестве единицы измерения, но я хотел бы, чтобы преобразовать эти координаты миллиметр. Теперь, как наилучшим образом достичь этого?

Взглянув в документации показал следующий подход:

PdfContentByte cb = new PdfContentByte(); 
System.Drawing.Drawing2D.Matrix scale = new System.Drawing.Drawing2D.Matrix(
    0.352777778, 0, 0.352777778, 0, 0, 0); // 1 point = 0.352777778 mm 
cb.Transform(scale); 

Я надеюсь, что я получил матрицу преобразования права. Но проблема в том, что нет System.Drawing.Drawing2D Сборка! Неужели эта сборка упала или что с ней случилось? Что я могу сделать, чтобы преобразовать координаты iTextSharp в миллиметр. Я здесь не так?

Текста в формате PDF получает смещен в другом формате PDF, используя те же координаты

я заметил, что при изменении два различных PDF файлов с же содержанием, что одни и те же координаты получили смещены и текст не размещается на одинаковых позициях. Что вызывает это и как я могу его предотвратить?

Это первая PDF:

alt text http://i41.tinypic.com/20u5tfc.gif

Это второй PDF, созданный с использованием те же самые координаты в iTextSharp:

alt text http://i44.tinypic.com/2qjzoex.gif

Любая помощь приветствуется.

ответ

1

Но проблема в том, что нет System.Drawing.Drawing2D Assembly! Был эта сборка упала или что случилось ? Что я могу сделать, чтобы преобразовать координаты iTextSharp в в мм. Неужели я ошибаюсь здесь?

http://msdn.microsoft.com/en-us/library/system.drawing.drawing2d.matrix.aspx (в System.Drawing.dll)

+0

Как использовать этот класс? Я уже вставил «using System.Drawing»; , но он все еще не распознает System.Drawing.Drawing2D.Matrix. Я не уверен, что означает «в System.Drawing.dll». Должен ли я включать это каким-то другим способом? –

+0

Вы должны ссылаться на System.Drawing.Dll. В своем проекте найдите папку «Ссылки».Щелкните правой кнопкой мыши, добавьте ссылку, затем через пять минут найдите файл System.Drawing.Dll на первой вкладке. Теперь верните мне 2 балла! – Will

+0

Как только вы ссылаетесь на него, вы можете использовать его так же, как в примере. Они делают преобразования матриц, что не совсем то, что нужно изучать или понимать. Боюсь, вам придется немного почитать, если вы хотите сделать больше, чем демонстрирует пример кода. – Will

0

Хорошо, я решил вторую проблему с текстом вытесняется, несмотря на один и те же координаты используются.

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