2013-08-08 2 views
1

В Примере PDF является: PDFКак обрезать Pdf с принтером/меток обрезки

Использование Aspose.Pdf для .NET, я пытаюсь обрезать PDF, который имеет пробелы по краям, и принтер/Метки обреза. Мой первый подход заключался в том, чтобы узнать размеры окна «Арт», медиа-бокса, обрезной коробки, рамки обрезки; и попытайтесь выяснить, не содержит ли какое-либо из этих ящиков пробел, поэтому я мог бы просто обрезать это и сохранить как новый PDF.

Однако в этом PDF-файле не установлен ArtBox/TrimBox. Поэтому я не могу использовать этот подход.

My Next, хотя это было вручную обрезать PDF по отношению к отметкам принтера/обрезки по краям. Однако я не могу найти эти элементы внутри PDF с помощью Aspose.

ответ

1

В вашем конкретном случае TrimBox == ArtBox == BleedBox == MediaBox [0 0 1642.5 1035]. Нет CropBox, поэтому вы можете попытаться изменить значения MediaBox, а вместо CropBox - по умолчанию (скажем, с помощью iText).

Я изменил MediaBox немного [72 72 1570,5 963]: enter image description here

+0

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

+0

Ваш файл PDF содержит PrinterMarks, который нарисован как простой сегмент линии (должен быть ** PrinterMark ** для аннотации метки принтера). Поэтому вы не можете идентифицировать их с помощью синтаксического анализа pdf. – stanlyF

1

Ниже Aspose.Pdf для .NET примера будет обрезать PDF и удалить метки принтера.

Aspose.Pdf.Document document = new Aspose.Pdf.Document(dataDir + "bre25419_cover.pdf"); 
//Iterate through All Pages of a PDF Document 
for (int i = 1; i <= document.Pages.Count; i++) 
{ 
    Aspose.Pdf.Rectangle cropBox = document.Pages[i].CropBox; 
    // Crop percentage of width and height 
    double percentageX = 4.4f/100 * cropBox.URX; 
    double percentageY = 6.7f/100 * cropBox.URY; 
    // update page's crop box 
    document.Pages[i].CropBox = new Aspose.Pdf.Rectangle(cropBox.LLX + percentageX, cropBox.LLY + percentageY, cropBox.URX - percentageX, cropBox.URY - percentageY); 

    Console.WriteLine("cropBox.LLX: " + cropBox.LLX + "\ncropBox.LLY: " + cropBox.LLY + "\ncropBox.URX: " + cropBox.URX + "\ncropBox.URY: " + cropBox.URY); 
} 
// save document   
document.Save(dataDir + "bre25419_cover_Output.pdf"); 

Я работаю евангелистом-разработчиком в Aspose.

+0

Спасибо Saqib за ответ. Это работает для одного PDF-документа, но я ищу способ автоматизировать этот процесс для тысяч PDF-файлов с разными полями, поэтому мне нужен способ динамически находить выключенный набор с поля принтера, а затем использовать этот значение, которое я собирал. – Rohit

+0

Есть ли способ найти края меток принтера, а затем назначить координату размера pdf для этих значений? – Rohit

+1

Я обновил код примера, который использует процентное значение вместо фиксированных значений. Пожалуйста, посмотрите, поможет ли это. Идеальное решение - обнаружить 4 черные линии сверху, снизу, левом и правом краях, но для этого потребуется обработка изображений. –