/////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2002-2025, Open Design Alliance (the "Alliance"). // All rights reserved. // // This software and its documentation and related materials are owned by // the Alliance. The software may only be incorporated into application // programs owned by members of the Alliance, subject to a signed // Membership Agreement and Supplemental Software License Agreement with the // Alliance. The structure and organization of this software are the valuable // trade secrets of the Alliance and its suppliers. The software is also // protected by copyright law and international treaty provisions. Application // programs incorporating this software must include the following statement // with their copyright notices: // // This application incorporates Open Design Alliance software pursuant to a license // agreement with Open Design Alliance. // Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance. // All rights reserved. // // By use of this software, its documentation or related materials, you // acknowledge and accept the above terms. /////////////////////////////////////////////////////////////////////////////// #include "OdaCommon.h" #include "DynamicLinker.h" #include "PdfPublish/PdfPublish.h" #include "MemoryStream.h" using namespace OdPdfPublish; OdResult OdPdfPublishCADEx(OdDbBaseHostAppServices* pHostApp, OdDbBaseDatabase* pDatabase, const OdString& sServiceCaption, OdStreamBufPtr& sOutPdfStream, const OdString& sInputFileName); OdResult OdPdfPublishCollectionEx(OdDbBaseHostAppServices* pHostApp, OdDbBaseDatabase *pDatabase, const OdString& sServiceCaption, const OdString& sOutPdf, const OdString& sInputFileName, const OdString& sInputTemplateFileName) { if (sOutPdf.isEmpty()) { return eInvalidInput; } OdStreamBufPtr out_pdf_2d_stream = OdMemoryStream::createNew(); OdPdfPublishCADEx(pHostApp, pDatabase, sServiceCaption, out_pdf_2d_stream, sInputFileName); out_pdf_2d_stream->rewind(); OdFilePtr pPublisher = OdFile::createObject(); OdDocumentPtr pColDoc = OdDocument::createObject(); pColDoc->setInformation(L"Pdf Publish Collection Sample Document", L"ODA", L"Collection Sample", L"Oda Pdf Publish", L"ODA, PDF", L"Oda Pdf Publish"); pColDoc->setHostServices(pHostApp); OdPagePtr pEmptyPage = OdPage::createObject(); pEmptyPage->setFormat(Page::kA3); pEmptyPage->setOrientation(Page::kLandscape); pColDoc->addPage(pEmptyPage); OdTextPtr ep_line1 = OdText::createObject(); ep_line1->setSize(50); ep_line1->setText(L"This document is only displayed when you open a"); pEmptyPage->addText(ep_line1, OdRect(88, 534, 741, 760)); OdTextPtr ep_line2 = OdText::createObject(); ep_line2->setSize(50); ep_line2->setText(L"document with a Collection, unless you set "); pEmptyPage->addText(ep_line2, OdRect(148, 534, 682, 760)); OdTextPtr ep_line3 = OdText::createObject(); ep_line3->setSize(50); ep_line3->setText(L"the Initial File option"); pEmptyPage->addText(ep_line3, OdRect(370, 534, 623, 760)); OdCollectionPtr pCollection = OdCollection::createObject(); pColDoc->setCollection(pCollection); OdCollectionColumnPtr column1 = OdCollectionColumn::createObject(); column1->setColumnType(CollectionSchema::kFileName); column1->setName(L"Filename"); column1->setCaption(L"File Name"); column1->setSortOrder(CollectionSchema::kAscending); pCollection->addColumn(column1); OdCollectionColumnPtr column2 = OdCollectionColumn::createObject(); column2->setColumnType(CollectionSchema::kDescription); column2->setName(L"Description"); column2->setCaption(L"Description"); pCollection->addColumn(column2); OdCollectionColumnPtr column3 = OdCollectionColumn::createObject(); column3->setColumnType(CollectionSchema::kCreationDate); column3->setName(L"CreationDate"); column3->setCaption(L"Creation Date"); pCollection->addColumn(column3); OdCollectionColumnPtr column4 = OdCollectionColumn::createObject(); column4->setColumnType(CollectionSchema::kString); column4->setName(L"Emptycolumn"); column4->setCaption(L"Empty Column"); pCollection->addColumn(column4); OdCollectionColumnPtr column5 = OdCollectionColumn::createObject(); column5->setColumnType(CollectionSchema::kString); column5->setName(L"Test"); column5->setCaption(L"Text sample"); pCollection->addColumn(column5); OdCollectionColumnPtr column6 = OdCollectionColumn::createObject(); column6->setColumnType(CollectionSchema::kNumber); column6->setName(L"numbes_sample"); column6->setCaption(L"Number sample"); pCollection->addColumn(column6); OdCollectionColumnPtr column7 = OdCollectionColumn::createObject(); column7->setColumnType(CollectionSchema::kSize); column7->setName(L"filesize"); column7->setCaption(L"File size"); pCollection->addColumn(column7); OdCollectionColumnPtr column8 = OdCollectionColumn::createObject(); column8->setColumnType(CollectionSchema::kCompressedSize); column8->setName(L"comprfilesize"); column8->setCaption(L"Compressed file size"); pCollection->addColumn(column8); OdAttachedFolderPtr root = OdAttachedFolder::createObject(); pCollection->setRootFolder(root); OdDocumentPtr pInitialDoc = OdDocument::createObject(); pInitialDoc->setInformation(L"Pdf Publish Collection Sample Document", L"ODA", L"Collection Sample", L"Oda Pdf Publish", L"ODA, PDF", L"Oda Pdf Publish"); pInitialDoc->setHostServices(pHostApp); OdPagePtr pInitPage = OdPage::createObject(); pInitPage->setFormat(Page::kA3); pInitPage->setOrientation(Page::kLandscape); pInitialDoc->addPage(pInitPage); OdTextPtr init_line1 = OdText::createObject(); init_line1->setSize(50); init_line1->setText(L"Initial document for the Collections example"); pInitPage->addText(init_line1, OdRect(138, 534, 741, 760)); OdStreamBufPtr out_init_pdf_stream = OdMemoryStream::createNew(); pPublisher->exportPdf(pInitialDoc, out_init_pdf_stream); out_init_pdf_stream->rewind(); OdAttachedFilePtr init_file_sample = OdAttachedFile::createObject(); init_file_sample->setName(L"initial file.pdf"); init_file_sample->setFileStream(out_init_pdf_stream); init_file_sample->setCreationDate(OdTimeStamp(OdTimeStamp::kInitUniversalTime)); init_file_sample->setDescription(L"Initial sample description"); init_file_sample->addTextCollectionItem(L"Test", L"test for initial file"); init_file_sample->addNumberCollectionItem(L"numbes_sample", 777); root->addFile(init_file_sample); pCollection->setInitialFile(init_file_sample); OdAttachedFolderPtr folder_3D = OdAttachedFolder::createObject(); folder_3D->setName(L"3D Drawings"); folder_3D->addNumberCollectionItem(L"numbes_sample", 7); root->addChildFolder(folder_3D); OdAttachedFilePtr file_3d_sample = OdAttachedFile::createObject(); file_3d_sample->setName(L"3D_sample.pdf"); file_3d_sample->setFile(sInputTemplateFileName); file_3d_sample->setDescription(L"3D sample description"); file_3d_sample->addTextCollectionItem(L"Test", L"test for 3D file"); file_3d_sample->addNumberCollectionItem(L"numbes_sample", 8.682); folder_3D->addFile(file_3d_sample); OdAttachedFolderPtr folder_2D = OdAttachedFolder::createObject(); folder_2D->setName(L"2D Drawings"); folder_2D->setModDate(OdTimeStamp(OdTimeStamp::kInitUniversalTime)); folder_2D->setCreationDate(OdTimeStamp(OdTimeStamp::kInitUniversalTime)); folder_2D->addTextCollectionItem(L"Test", L"test for folder"); folder_2D->addNumberCollectionItem(L"numbes_sample", 9.58); root->addChildFolder(folder_2D); OdAttachedFilePtr file_2d_sample = OdAttachedFile::createObject(); file_2d_sample->setName(L"2D_sample.pdf"); file_2d_sample->setFileStream(out_pdf_2d_stream); file_2d_sample->setCreationDate(OdTimeStamp(OdTimeStamp::kInitUniversalTime)); file_2d_sample->setDescription(L"2D sample description"); file_2d_sample->addTextCollectionItem(L"Test", L"test for 2D file"); file_2d_sample->addNumberCollectionItem(L"numbes_sample", 2.598); folder_2D->addFile(file_2d_sample); OdString sDescription1(L"source"); OdAttachedFilePtr input_file_attachement = OdAttachedFile::createObject(); input_file_attachement->setFile(sInputFileName); input_file_attachement->setDescription(sDescription1); folder_2D->addFile(input_file_attachement); pPublisher->exportPdf(pColDoc, sOutPdf); return ::eOk; }