Proximus Seraphim Dimitri Daviticus Ответов: 3

Как масштабировать PDF-файл от юридического до буквенного?


Я использую vb.net чтобы разделить pdf-файл, а затем объединить их соответствующим образом по заголовкам.

Мой код работает нормально, за исключением того, что иногда оригинальные PDF-файлы имеют страницы, которые находятся в легальном формате.

В конце моего кода все разделяется/объединяется соответственно, и формат остается в такте. Мой вопрос заключается в том, есть ли способ в рамках разделения или слияния автоматически масштабировать PDF-файлы легального размера в письмо?

Что я уже пробовал:

Я попытался с помощью этого, но мой PDF-документов, PDF-файлов и изображений не:

PdfReader reader = new PdfReader(pdfData);
                logInfo.DebugFormat("Converting to a4 page size");
                Document document = null;
                if (isPortrait)
                {
                    document = new Document(PageSize.A4);
                }
                else
                {
                    //create a4 landscape
                    document = new Document(PageSize.A4.Rotate());
                }
                PdfWriter writer = PdfWriter.GetInstance(document, outputData);
                writer.CloseStream = false;
                document.Open();
                //copy the page from the source pdf
                PdfContentByte directcontent = writer.DirectContent;
                PdfImportedPage page = writer.GetImportedPage(reader, 1);
                iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance(page);
                //center the certificate
                if (isPortrait)
                {
                    image.SetAbsolutePosition(-9, 25);
                }
                else
                {
                    image.SetAbsolutePosition(25, -9);
                }
                directcontent.AddImage(image);
                document.NewPage();
                document.Close();
                reader.Close();

Richard MacCutchan

Это зависит от того, как форматируется исходный код. Если Вы читаете страницы, которые были созданы в определенном размере, то вам нужно будет воссоздать их в новом размере. Это означает, что вам нужно проверить объем информации, которую вы копируете на каждую новую страницу.

Proximus Seraphim Dimitri Daviticus

Эй, Ричард, я тут подумала ... и, может быть, это притянуто за уши. Но до создания нового pdf-файла или его копирования не может быть какого-то способа написания

Если document.pagesize <> itextsharp.text.pagesize.Тогда письмо
код здесь
конец, если

?- Или это слишком широко? Мои pdf-файлы разделены на 5 различных заголовков. Заголовок, в частности, который имеет юридические документы, называется экспонатами. Так что я буду знать, что мне придется иметь дело только с этим конкретным заголовком. Нет ли способа сжать юридический документ в письмо?

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

Richard MacCutchan

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

3 Ответов

Рейтинг:
2

Prasad Nikumbh

Try this code.

string original = args[0];

            string inPDF = original;
            string outPDF = Directory.GetDirectoryRoot(original) + "temp.pdf";
            PdfReader pdfr = new PdfReader(inPDF);

            Document doc = new Document(PageSize.LETTER);
            Document.Compress = true;

            PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(outPDF, FileMode.Create));
            doc.Open();

            PdfContentByte cb = writer.DirectContent;

            PdfImportedPage page;

            for (int i = 1; i < pdfr.NumberOfPages + 1; i++)
            {
                page = writer.GetImportedPage(pdfr, i);
                cb.AddTemplate(page, PageSize.LETTER.Width / pdfr.GetPageSize(i).Width, 0, 0, PageSize.LETTER.Height / pdfr.GetPageSize(i).Height, 0, 0);
                doc.NewPage();
            }

            doc.Close();

            //just renaming, conversion / resize process ends at doc.close() above
            File.Delete(original);
           File.Copy(outPDF, original);


Рейтинг:
1

Gerry Schmitz

"Масштабирование" подразумевает (также) изменение размера шрифта.

Если вы имеете дело с реальным "pdf-кодом", то измените семейство шрифтов и / или размер шрифта и идите оттуда.

Вынимайте оправдание, вынимайте / укорачивайте разделители и т. д.


Рейтинг:
1

Maciej Los

Если вы используете iTextSharp библиотека, затем проверьте принятый ответ: Как установить пользовательский размер страницы pdf в itextsharp[^]