简体   繁体   中英

converting an .obj file into .pdf3D in java

I wish that somebody could help me solving this problem. I want to convert an *.obj file into pdf3D using Java. I have tried using the library itextpdf (at the end you can find the code that I used), but I just managed to convert a u3D file to pdf. Do I have to change something in the code or should I use another library?

@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 only supports .prc and .u3d files. Direct file conversion formats adobe.com So you need to convert one of those first.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM