我将 u3d 图像添加到 pdf 中(根据此示例),我发现 u3d 图像已添加到 pdf 中,但是当我使用 Acrobat 打开 pdf 时,我无法直接看到它(空白块但 3D 菜单),我必须右键单击空白块并选择“Part Options -> Fit Visible”以使其出现。如果我使用示例 teapot.u3d 它可以工作(打开然后查看)。我的 u3d 文件是否太大(3 到 7 MB)但 teapot.u3d 只有 141KB。
这是我正在使用的示例代码:
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 或初始视图属性?我们需要打开并查看 3D 图像,但不知道如何设置视图属性。有人可以帮忙吗?