создание PDF с 3D-моделью, аннотациями, изменением размера - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь создать PDF-файл, скопировав 3D-модель из другой, которая установлена ​​в качестве аннотации. Это работает, но я не могу изменить его размер. когда я открываю файл, сначала я получаю правильный размер, но если я нажимаю на любую точку в файле, «аннотация» снова преобразуется. У кого-нибудь есть идеи, как мне сохранить размеры? Я пробовал функцию GetIndirectReference через pdfobject, но безуспешно.

            string src = "C:/1/inp1.pdf";
            string dest = "C:/1/out.pdf";

            PdfDocument pdfDoc = new PdfDocument(new PdfReader(src), new PdfWriter(dest));

            PdfPage firstPage = pdfDoc.GetFirstPage();

            IList<PdfAnnotation> list = firstPage.GetAnnotations();

            foreach (PdfAnnotation pdfAnnotation in list)
            {
                PdfString mmm = pdfAnnotation.GetName();
                PdfString nanan = new PdfString(mmm.GetValue());
                PdfString momo = new PdfString("pdf3dsdk_id_1");

                if (nanan.GetValue() == momo.GetValue())
                {
                    Rectangle rectangle = new Rectangle(20, 20, 200, 200);

                    PdfArray rectBB = new PdfArray(rectangle);

                    pdfAnnotation.SetRectangle(rectBB);

                    PdfArray recA = pdfAnnotation.GetRectangle(); //to proof..

                    //pdfDoc.AddNewPage().AddAnnotation(pdfAnnotation);

                    PdfObject obj1 = pdfAnnotation.GetPdfObject();
                    obj1.GetIndirectReference(); //not working

                }

            }

            //onother way, but simply the same iussue..
            //     PdfDictionary page = pdfDoc.GetFirstPage().GetPdfObject(); 
            //    PdfArray annots = page.GetAsArray(PdfName.Annots);
            //    PdfDictionary sticky = annots.GetAsDictionary(1);
            //    PdfArray stickyRect = sticky.GetAsArray(PdfName.Rect);


            //    PdfArray stickyRectangle = new PdfArray(new float[] {
            //        stickyRect.GetAsNumber(0).FloatValue() +120 , stickyRect.GetAsNumber(1).FloatValue(),
            //        stickyRect.GetAsNumber(2).FloatValue() +50, stickyRect.GetAsNumber(3).FloatValue() - 30
            //});
            //sticky.Put(PdfName.Rect, stickyRectangle);

            pdfDoc.Close();

Файл с моделью: https://drive.google.com/file/d/1fcmglAnjtgQKHyW6qajEFkT_O89hOWu3/view?usp=sharing

Вывод перед нажатием:

enter image description here

Кто-нибудь может мне помочь?

...