2016-03-12 2 views
0

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

То, что я пытался до сих пор:

     // Open the file 
        PdfDocument inputDocument = PdfReader.Open(filename, PdfDocumentOpenMode.Import);// PdfReader.Open(filename, PdfDocumentOpenMode.Modify); 

        PdfDocument newContainerDocument = new PdfDocument(); 

        // Create an empty page or load existing 
        for (int idx = 0; idx < inputDocument.PageCount; idx++) 
        { 
         PdfPage page = new PdfPage(); //this should be the actual container 
         page.Width = tempWidth; 
         page.Height = tempHeight; 

         //gfx.DrawImage(image, (page.Width/2) - (width/2), (page.Height/2) - (height/2), width, height); //put it in the middle of the container, this would only work with IMAGES ... using "XGraphics" 

         // Add the page and save it 
         newContainerDocument.AddPage(inputDocument.Pages[idx]); 

        } 

        newContainerDocument.Save(String.Format("{0} - Page {1}_expandedFile.pdf", insertName,DateTime.Now.Ticks.ToString())); 

        inputDocument.Close(); 
        newContainerDocument.Close(); 

Но я получаю:

Документ не может быть изменен

Что здесь не так?

Спасибо

+0

не ответ на ваш вопрос , но вам не нужно копировать страницу, чтобы «увеличить» ее. Что вам нужно сделать, это увеличить медиа-страницу страницы. Это даст вам более крупный лист, в то время как ваш контент останется одного и того же размера, и, следовательно, предоставит вам пробелы, которые вы можете заполнить дополнительным контентом. –

ответ

0

PdfDocumentOpenMode.Import для импорта, что позволяет копировать страницы в новый файл. PdfDocumentOpenMode.Modify предназначен для внесения изменений.

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

Ваш код может работать с Clone():
newContainerDocument.AddPage((PdfPage)inputDocument.Pages[idx].Clone());

Я хотел бы создать новую страницу и сделать существующую страницу на этой странице, так как этот пример делает:
http://pdfsharp.net/wiki/TwoPagesOnOne-sample.ashx

+0

Я получаю «Элемент с тем же ключом уже добавлен» – JoeTheRock

+0

Просьба предоставить MCVE, если вы считаете, что ошибка должна быть исследована. http://stackoverflow.com/help/mcve –

+0

Привет, я использую свой фрагмент кода и заменяю 'newContainerDocument.AddPage (inputDocument.Pages [idx]);' с 'newContainerDocument.AddPage ((PdfPage) inputDocument.Pages [idx] .Clone()) ' – JoeTheRock

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