int CHaruPdf::getBin( sqbind::CSqBinary *pBin ) {_STT(); // Sanity checks if ( !m_pdf || !pBin ) return 0; // Reset stream // HPDF_ResetStream( m_pdf ); // Save to file if ( HPDF_OK != HPDF_SaveToStream( m_pdf ) ) return 0; // How large is the document? HPDF_UINT32 uSize = HPDF_GetStreamSize( m_pdf ); if ( !uSize ) return 0; // Allocate memory for document if ( uSize > pBin->Size() ) if ( !pBin->Allocate( uSize ) ) return 0; pBin->setUsed( 0 ); // Copy the document if ( HPDF_OK != HPDF_ReadFromStream( m_pdf, (HPDF_BYTE*)pBin->_Ptr(), &uSize ) ) return 0; pBin->setUsed( uSize ); return 1; }
virtual void handleRequest(const Wt::Http::Request& request, Wt::Http::Response& response) { response.setMimeType("application/pdf"); HPDF_Doc pdf = HPDF_New(error_handler, 0); HPDF_UseUTFEncodings(pdf); renderReport(pdf); HPDF_SaveToStream(pdf); unsigned int size = HPDF_GetStreamSize(pdf); HPDF_BYTE *buf = new HPDF_BYTE[size]; HPDF_ReadFromStream (pdf, buf, &size); HPDF_Free(pdf); response.out().write((char*)buf, size); delete[] buf; }
void WPdfImage::handleRequest(const Http::Request& request, Http::Response& response) { HPDF_SaveToStream(pdf_); HPDF_ResetStream(pdf_); response.setMimeType("application/pdf"); for (;;) { HPDF_BYTE buf[4096]; HPDF_UINT32 siz = 4096; HPDF_ReadFromStream (pdf_, buf, &siz); if (siz == 0) break; response.out().write((const char *)buf, siz); } }