Желаю, чтобы кто-нибудь помог мне решить эту проблему. Я хочу преобразовать файл * .obj в pdf3D с помощью Java. Я пробовал использовать библиотеку itextpdf (в конце вы можете найти код, который я использовал), но мне только что удалось преобразовать файл 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. Форматы прямого преобразования файлов adobe.com Итак, вам нужно сначала преобразовать один из них.
Однажды я выполнил экспорт в .prc, используя Hoops Exchange. Я добавил их в 3D PDF с помощью Acrobat pro, но вручную. Я не могу найти бесплатное решение с открытым исходным кодом. Платные решения, похоже, недоступны на Java.
@ KYL3R Для такого же типа преобразования есть ли у вас какие-либо решения, кроме java. И мое требование - у меня есть один файл .obj, который мне нужен для преобразования файла в файл .pdf.
@Bhavanaditya: Один файл, однажды? Если онлайн-конвертеры (google 'obj to prc') не работают, вы можете загрузить объект где-нибудь, и я конвертирую его для вас.
@ KYL3R У меня есть несколько и несколько файлов .obj, которые нужно преобразовать в файлы .pdf. Есть ли возможности. Если есть средства, пожалуйста, помогите с этим. И спасибо за ответ.
@Bhavanaditya, я работаю над той же проблемой, не могли бы вы помочь мне с этим? как вы преобразовали obj в u3d и добавили его в PDF?
Вы можете попробовать такие конвертеры, как этот: products.aspose.app/3d/conversion/obj-to-u3d - чтобы добавить его в файл PDF, вам понадобится Acrobat Pro - просто перетащите его внутрь.
Большое спасибо за ответ :) Знаете ли вы какие-нибудь библиотеки на Java, которые позволяют мне создавать и экспортировать файлы u3D на Java? Я уже рассчитал грани, вершины и текстуры в Java и хочу экспортировать их в файл u3D.