Как установить начальные свойства вида при добавлении u3d в pdf с использованием itext7

Я добавил изображение u3d в pdf (согласно этому примеру), обнаружил, что изображение u3d добавлено в pdf, но когда я открываю pdf с помощью Acrobat, я не вижу его напрямую (пустой блок, но меню 3D). щелкните правой кнопкой мыши на пустом блоке и выберите "Параметры детали" - "Подогнать видимый", чтобы он появился. Если я использую пример teapot.u3d, он работает (откройте, затем посмотрите). Является ли мой файл u3d слишком большим (от 3 до 7 МБ), но файл teapot.u3d только 141 КБ.

Вот пример кода, который я использую:

    public void manipulatePdf(String dest) {
    PdfDocument pdfDoc = new PdfDocument(new PdfWriter(dest));

    Document doc = new Document(pdfDoc);
    Rectangle rect = new Rectangle(100, 400, 400, 400);

    PdfStream stream3D = new PdfStream(pdfDoc, new FileInputStream(RESOURCE));
    stream3D.Put(PdfName.Type, new PdfName("3D"));
    stream3D.Put(PdfName.Subtype, new PdfName("U3D"));
    stream3D.SetCompressionLevel(CompressionConstants.DEFAULT_COMPRESSION);
    stream3D.Flush();

    PdfDictionary dict3D = new PdfDictionary();
    dict3D.Put(PdfName.Type, new PdfName("3DView"));
    dict3D.Put(new PdfName("XN"), new PdfString("Default"));
    dict3D.Put(new PdfName("IN"), new PdfString("Unnamed"));
    dict3D.Put(new PdfName("MS"), PdfName.M);
    dict3D.Put(new PdfName("C2W"),
            new PdfArray(new float[] { 1, 0, 0, 0, 0, -1, 0, 1, 0, 3, -235, 28 }));
    dict3D.Put(PdfName.CO, new PdfNumber(235));

    Pdf3DAnnotation annot = new Pdf3DAnnotation(rect, stream3D);
    annot.SetContents(new PdfString("3D Model"));
    annot.SetDefaultInitialView(dict3D);
    pdfDoc.AddNewPage().AddAnnotation(annot);
    doc.Close();
}

Если я удалю эту строку: "annot.SetDefaultInitialView(dict3D);" Я могу открыть и увидеть изображение, но фон черный, а изображение темное. Мне интересно, PdfDictionary в примере не подходит для моего изображения u3d. Не уверены, что для другого изображения u3d требуются разные свойства PdfDictionary или начального вида? Нам нужно открыть и увидеть трехмерное изображение, но мы не знаем, как установить свойства вида. Кто-нибудь может помочь в этом?

0 ответов

Другие вопросы по тегам