在java中将.obj文件转换为.pdf3D

在java中将.obj文件转换为.pdf3D,java,pdf,itext,Java,Pdf,Itext,我希望有人能帮我解决这个问题。 我想使用Java将*.obj文件转换为pdf3D。我尝试过使用这个库(最后你可以找到我使用的代码),但我只是设法将u3D文件转换成pdf。我是否必须更改代码中的某些内容,还是应该使用其他库 @SuppressWarnings("javadoc") public class Main { public static String RESOURCE = "C:\\Users\\bb\\IdeaProjects/Zuccarello.U3D"; public stati

我希望有人能帮我解决这个问题。 我想使用Java将*.obj文件转换为pdf3D。我尝试过使用这个库(最后你可以找到我使用的代码),但我只是设法将u3D文件转换成pdf。我是否必须更改代码中的某些内容,还是应该使用其他库

@SuppressWarnings("javadoc")
public class Main
{
public static String RESOURCE = "C:\\Users\\bb\\IdeaProjects/Zuccarello.U3D";
public static String RESULT="C:\\Users\\bb\\IdeaProjects/obj.pdf";

public static void main(String[] args) throws DocumentException, IOException {
    new Main().createPdf ( RESULT);
}

public void createPdf(String filename) throws IOException, DocumentException {
    // step 1
    Document document = new Document();
    // step 2
    PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(filename));
    // step 3
    document.open();
    // step 4
    Rectangle rect = new Rectangle(100, 400, 500, 800);
    rect.setBorder(Rectangle.BOX);
    rect.setBorderWidth(0.5f);
    rect.setBorderColor(new BaseColor(0xFF, 0x00, 0x00));
    document.add(rect);

    PdfStream  stream3D = new PdfStream(new FileInputStream(RESOURCE), writer);
    stream3D.put(PdfName.TYPE, new PdfName("3D"));
    stream3D.put(PdfName.SUBTYPE, new PdfName("U3D"));
    stream3D.flateCompress();
    PdfIndirectObject streamObject = writer.addToBody(stream3D);
    stream3D.writeLength();

    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));

    PdfIndirectObject dictObject = writer.addToBody(dict3D);

    PdfAnnotation annot = new PdfAnnotation(writer, rect);
    annot.put(PdfName.CONTENTS, new PdfString("3D Model"));
    annot.put(PdfName.SUBTYPE, new PdfName("3D"));
    annot.put(PdfName.TYPE, PdfName.ANNOT);
    annot.put(new PdfName("3DD"), streamObject.getIndirectReference());
    annot.put(new PdfName("3DV"), dictObject.getIndirectReference());
    PdfAppearance ap = writer.getDirectContent().createAppearance(rect.getWidth(), rect.getHeight());
    annot.setAppearance(PdfAnnotation.APPEARANCE_NORMAL, ap);
    annot.setPage();

    writer.addAnnotation(annot);
    // step 5
    document.close();
}
}

3D PDF仅支持.prc和.u3d文件。
因此,您需要先转换其中一个文件。

3D PDF仅支持.prc和.u3d文件。
因此,您需要首先转换其中一个。

非常感谢您的回答:),您知道有哪些Java库允许我用Java创建和导出u3D文件吗?我已经在Java中计算了面、顶点和纹理,并希望将它们导出到u3D文件中。我曾经使用Hoops Exchange将它们导出到.prc。我使用AcrobatPro将它们添加到3D pdf中,但是是手动添加的。我找不到免费/开源解决方案。付费解决方案在Java中似乎不可用。@KYL3R对于相同类型的转换,除了Java,您还有其他解决方案吗。我的要求是我有一个.obj文件,我需要将该文件转换为.pdf文件。@Bhavanaditya:一次一个文件?如果在线转换器(google'obj to prc')无法工作,您可以将obj上传到某个地方,我将为您转换。@KYL3R我有多个.obj文件,需要将其转换为.pdf文件。有什么可能性吗。如果可用,请提供帮助。谢谢你的回复。非常感谢你的回答:),你知道Java中有哪些库允许我用Java创建和导出u3D文件吗?我已经在Java中计算了面、顶点和纹理,并希望将它们导出到u3D文件中。我曾经使用Hoops Exchange将它们导出到.prc。我使用AcrobatPro将它们添加到3D pdf中,但是是手动添加的。我找不到免费/开源解决方案。付费解决方案在Java中似乎不可用。@KYL3R对于相同类型的转换,除了Java,您还有其他解决方案吗。我的要求是我有一个.obj文件,我需要将该文件转换为.pdf文件。@Bhavanaditya:一次一个文件?如果在线转换器(google'obj to prc')无法工作,您可以将obj上传到某个地方,我将为您转换。@KYL3R我有多个.obj文件,需要将其转换为.pdf文件。有什么可能性吗。如果可用,请提供帮助。谢谢你的回复。