2017-01-05 2 views
0

Я пытаюсь получить все возможные границы страниц из PDF, но когда я спрашиваю за «кровью», я получаю Null значения:Как я могу получить размер коробки для распечатки страницы PDF?

private void button2_Click(object sender, EventArgs e) 
    { 
     string source = @"C:\\Users\\numx\\Desktop\\TestPDF.pdf"; 
     PdfReader reader = new PdfReader(source); 

     iTextSharp.text.Rectangle cropBox = reader.GetCropBox(1); 
     iTextSharp.text.Rectangle mediaBox = reader.GetBoxSize(1, "media"); 
     iTextSharp.text.Rectangle trimBox = reader.GetBoxSize(1, "trim");   
     iTextSharp.text.Rectangle artBox = reader.GetBoxSize(1, "art"); 

     iTextSharp.text.Rectangle bleedBox = reader.GetBoxSize(1, "bleed"); 

     MessageBox.Show(bleedBox.ToString()); 
     reader.Close(); 

    } 
+0

Значение 'bleedBox' равно' null', потому что документ не имеет ячейки для удаления. Покажите нам PDF, чтобы мы могли доказать это утверждение. –

+0

Спасибо, Бруно, что я понимаю, что объект bleedbox не создается, пока не изменит его с помощью пит-стопа ... значение по умолчанию такое же, как cropbox (= Null in itext) – DDWebdev

+0

Нужно ли мне открывать новое сообщение, чтобы спросить (обнаружить Null bleedbox), не возникающая ошибка – DDWebdev

ответ

0

повторит, что мы обсуждали в комментариях.

Когда вы сделаете это:

iTextSharp.text.Rectangle bleedBox = reader.GetBoxSize(1, "bleed"); 

Тогда bleedBox является экземпляром класса Rectangle когда PDF определяет поле стравливания; когда не выбрана коробка для отбора, bleedBox - Null. В последнем случае вы получите исключение, когда вы вызываете метод ToString().

Итак, если вам нужен bleedBox, сначала проверьте, bleedBox - Null. Если это не так, работайте с объектом bleedBox. Если это не так, используйте поле обрезки. Если нет рамки для обрезки, используйте медиа-бокс.

Из всех границ страницы требуется только поле для СМИ. Все другие типы границ страниц являются необязательными.

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