iTextSharp - Открытие файла и сохранение PdfDestination и PdfAction - PullRequest
3 голосов
/ 24 октября 2011

Я пытаюсь сделать что-то относительно простое с iTextSharp, но я всегда нахожу это очень запутанным и не могу понять это, не обращаясь за помощью.

У меня есть ситуация, когда сторонний продукт яuse генерирует PDF, но не имеет возможности установить начальные настройки вида (масштабирование, подгонка по ширине и т. д.).

Я нашел некоторый код, который позволит мне сделать это в iTextSharp: -

Developer Barn

Немного не могу понять, как применить это к файлу, который уже существует - это нормально для любых новых файлов или для чего-то другогоЯ создаю в iTextSharp, но не существующий PDF.Есть ли способ сделать это, и как это можно сделать?

Заранее большое спасибо,

Адам

PS - уже нашли ответ на этот вопрос .. StackOverflowне позволит мне закрыть свой вопрос?Кажется немного глупым, но в любом случае сделайте это так -

        PdfReader reader = new PdfReader(new FileStream(fileName, FileMode.Open, FileAccess.Read));
        Rectangle size = reader.GetPageSizeWithRotation(1);

        using (Document document = new Document(size))
        {
            using (PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(Path.Combine(Path.GetDirectoryName(fileName), "Zoom" + Path.GetFileName(fileName)), FileMode.Create, FileAccess.ReadWrite)))
            {
                //open our document
                document.Open();

                PdfContentByte cb = writer.DirectContent;

                //this creates a new destination to send the action to when the document is opened.
                PdfDestination pdfDest = new PdfDestination(PdfDestination.FITH, reader.GetPageSize(1).Top);

                //create a new action to send the document to our new destination.
                PdfAction action = PdfAction.GotoLocalPage(1, pdfDest, writer);

                for (int pageNumber = 1; pageNumber <= reader.NumberOfPages; pageNumber++)
                {
                    //need to change page size for landscape / portrait
                    document.SetPageSize(reader.GetPageSizeWithRotation(pageNumber));

                    document.NewPage();
                    PdfImportedPage page = writer.GetImportedPage(reader, pageNumber);
                    cb.AddTemplate(page, 0, 0);
                }

                //set the page mode
                int PageMode = 0;
                PageMode += PdfWriter.PageLayoutOneColumn;


                //set the open action for our writer object
                writer.SetOpenAction(action);
                writer.ViewerPreferences = PageMode;
                writer.SetFullCompression();

                //finally, close our document
                document.Close();
            }
        }

1 Ответ

3 голосов
/ 24 октября 2011

Я не думаю, что есть функция редактирования сама по себе, ни в iTextSharp, ни в iText.Я думаю, что путь - открыть существующий документ, создать нового писателя, скопировать старый документ в нового писателя, добавляя дополнения, которые вы хотели бы видеть, и переписать исходный документ впоследствии, как описано здесь .

...