|
@@ -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();
|
|
|
}
|