| 
					
				 | 
			
			
				@@ -16,96 +16,123 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #include "PageContentContext.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #include "PDFFormXObject.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #include "Trace.h" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <windows.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#include <winnt.h> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 int main(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    printf("if running on Windows check here for file(s): %%AppData%%\\Local\\VirtualStore\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    PDFWriter pdfWriter; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    //  PREPARE PDF DOCUMENT 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    //  ******************** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    //  get a PDFWriter object to interact with. set the PDF version, set log file 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    EStatusCode e = pdfWriter.StartPDF("c:\\myFile.pdf",ePDFVersion13,LogConfiguration(true,true,".\\logMe")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if (e){  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        /*  25APR20 - look through codebase and found these three reasons for nonrecoverable failure: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         *  - user requested encryption, document doesn't support it 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         *  - it is unlikely, but for some reason GK wanted to call OutputFile::CloseFile(), it failed  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         *  - operating system was unsuccessful at giving a lock for the filename * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         *  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         *  * Windows 'gives' a lock, but doesn't protect others from writing to this filename 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        printf("Terminating (c:\\myFile.pdf): unsuccessful lock or couldn't close existing or requested encryption but not supported\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        TRACE_LOG("Terminating (c:\\myFile.pdf): unsuccessful lock or couldn't close existing or requested encryption but not supported"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        exit(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    TRACE_LOG("Notified OS we might use c:\\myFile.pdf"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    PDFPage* pdfPage = new PDFPage(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    //  set dimensions for an A4 sized page 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    pdfPage->SetMediaBox(PDFRectangle(0,0,595,842)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    PageContentContext* pageContentContext = pdfWriter.StartPageContentContext(pdfPage); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    //  include font file 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    PDFUsedFont* arialTTF = pdfWriter.GetFontForFile("C:\\Windows\\Fonts\\arial.ttf"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    //  include image file 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    //  ADD CONTENT  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    //  ******************** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    //  set font color to black 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    pageContentContext->k(0,0,0,1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    //  set text object 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    pageContentContext->BT(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    //  set font  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    pageContentContext->Tf(arialTTF,1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    //  set position of text 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    pageContentContext->Tm(20,0,0,20,40,822); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    //  insert text into PDF 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    pageContentContext->Tj("Text placed and scaled with Tm"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    //  end of text 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    pageContentContext->ET(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    pdfWriter.EndPageContentContext(pageContentContext); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    pdfWriter.WritePageAndRelease(pdfPage); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // ****************Shutdown Usage************ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // ****************************************** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // ****************************************** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    pdfWriter.Shutdown("c:\\myFile.pdf.shutdown"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    /*PDFWriter pdfWriterB; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    pdfWriterB.ContinuePDF("c:\\myFile.pdf","myFile.pdf.shutdown","",LogConfiguration(true,true,".\\logMe")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    PDFPage* pdfPageB = new PDFPage(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    //  set dimensions for an A4 sized page 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    pdfPageB->SetMediaBox(PDFRectangle(0,0,595,842)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    PageContentContext* pageContentContextB = pdfWriterB.StartPageContentContext(pdfPageB); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    PDFFormXObject* image = pdfWriterB.CreateFormXObjectFromJPGFile("C:\\Users\\bad-p\\Desktop\\Work Folder\\VS CODE\\SanAntonioPass.jpg"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if (!image){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        TRACE_LOG("Image file not found, creating PDF without image."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        printf("The image \"C:\\Users\\bad-p\\Desktop\\Work Folder\\VS CODE\\SanAntonioPass.jpg\" was not found."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    pageContentContextB->q(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    pageContentContextB->cm(0.4,0,0,0.4,57.5,241); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    pageContentContextB->Do(pdfPageB->GetResourcesDictionary().AddFormXObjectMapping(image->GetObjectID())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    pageContentContextB->Q(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    delete image; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    //  END PAGE, WRITE PDF. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    //  ********************  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    pdfWriterB.EndPageContentContext(pageContentContextB); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    EStatusCode f = pdfWriterB.WritePageAndRelease(pdfPageB); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if (f){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        printf ("something interesting"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //  Go to: "%AppData%\..\Local\VirtualStore"  - because Windows does not write to the C:\ drive   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    printf("if running on Windows check here for file(s): %%AppData%%\\..\\Local\\VirtualStore\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        PDFWriter pdfWriter; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //  PREPARE PDF DOCUMENT 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //  ******************** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //  get a PDFWriter object to interact with. set the PDF version, set log file 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        EStatusCode e = pdfWriter.StartPDF("c:\\myFile.pdf",ePDFVersion13,LogConfiguration(true,true,".\\logMe")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (e){  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            /*  25APR20 - look through codebase and found these three reasons for nonrecoverable failure: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            *  - user requested encryption, document doesn't support it 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            *  - it is unlikely, but for some reason GK wanted to call OutputFile::CloseFile(), it failed  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            *  - operating system was unsuccessful at giving a lock for the filename * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            *  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            *  * Windows 'gives' a lock, but doesn't protect others from writing to this filename 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            printf("Terminating (c:\\myFile.pdf): unsuccessful lock or couldn't close existing or requested encryption but not supported\n"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            TRACE_LOG("Terminating (c:\\myFile.pdf): unsuccessful lock or couldn't close existing or requested encryption but not supported"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            exit(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        TRACE_LOG("Notified OS we might use c:\\myFile.pdf"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        PDFPage* pdfPage = new PDFPage(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //  set dimensions for an A4 sized page 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pdfPage->SetMediaBox(PDFRectangle(0,0,595,842)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        PageContentContext* pageContentContext = pdfWriter.StartPageContentContext(pdfPage); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //  include font file 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        PDFUsedFont* arialTTF = pdfWriter.GetFontForFile("C:\\Windows\\Fonts\\arial.ttf"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //  include image file 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //  ADD CONTENT  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //  ******************** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //  set font color to black 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pageContentContext->k(0,0,0,1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //  set text object 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pageContentContext->BT(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //  set font  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pageContentContext->Tf(arialTTF,1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //  set position of text 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pageContentContext->Tm(20,0,0,20,40,822); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //  insert text into PDF 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pageContentContext->Tj("Text placed and scaled with Tm"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //  end of text 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pageContentContext->ET(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pdfWriter.EndPageContentContext(pageContentContext); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pdfWriter.WritePageAndRelease(pdfPage); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // ****************Shutdown Usage************ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // ****************************************** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // ****************************************** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pdfWriter.Shutdown("c:\\myFile.pdf.shutdown"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        /*PDFWriter pdfWriterB; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pdfWriterB.ContinuePDF("c:\\myFile.pdf","myFile.pdf.shutdown","",LogConfiguration(true,true,".\\logMe")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        PDFPage* pdfPageB = new PDFPage(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //  set dimensions for an A4 sized page 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pdfPageB->SetMediaBox(PDFRectangle(0,0,595,842)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        PageContentContext* pageContentContextB = pdfWriterB.StartPageContentContext(pdfPageB); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        PDFFormXObject* image = pdfWriterB.CreateFormXObjectFromJPGFile("C:\\Users\\bad-p\\Desktop\\Work Folder\\VS CODE\\SanAntonioPass.jpg"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!image){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            TRACE_LOG("Image file not found, creating PDF without image."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            printf("The image \"C:\\Users\\bad-p\\Desktop\\Work Folder\\VS CODE\\SanAntonioPass.jpg\" was not found."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pageContentContextB->q(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pageContentContextB->cm(0.4,0,0,0.4,57.5,241); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pageContentContextB->Do(pdfPageB->GetResourcesDictionary().AddFormXObjectMapping(image->GetObjectID())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pageContentContextB->Q(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        delete image; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //  END PAGE, WRITE PDF. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //  ********************  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pdfWriterB.EndPageContentContext(pageContentContextB); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        EStatusCode f = pdfWriterB.WritePageAndRelease(pdfPageB); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (f){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            printf ("something interesting"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        pdfWriterB.EndPDF();*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(false)for(int i = 0;0<1000000000;i++){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(i*i*i<(i/3)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        /* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        LPOVERLAPPED kyle; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //  waiting for previous wfsopen to finish from GK lib 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        while(true){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //  open file 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            FILE *f = fopen("C:\\Users\\bad-p\\AppData\\Local\\VirtualStore\\myFile.pdf","r"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //  create lock for file, after lock is created, done waiting. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if(LockFileEx( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                f,                                       //  handle to file (needs to be GENERIC_READ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                LOCKFILE_EXCLUSIVE_LOCK,                 //  force an exclussive lock vs. a shared lock 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                0,                                       //  must be set to 0 (dwReservered) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                0,                                       //  The low-order 32 bits of the length of the byte range to lock 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                MAXDWORD,                                //  The high-order 32 bits of the length of the byte range to lock. | MAXDWORD = 0xffffffff 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                kyle                                     //   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            )) { fclose(f); break; } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //  check for file every 6th of a second 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            else { fclose(f); Sleep(650); } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    pdfWriterB.EndPDF();*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-PDFWriter pdfWriterB; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			pdfWriterB.ContinuePDF("C:\\Users\\bad-p\\AppData\\Local\\VirtualStore\\myFile.pdf","C:\\Users\\bad-p\\AppData\\Local\\VirtualStore\\myFile.pdf.shutdown"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			// Create a new page 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			PDFPage* pdfPage2 = new PDFPage(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			pdfPage->SetMediaBox(PDFRectangle(0,0,595,842)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			// Create a content context for the page 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			PageContentContext* pageContentContext2 = pdfWriterB.StartPageContentContext(pdfPage2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			PDFUsedFont* arialTTF2 = pdfWriterB.GetFontForFile("C:\\Windows\\Fonts\\arial.ttf"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			pageContentContext2->k(0,0,0,1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			pageContentContext2->BT(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			pageContentContext2->Tf(arialTTF2,1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			pageContentContext2->Tm(20,0,0,20,40,822); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			pageContentContext2->Tj("Hello Again, World"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			pageContentContext2->ET();				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			// End content context, and write the page 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			pdfWriterB.EndPageContentContext(pageContentContext2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			pdfWriterB.WritePageAndRelease(pdfPage2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-			pdfWriterB.EndPDF(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    PDFWriter pdfWriterB; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    pdfWriterB.ContinuePDF("C:\\Users\\bad-p\\AppData\\Local\\VirtualStore\\myFile.pdf","C:\\Users\\bad-p\\AppData\\Local\\VirtualStore\\myFile.pdf.shutdown"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // Create a new page 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    PDFPage* pdfPage2 = new PDFPage(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    pdfPage2->SetMediaBox(PDFRectangle(0,0,595,842)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // Create a content context for the page 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    PageContentContext* pageContentContext2 = pdfWriterB.StartPageContentContext(pdfPage2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    PDFUsedFont* arialTTF2 = pdfWriterB.GetFontForFile("C:\\Windows\\Fonts\\arial.ttf"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    pageContentContext2->k(0,0,0,1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    pageContentContext2->BT(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    pageContentContext2->Tf(arialTTF2,1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    pageContentContext2->Tm(20,0,0,20,40,822); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    pageContentContext2->Tj("Hello Again, World"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    pageContentContext2->ET();				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // End content context, and write the page 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    pdfWriterB.EndPageContentContext(pageContentContext2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    pdfWriterB.WritePageAndRelease(pdfPage2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    pdfWriterB.EndPDF(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |