From 9622b07eb946b6327ce37da3463bddfc25d90d8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20W=C3=A4ckerlin?= Date: Fri, 20 Nov 2015 15:14:27 +0000 Subject: [PATCH] added examples --- examples/oo-empty.pdf | Bin 0 -> 1114 bytes examples/oo-empty_signed.pdf | Bin 0 -> 49681 bytes src/pdfsign.hxx | 42 +++++++++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+) create mode 100644 examples/oo-empty.pdf create mode 100644 examples/oo-empty_signed.pdf diff --git a/examples/oo-empty.pdf b/examples/oo-empty.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f5b4827fc2faeb4cb5699e6095687938b6340170 GIT binary patch literal 1114 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 mI5hT{Lo|Zn(Poppler::Document::load(fileName)); showPage(); + } public: void showPage(int pageNumber=0) { @@ -42,6 +43,47 @@ class PdfSign: public QMainWindow, protected Ui::Pdfsign { _pdfDisplay->setPixmap(QPixmap::fromImage(pdfPage->renderToImage())); return; } + void sign(QString filename) { + PdfSigIncMemDocument doc(filename.c_str()); + char *buffer = NULL; + buffer = (char *)malloc(809600); + PdfOutputDevice output(buffer, 809600); + PdfSignOutputDevice signOutput(&output); + signOutput.SetSignatureSize(2048); + printf( "Page count:%d\n", doc.GetPageCount()); + + PdfSigIncSignatureField *sign = doc.GetSignatureField(); + sign->SetSignatureDate(PdfDate()); + sign->SetSignatureReason(L"I dont agree"); + //sign->SetSignatureImage("e:\\sign.jpg", 0, 100, 200, 100, 100); + sign->SetSignatureText(L"Hello World", 0, 100, 200, 100, 100, 12); + doc.Initialize(); + doc.CreateVisualSign(); + doc.Write(&signOutput); + printf( "Has Signature:%d\n", signOutput.HasSignaturePosition()); + /* + char buff[809600] = {0}; + size_t len; + BYTE *Signature = NULL; + DWORD cbSignature = 0; + + signOutput.AdjustByteRange(); + signOutput.Seek(0); + len = signOutput.ReadForSignature(buff, 809600); + printf("total tbs size: %d\n", len); + SignMessage( (BYTE *)buff, len, &Signature, &cbSignature);//Digital signing using MSCAPI + printf("signature size: %d\n", cbSignature); + const PoDoFo::PdfData *sig = new PoDoFo::PdfData((char *)Signature, cbSignature); + signOutput.SetSignature(*sig); + */ + signOutput.Flush(); + + FILE *fp = NULL; + fp = fopen("/tmp/signed.pdf", "wb" ); + fwrite( buffer, signOutput.GetLength(), 1, fp ); + fclose(fp); + free(buffer); + } private: std::shared_ptr _pdf; };