DATAKIT API  V2025.1
PdfWrite.cpp File Reference

Functions

void ActivatePdfDump (Dtk_bool inDumpPDF)
 
Dtk_bool IsPdfDumpActivated ()
 
void PdfEndComponent ()
 
void PdfEndInstance (Dtk_ID pdfInstID, Dtk_ID childID)
 
void PdfEndNode ()
 
void PdfEndWrite (const Dtk_string &inInputFile)
 
Dtk_ID PdfInitComponent (Dtk_ComponentPtr inComponent)
 
Dtk_ID PdfInitInstance (Dtk_ComponentPtr inComponent)
 
Dtk_ID PdfInitNode (Dtk_NodePtr inNode)
 
Dtk_ErrorStatus PdfInitWrite (const Dtk_string &inInputFileName, const Dtk_string &inOutputFolder)
 
void PdfInstanceExistingPrototype (Dtk_ID ComponentIndex)
 
void PdfWriteDrawingNode (Dtk_NodePtr inNode)
 
void PdfWriteEntity (Dtk_EntityPtr inEntity)
 
void PdfWriteMetaData (Dtk_ComponentPtr inComponent)
 
void PdfWriteMetaData (Dtk_tab< Dtk_MetaDataPtr > &inTabMetadata)
 

Variables

Dtk_tab< Dtk_IDComponentProcessed
 
std::map< Dtk_Node::NodeDataTypeEnum, Dtk_Size_tmodelInventory
 
Dtk_tab< Dtk_IDPdfComponents
 
Dtk_bool toDumpPDF
 

Function Documentation

◆ ActivatePdfDump()

void ActivatePdfDump ( Dtk_bool  inDumpPDF)
22 {
23  toDumpPDF = inDumpPDF;
24 }

◆ IsPdfDumpActivated()

Dtk_bool IsPdfDumpActivated ( )
27 {
28  return toDumpPDF;
29 }

◆ PdfEndComponent()

void PdfEndComponent ( )
152 {
153  Pdfw::EndNode();
154 }

◆ PdfEndInstance()

void PdfEndInstance ( Dtk_ID  pdfInstID,
Dtk_ID  childID 
)
109 {
110  if ( ComponentProcessed.find(childID) < 0)
111  {
112  PdfComponents.push_back(pdfInstID);
113  }
114  Pdfw::EndNode();
115 }

◆ PdfEndNode()

void PdfEndNode ( )
169 {
170  Pdfw::EndNode();
171 }

◆ PdfEndWrite()

void PdfEndWrite ( const Dtk_string inInputFile)
81 {
82  Dtk_UInt32 artworkIndex = 0;
83  Pdfw::Layout::End3DArtwork(artworkIndex);
84  CreatePDFLayout(inInputFile, artworkIndex, modelInventory);
85  modelInventory.clear();
88 }

◆ PdfInitComponent()

Dtk_ID PdfInitComponent ( Dtk_ComponentPtr  inComponent)
144 {
145  Dtk_InfoPtr infos = inComponent->GetInfos();
146  Dtk_string name = inComponent->Name();
147  Dtk_ID pdfID;
148  Pdfw::InitNode(name, Dtk_transfo(), infos, pdfID);
149  return pdfID;
150 }

◆ PdfInitInstance()

Dtk_ID PdfInitInstance ( Dtk_ComponentPtr  inComponent)
91 {
92  Dtk_ID pdfInstID;
93  Dtk_string ComponentName;
94  ComponentName = inComponent->Name();//Component name
95 
96  Dtk_InfoPtr infos = inComponent->GetInfos();
97  Dtk_transfo instanceTransfo;
98 
99  if (inComponent->InstanceName().len() > 0)
100  ComponentName += " (" + inComponent->InstanceName() + ")";
101 
102  instanceTransfo = inComponent->TransformationMatrix();
103  Pdfw::InitNode(ComponentName, instanceTransfo, infos, pdfInstID);
104  Pdfw::StorePrototype(pdfInstID);
105  return pdfInstID;
106 }

◆ PdfInitNode()

Dtk_ID PdfInitNode ( Dtk_NodePtr  inNode)
157 {
158  Dtk_ID pdfID;
159  Dtk_string NodeName = inNode->Name();
160  Dtk_InfoPtr nodeInfo = inNode->GetInfos();
161  Dtk_bool nodeVisi = nodeInfo->GetBlankedStatus() ? DTK_FALSE : DTK_TRUE;
162  Pdfw::InitNode(NodeName, Dtk_transfo(), nodeVisi, pdfID);
163  if (nodeInfo.IsNotNULL())
165  return pdfID;
166 }

◆ PdfInitWrite()

Dtk_ErrorStatus PdfInitWrite ( const Dtk_string inInputFileName,
const Dtk_string inOutputFolder 
)
32 {// Initialize writing
33  Dtk_ErrorStatus stErrorPdf;
34  Dtk_string outputPDFFile;
35  Pdfw::WriteOptions options;
36 
37  // Pdf options :
38  // We choose between PRC or U3D 3D format
39  options.WritePRC = DTK_TRUE;
40  // We will generate our own layout
42 #ifndef Linux
43  // We choose the font to use
44  options.Layout.TTF_Font = "C:/Windows/Fonts/arial.ttf";
46 #endif
47  // We handle line thickness
49  // We set a transparent background
51 
52  outputPDFFile = inInputFileName + "_dtk.pdf";
53  if (inOutputFolder.len() > 0)
54  outputPDFFile = inOutputFolder + inInputFileName.filename() +inInputFileName.extension() + "_dtk.pdf";
55  // Initializing the writer
56  stErrorPdf = Pdfw::InitWrite(outputPDFFile, "", NULL, options);
57 
58  if (stErrorPdf == dtkNoError)
59  cout << "Creating Pdf file... " << outputPDFFile.c_str() << endl;
60  else
61  cout << "Warning : Pdf Write failed : " << dtkTypeError(stErrorPdf).c_str() << endl;
62 
63 
64 
65  //**************************************************************************************************************//
66  //layout
67  //**************************************************************************************************************//
68  // Page creation
70  // Size of Page
72 
73  // PDF 3D Artwork initialization
74  Pdfw::Layout::Init3DArtwork(inInputFileName.filename());
75 
76  modelInventory.clear();
77  return stErrorPdf;
78 }

◆ PdfInstanceExistingPrototype()

void PdfInstanceExistingPrototype ( Dtk_ID  ComponentIndex)
139 {
141 }

◆ PdfWriteDrawingNode()

void PdfWriteDrawingNode ( Dtk_NodePtr  inNode)
185 {
186  Dtk_MetaDataPtr meta = Dtk_MetaData::CreateMetaData(Dtk_MetaData::TypeFileProperty, "See Other Page For Drawing", inNode->Name());
188  tabmeta.push_back(meta);
189  PdfWriteMetaData(tabmeta);
190  Dtk_DrawingPtr TmpDrawing = inNode->GetDtk_DrawingPtr();
193 }

◆ PdfWriteEntity()

void PdfWriteEntity ( Dtk_EntityPtr  inEntity)
174 {
175  Pdfw::WriteEntity(inEntity);
176  if (inEntity->get_type_detk() == DTK_TYPE_BODY)
178  if (inEntity->get_type_detk() == DTK_TYPE_MESH)
180  if (inEntity->get_type_detk() == DTK_TYPE_FDT)
182 }

◆ PdfWriteMetaData() [1/2]

void PdfWriteMetaData ( Dtk_ComponentPtr  inComponent)
118 {
119  Dtk_Size_t i,NumMetaData;
120  NumMetaData = inComponent->GetNumMetaData();
121  if (NumMetaData)
122  {
123  Dtk_tab<Dtk_MetaDataPtr> tabMetadata;
124  for (i = 0; i < NumMetaData; i++)
125  {
126  tabMetadata.push_back(inComponent->GetMetaData(i));
127  }
128  Pdfw::AddNodeMetadata(tabMetadata);
129  }
130 }

◆ PdfWriteMetaData() [2/2]

void PdfWriteMetaData ( Dtk_tab< Dtk_MetaDataPtr > &  inTabMetadata)
133 {
134  Pdfw::AddNodeMetadata(inTabMetadata);
135 }

Variable Documentation

◆ ComponentProcessed

Dtk_tab<Dtk_ID> ComponentProcessed
extern

◆ modelInventory

std::map<Dtk_Node::NodeDataTypeEnum, Dtk_Size_t> modelInventory

◆ PdfComponents

Dtk_tab<Dtk_ID> PdfComponents

◆ toDumpPDF

Dtk_bool toDumpPDF
Dtk_ID
uint32_t Dtk_ID
Definition: define.h:689
Dtk_transfo
This is the Transformation dedicated class.
Definition: dtk_transfo.hpp:19
Pdfw::AddNodeMetadata
DtkErrorStatus AddNodeMetadata(Dtk_tab< Dtk_MetaDataPtr > &inTabMetadata)
Add table of metadata to current node.
Dtk_Info::GetBlankedStatus
int GetBlankedStatus() const
Retrieves the entity Blanked Status.
Dtk_Node::FdtType
@ FdtType
Definition: dtk_maindoc.hpp:251
Pdfw::WriteOptions
This class provides several options to tune Pdf Writer. It must be provided to Pdfw::InitWrite method...
Definition: pdfw.hpp:113
DTK_TYPE_MESH
@ DTK_TYPE_MESH
Definition: define.h:477
Pdfw::InitWrite
DtkErrorStatus InitWrite(const Dtk_string &inOutputFile, const Dtk_string &inLogFile, Licence_dtk inLicFct, WriteOptions &inOptions)
Initialize the PDF Writer
Pdfw::WriteOptions::Layout
LayoutOptions Layout
Definition: pdfw.hpp:193
Dtk_SmartPtr::IsNotNULL
Dtk_bool IsNotNULL() const
Definition: util_ptr_dtk.hpp:119
Pdfw::Layout::EndPage
Dtk_ErrorStatus EndPage()
End of page.
Pdfw::LayoutOptions::CreateAutomaticLayout
Dtk_bool CreateAutomaticLayout
DTK_TRUE : Creates automatic layout (One page with filled with 3D Annotation), DTK_FALSE : You must u...
Definition: pdfw.hpp:37
PdfWriteMetaData
void PdfWriteMetaData(Dtk_ComponentPtr inComponent)
Definition: PdfWrite.cpp:117
DTK_TRUE
#define DTK_TRUE
Definition: define.h:727
Dtk_UInt32
uint32_t Dtk_UInt32
Definition: define.h:688
Dtk_string
This is a high level string class.
Definition: dtk_string.hpp:58
Dtk_Size_t
size_t Dtk_Size_t
Definition: define.h:712
Dtk_MetaData::TypeFileProperty
@ TypeFileProperty
Definition: dtk_metadata.hpp:29
Dtk_Node::BodyType
@ BodyType
Definition: dtk_maindoc.hpp:248
DTK_FALSE
#define DTK_FALSE
Definition: define.h:728
Dtk_bool
char Dtk_bool
Definition: define.h:725
Pdfw::AddNodeRenderInfo
DtkErrorStatus AddNodeRenderInfo(Dtk_RenderInfosPtr inRenderInfos)
Add rendering informations to current node.
Dtk_Entity::get_type_detk
virtual enum type_detk get_type_detk() const =0
Pdfw::LayoutOptions::WriteLineThickness
Dtk_bool WriteLineThickness
DTK_TRUE : write line thickness, DTK_FALSE : Writes lines with thickness value equals to 0....
Definition: pdfw.hpp:41
Pdfw::Layout::SetCurrentPageSize
Dtk_ErrorStatus SetCurrentPageSize(PageSizes inSize, PageDirection inDirection)
Sets current page size.
Pdfw::ReinstanciatePrototype
DtkErrorStatus ReinstanciatePrototype(Dtk_ID inID)
Reinstanciate children of node to reinstanciate in current node.
Pdfw::Layout::Init3DArtwork
DtkErrorStatus Init3DArtwork(Dtk_string inAnnotName=Dtk_string(), Pdfw::WriteOptions *inWriteOptions=NULL)
Starts Writing of 3D Artwork (3D model)
Pdfw::StorePrototype
void StorePrototype(Dtk_ID inID)
Stores the identifier of a node.
Dtk_string::filename
Dtk_string filename() const
File Utility : Retrieves the filename in Dtk_string form.
Pdfw::EndWrite
DtkErrorStatus EndWrite()
Creation of the output file and free the PDF Writer
modelInventory
std::map< Dtk_Node::NodeDataTypeEnum, Dtk_Size_t > modelInventory
Definition: PdfWrite.cpp:18
DTK_TYPE_BODY
@ DTK_TYPE_BODY
Definition: define.h:490
Pdfw::EndNode
DtkErrorStatus EndNode()
End the node.
Pdfw::LayoutOptions::RasterizeTexts
Dtk_bool RasterizeTexts
DTK_TRUE : rasterizing texts, DTK_FALSE : Converts texts as texts with the font you provide.
Definition: pdfw.hpp:39
Dtk_SmartPtr< Dtk_Entity >::DtkDynamicCast
static Dtk_SmartPtr< Dtk_Entity > DtkDynamicCast(const Dtk_SmartPtr< T2 > &p)
Definition: util_ptr_dtk.hpp:101
Pdfw::Layout::LANDSCAPE
@ LANDSCAPE
Definition: pdfw.hpp:477
Dtk_ErrorStatus
Dtk_ErrorStatus
Definition: error_dtk.hpp:6
Dtk_Info::GetRenderInfos
Dtk_RenderInfosPtr GetRenderInfos() const
Retrieves the entity RenderInfos of the entity.
DTK_TYPE_FDT
@ DTK_TYPE_FDT
Definition: define.h:433
Pdfw::LayoutOptions::TTF_Font
Dtk_string TTF_Font
Definition: pdfw.hpp:45
Pdfw::Layout::SIZE_A5
@ SIZE_A5
Definition: pdfw.hpp:462
Dtk_SmartPtr< Dtk_Info >
dtkTypeError
Dtk_string dtkTypeError(Dtk_Int32 errNumero)
Dtk_string::c_str
const char * c_str() const
Retrieve the ASCII conversion string.
PdfComponents
Dtk_tab< Dtk_ID > PdfComponents
Definition: PdfWrite.cpp:16
Dtk_string::extension
Dtk_string extension() const
File Utility : Retrieves the extension in Dtk_string form.
Pdfw::Layout::End3DArtwork
DtkErrorStatus End3DArtwork(Dtk_UInt32 &outartworkIndex)
Ends Writing of 3D Artwork.
toDumpPDF
Dtk_bool toDumpPDF
Definition: PdfWrite.cpp:14
Pdfw::WriteEntity
Dtk_ErrorStatus WriteEntity(const Dtk_EntityPtr &inEntity)
Write the entity provided in parameter in a node.
Dtk_tab
This is a high level array class.
Definition: util_stl_dtk.hpp:85
Pdfw::InitNode
DtkErrorStatus InitNode(Dtk_string &inNodeName, const Dtk_transfo &inTransfo=Dtk_transfo())
Initialize a node.
Pdfw::WriteOptions::WritePRC
Dtk_bool WritePRC
DTK_TRUE : Embedding PRC file, DTK_FALSE : Embedding U3D file.
Definition: pdfw.hpp:161
Dtk_string::len
int len() const
Retrieve the length of the Dtk_string.
ComponentProcessed
Dtk_tab< Dtk_ID > ComponentProcessed
Definition: WritePrototype.cpp:12
dtkNoError
@ dtkNoError
Definition: error_dtk.hpp:140
Dtk_tab::push_back
void push_back(const T &x)
Inserts an element at the end of the array.
Definition: util_stl_dtk.hpp:415
Dtk_Node::DrawingType
@ DrawingType
Definition: dtk_maindoc.hpp:252
CreatePDFLayout
void CreatePDFLayout(const Dtk_string &inFileName, Dtk_Int32 artworkIndex, std::map< Dtk_Node::NodeDataTypeEnum, Dtk_Size_t > &inModelInventory)
Definition: PdfWriteLayout.cpp:283
Pdfw::WriteOptions::TransparentBackground
Dtk_bool TransparentBackground
DTK_TRUE : Transparent Background, DTK_FALSE : Opaque Background.
Definition: pdfw.hpp:153
Pdfw::Layout::InitPage
Dtk_ErrorStatus InitPage(Dtk_RGB inColor=Dtk_RGB(255, 255, 255), Dtk_Double64 inWidth=842, Dtk_Double64 inHeight=595)
LAYOUT METHODS.
Dtk_Node::MeshType
@ MeshType
Definition: dtk_maindoc.hpp:249
Dtk_MetaData::CreateMetaData
static Dtk_MetaDataPtr CreateMetaData(const MetaDataTypeEnum &inEnumType, Dtk_string inTitle, Dtk_string inValue, Dtk_string inValueType=Dtk_string(L"STRING"))
Create a Dtk_MetaDataPtr .