void PDFGenerator::pdfDoc_AddPage(float width, float height)
{
  if (pdfDocument)
  {
    HPDF_Page newPage = HPDF_AddPage(pdfDocument);

    if (newPage)
    {
      pdfDocCurrentPage = newPage;
      pdfDocPages.push_back(newPage);

      HPDF_Page_SetWidth(newPage, width);
      HPDF_Page_SetHeight(newPage, height);
      _currentPageSize = mlPDF::PAGESIZE_USER;

      HPDF_Page_SetFontAndSize(pdfDocCurrentPage, _currentFontSettings.font, _currentFontSettings.fontSize);

      HPDF_Page_SetLineWidth(pdfDocCurrentPage, 1);
      pdfDoc_SetStrokeColor(0, 0, 0);
      pdfDoc_SetFillColor(0, 0, 0);

      pdfDoc_CurrentXPos = 0;
      pdfDoc_CurrentYPos = 0;
    }
    else
    {
      _handleError("pdfDoc_AddPage(float width, float height)");
    }

  }
}
void PDFGenerator::pdfDoc_AddPage(mlPDF::PAGE_SIZES pageSize, mlPDF::PAGE_DIRECTIONS pageDirection)
{
  if (pdfDocument)
  {
    HPDF_Page newPage = HPDF_AddPage(pdfDocument);

    if (newPage)
    {
      pdfDocCurrentPage = newPage;
      pdfDocPages.push_back(newPage);

      if (pageSize == mlPDF::PAGESIZE_USER) // It is illegal to set this value manually...
      {
        pageSize = mlPDF::PAGESIZE_A4; // ... therefore set it to default value.
      }

      HPDF_Page_SetSize(newPage, (HPDF_PageSizes)pageSize, (HPDF_PageDirection)pageDirection);
      _currentPageSize = pageSize;

      HPDF_Page_SetFontAndSize(pdfDocCurrentPage, _currentFontSettings.font, _currentFontSettings.fontSize);

      HPDF_Page_SetLineWidth(pdfDocCurrentPage, 1);
      pdfDoc_SetStrokeColor(0, 0, 0);
      pdfDoc_SetFillColor(0, 0, 0);

      pdfDoc_CurrentXPos = 0;
      pdfDoc_CurrentYPos = 0;
    }
    else
    {
      _handleError("pdfDoc_AddPage(mlPDF::PAGE_SIZES pageSize, mlPDF::PAGE_DIRECTIONS pageDirection)");
    }
  }
}
Ejemplo n.º 3
0
static bool haru_nsfont_init(HPDF_Doc *pdf, HPDF_Page *page,
		const char *string, char **string_nt, int length)
{

	*pdf = HPDF_New(error_handler, NULL);

	if (*pdf == NULL)
		return false;

	*page = HPDF_AddPage(*pdf);

	if (*page == NULL) {
		HPDF_Free(*pdf);
		return false;
	}

	*string_nt = malloc((length + 1) * sizeof(char));
	if (*string_nt == NULL) {
		HPDF_Free(*pdf);
		return false;
	}

	memcpy(*string_nt, string, length);
	(*string_nt)[length] = '\0';
	return true;
}
Ejemplo n.º 4
0
WPdfImage::WPdfImage(const WLength& width, const WLength& height)
  : width_(width),
    height_(height),
    painter_(nullptr)
{
  myPdf_ = true;

  pdf_ = HPDF_New(error_handler, this);
  if (!pdf_)
    throw WException("Could not create libharu document.");

  HPDF_SetCompressionMode(pdf_, HPDF_COMP_ALL);

  page_ = HPDF_AddPage(pdf_);

  font_ = nullptr;

  x_ = y_ = 0;

  HPDF_Page_SetWidth(page_, width_.toPixels());
  HPDF_Page_SetHeight(page_, height_.toPixels());
  HPDF_Page_GSave(page_);

  trueTypeFonts_ = new FontSupport(this, FontSupport::TrueTypeOnly);

#if HPDF_VERSION_ID>=20300
  HPDF_UseUTFEncodings(pdf_);
#endif
}
Ejemplo n.º 5
0
extern void AP_AddPage()
{
    HPDF_Page page = HPDF_AddPage(AP_getCurrentPdfDoc());
    HPDF_Page_SetSize(page, HPDF_PAGE_SIZE_A4, HPDF_PAGE_LANDSCAPE);
    //TODO change this-1000
    HPDF_Page_SetHeight(page, 1000);
}
Ejemplo n.º 6
0
int main (int argc, char **argv)
{
    HPDF_Doc  pdf;
    HPDF_Font font;
    HPDF_Page page;
    char fname[256];
    HPDF_Destination dst;

    strcpy (fname, argv[0]);
    strcat (fname, ".pdf");

    pdf = HPDF_New (error_handler, NULL);
    if (!pdf) {
        printf ("error: cannot create PdfDoc object\n");
        return 1;
    }

    /* error-handler */
    if (setjmp(env)) {
        HPDF_Free (pdf);
        return 1;
    }

    HPDF_SetCompressionMode (pdf, HPDF_COMP_ALL);

    /* create default-font */
    font = HPDF_GetFont (pdf, "Helvetica", NULL);

    /* add a new page object. */
    page = HPDF_AddPage (pdf);

    HPDF_Page_SetWidth (page, 650);
    HPDF_Page_SetHeight (page, 500);

    dst = HPDF_Page_CreateDestination (page);
    HPDF_Destination_SetXYZ (dst, 0, HPDF_Page_GetHeight (page), 1);
    HPDF_SetOpenAction(pdf, dst);

    HPDF_Page_BeginText (page);
    HPDF_Page_SetFontAndSize (page, font, 20);
    HPDF_Page_MoveTextPos (page, 220, HPDF_Page_GetHeight (page) - 70);
    HPDF_Page_ShowText (page, "JpegDemo");
    HPDF_Page_EndText (page);

    HPDF_Page_SetFontAndSize (page, font, 12);

    draw_image (pdf, "rgb.jpg", 70, HPDF_Page_GetHeight (page) - 410,
                "24bit color image");
    draw_image (pdf, "gray.jpg", 340, HPDF_Page_GetHeight (page) - 410,
                "8bit grayscale image");

    /* save the document to a file */
    HPDF_SaveToFile (pdf, fname);

    /* clean up */
    HPDF_Free (pdf);

    return 0;
}
Ejemplo n.º 7
0
// JNI methods
JNIEXPORT void JNICALL Java_org_libharu_Page_construct
  (JNIEnv *env, jobject obj, jobject document)
{
  haru_setup_error_handler(env, __func__);
  HPDF_Doc pdf = get_HPDF_Doc(env, document);
  HPDF_Page page = HPDF_AddPage(pdf); 
  set_HPDF_Page(env, obj, page);
  haru_clear_error_handler();
}
Ejemplo n.º 8
0
  void renderPdf(const Wt::WString& html, HPDF_Doc pdf)
  {
    HPDF_Page page = HPDF_AddPage(pdf);
    HPDF_Page_SetSize(page, HPDF_PAGE_SIZE_A4, HPDF_PAGE_PORTRAIT);

    Wt::Render::WPdfRenderer renderer(pdf, page);
    renderer.setMargin(2.54);
    renderer.setDpi(96);
    renderer.render(html);
  }
Ejemplo n.º 9
0
int CHaruPdf::AddPage()
{_STT();

	// Sanity checks
	if ( !m_pdf )
		return 0;

	// Add a page
	m_page = HPDF_AddPage( m_pdf );
	if ( !m_page )
		return 0;

	return 1;
}
/*
 * Class:     org_libharu_PdfPage
 * Method:    create
 * Signature: (I)V
 */
JNIEXPORT void JNICALL
Java_org_libharu_PdfPage_create(JNIEnv *env, jobject obj, jint pdf) {
    HPDF_Page page;
    /* Create and add the new page */
    page = HPDF_AddPage((HPDF_Doc) pdf);
    if (page == NULL) {
        LOGE("Failed to create new page");
        return;
    }
    /* Set mHPDFPagePointer */
    (*env)->SetIntField(env, obj, mHPDFPagePointer, (jint) page);
    /* Set mParentHPDFDocPointer*/
    (*env)->SetIntField(env, obj, mParentHPDFDocPointer, pdf);
}
Ejemplo n.º 11
0
HPDF_Page WPdfRenderer::createPage(int page)
{
#ifndef WT_TARGET_JAVA
    HPDF_Page result = HPDF_AddPage(pdf_);

    HPDF_Page_SetWidth(result, HPDF_Page_GetWidth(page_));
    HPDF_Page_SetHeight(result, HPDF_Page_GetHeight(page_));

    return result;
#else
    return Wt::Render::Utils::createPage(pdf_,
                                         HPDF_Page_GetWidth(page_),
                                         HPDF_Page_GetHeight(page_));
#endif
}
Ejemplo n.º 12
0
	bool addJpgPage(HPDF_Doc pdf, char const* jpgname) {
	    HPDF_Page 	page = HPDF_AddPage (pdf);
		if (!page)
			return false;
	    HPDF_Image	image	= HPDF_LoadJpegImageFromFile (pdf, jpgname);
		if (!image) {
			printf("load error %s\n", jpgname);
			return false;
		}
		HPDF_REAL img_w = HPDF_REAL(HPDF_Image_GetWidth(image));
		HPDF_REAL img_h = HPDF_REAL(HPDF_Image_GetHeight(image));
	    HPDF_Page_SetWidth (page, img_w);
	    HPDF_Page_SetHeight(page, img_h);
	    HPDF_Page_DrawImage (page, image, 0, 0, img_w, img_h);
		return true;
	}
Ejemplo n.º 13
0
void hpdf_doc::new_page()
{
	//int n_TX = (et_cp.TX > 0) ? et_cp.TX : et_cp.T,
	//	n_TY = (et_cp.TY > 0) ? et_cp.TY : et_cp.T;

	h_current_page = HPDF_AddPage(h_pdf);

	HPDF_Page_SetSize(h_current_page, HPDF_PAGE_SIZE_A4, h_direction);

	f_width = INCH2PT(f_page_width); // HPDF_Page_GetWidth(h_current_page);
	f_length = INCH2PT(f_page_length); // HPDF_Page_GetHeight(h_current_page);

	f_xpos = f_margin_x = INCH2PT(f_margin_left);
	f_margin_y = INCH2PT(f_margin_top);
	f_ypos = f_margin_y; // f_length - f_margin_y;

	HPDF_Page_SetHeight(h_current_page, f_length);
	HPDF_Page_SetWidth(h_current_page, f_width);

	f_linespace = 0;
}
Ejemplo n.º 14
0
bool pdf_next_page(void)
{
#ifdef PDF_DEBUG
	NSLOG(netsurf, INFO, "pdf_next_page begins");
#endif
	clip_update_needed = false;
	if (pdf_page != NULL) {
		apply_clip_and_mode(false, NS_TRANSPARENT, NS_TRANSPARENT, 0.,
				DashPattern_eNone);
		pdfw_gs_restore(pdf_page);
	}

#ifdef PDF_DEBUG_DUMPGRID
	if (pdf_page != NULL) {
		pdf_plot_grid(10, 10, 0xCCCCCC);
		pdf_plot_grid(100, 100, 0xCCCCFF);
	}
#endif
	pdf_page = HPDF_AddPage(pdf_doc);
	if (pdf_page == NULL)
		return false;

	HPDF_Page_SetWidth (pdf_page, settings->page_width);
	HPDF_Page_SetHeight(pdf_page, settings->page_height);

	HPDF_Page_Concat(pdf_page, 1, 0, 0, 1,
			FIXTOFLT(settings->margins[MARGINLEFT]), 0);

	pdfw_gs_save(pdf_page);

#ifdef PDF_DEBUG
	NSLOG(netsurf, INFO, "%f %f", page_width, page_height);
#endif

	return true;
}
Ejemplo n.º 15
0
		int fileWriter(HPDF_Doc  pdf,
			HPDF_Outline root,
			HPDF_Font font,
			const std::string curFile,
			const std::vector< std::string> vec) {

			auto func_footbar = [](std::string fileName)->std::string {
				std::ostringstream buffer;
				buffer << "  File:" << fileName.c_str() << "   Autor:XCL ";
				return buffer.str();
			};

			auto func_pageOutline = [&](HPDF_Page page, std::string curFile) {
				HPDF_Outline outline;
				HPDF_Destination dst;
				outline = HPDF_CreateOutline(pdf, root, curFile.c_str(), NULL);
				dst = HPDF_Page_CreateDestination(page);
				HPDF_Destination_SetXYZ(dst, 0, HPDF_Page_GetHeight(page), 1);// 1 = 默认百分比100
				HPDF_Outline_SetDestination(outline, dst);
			};
			
			auto func_drawRow = [](HPDF_Page page,std::string rid,std::string row,int y ) {
				HPDF_Page_BeginText(page);
				HPDF_Page_MoveTextPos(page, config::ROWID_WIDTH, y - 2);
				HPDF_Page_ShowText(page, rid.c_str());
				HPDF_Page_ShowText(page, row.c_str());
				HPDF_Page_EndText(page);
			};

			HPDF_Page page = nullptr;			
			HPDF_REAL width,height;		
			HPDF_UINT y = 0;		//  x =0,
			int currID = 0, pageID = 0, currRowCount;
			std::string ss, rid;
	
			for (int i = 0; i < vec.size(); i++) {							
				if (i == 0 || currRowCount >  config::PAGE_ROWNUM) {
					//////////////////////////////////////////////
					page = HPDF_AddPage(pdf);

					width = HPDF_Page_GetWidth(page);
					height = HPDF_Page_GetHeight(page);
//					x = 0;
					y = height - config::ROW_HEIGHT;

					func_pageOutline(page, curFile);
					HPDF_Page_SetSize(page, HPDF_PAGE_SIZE_A4, HPDF_PAGE_PORTRAIT);															

					{
						HPDF_RGBColor c = HPDF_Page_GetRGBFill(page);
						HPDF_Page_SetRGBStroke(page, 0.0, 0.5, 0);
						HPDF_Page_SetFontAndSize(page, font, config::FOOTBAR_FONT_SIZE);
						HPDF_Page_SetLineWidth(page, 0.5);
						HPDF_Page_MoveTo(page, 0, 13);
						HPDF_Page_LineTo(page, width, 16);
						HPDF_Page_Stroke(page);

						HPDF_Page_SetRGBFill(page, 0.0, 0, 0.5);
						HPDF_Page_BeginText(page);
						HPDF_Page_MoveTextPos(page, 40, config::FOOTBAR_FONT_SIZE - 5);
						HPDF_Page_ShowText(page, func_footbar(curFile).c_str());
						HPDF_Page_EndText(page);
						HPDF_Page_SetRGBFill(page, c.r, c.g, c.b);
					};
					
					y = height - config::ROW_HEIGHT * 2;
					HPDF_Page_SetFontAndSize(page, font, config::PAGE_FONT_SIZE);
					pageID++;
					currRowCount = 1;
					//////////////////////////////////////////////
				}
												
				///////////////////////////////////////////			
				 ss = vec[i];
				 HPDF_REAL wrid = HPDF_Page_TextWidth(page, rid.c_str());
			 NEWROW:			
				 HPDF_REAL wss = HPDF_Page_TextWidth(page, ss.c_str());			
				 rid = util::rowidWidth(currRowCount );
				 if (wrid + wss >  width) {
					 //简单处理:超过页宽,直接分成两行.足以应付大部份情况.
					 int center = ss.length() / 2;		 
					 func_drawRow(page, rid,ss.substr(0, center),y);
					 y -= config::ROW_HEIGHT;
					 currRowCount++;
					 ss = ss.substr(center);
					 goto NEWROW;
				 }
				 else {			
					func_drawRow(page, rid, ss,y);				
					y -= config::ROW_HEIGHT;		
					currRowCount++;
				 }
				//////////////////////////////////////////
			}
			return 0;
		} //end func
Ejemplo n.º 16
0
int main(int argc, char **argv)
{
    HPDF_Doc  pdf;
    HPDF_Font font;
    HPDF_Page index_page;
    HPDF_Page page[9];
    HPDF_Destination dst;
    char fname[256];
    HPDF_Rect rect;
    HPDF_Point tp;
    HPDF_Annotation annot;
    HPDF_UINT i;
    const char *uri = "http://libharu.org";

    strcpy (fname, argv[0]);
    strcat (fname, ".pdf");

    pdf = HPDF_New (error_handler, NULL);
    if (!pdf) {
        printf ("error: cannot create PdfDoc object\n");
        return 1;
    }

    if (setjmp(env)) {
        HPDF_Free (pdf);
        return 1;
    }

    /* create default-font */
    font = HPDF_GetFont (pdf, "Helvetica", NULL);

    /* create index page */
    index_page = HPDF_AddPage (pdf);
    HPDF_Page_SetWidth (index_page, 300);
    HPDF_Page_SetHeight (index_page, 220);

    /* Add 7 pages to the document. */
    for (i = 0; i < 7; i++) {
        page[i] = HPDF_AddPage (pdf);
        print_page(page[i], font, i + 1);
    }

    HPDF_Page_BeginText (index_page);
    HPDF_Page_SetFontAndSize (index_page, font, 10);
    HPDF_Page_MoveTextPos (index_page, 15, 200);
    HPDF_Page_ShowText (index_page, "Link Annotation Demo");
    HPDF_Page_EndText (index_page);

    /*
     * Create Link-Annotation object on index page.
     */
    HPDF_Page_BeginText(index_page);
    HPDF_Page_SetFontAndSize (index_page, font, 8);
    HPDF_Page_MoveTextPos (index_page, 20, 180);
    HPDF_Page_SetTextLeading (index_page, 23);

    /* page1 (HPDF_ANNOT_NO_HIGHTLIGHT) */
    tp = HPDF_Page_GetCurrentTextPos (index_page);

    HPDF_Page_ShowText (index_page, "Jump to Page1 (HilightMode=HPDF_ANNOT_NO_HIGHTLIGHT)");
    rect.left = tp.x - 4;
    rect.bottom = tp.y - 4;
    rect.right = HPDF_Page_GetCurrentTextPos (index_page).x + 4;
    rect.top = tp.y + 10;

    HPDF_Page_MoveToNextLine (index_page);

    dst = HPDF_Page_CreateDestination (page[0]);

    annot = HPDF_Page_CreateLinkAnnot (index_page, rect, dst);

    HPDF_LinkAnnot_SetHighlightMode (annot, HPDF_ANNOT_NO_HIGHTLIGHT);


    /* page2 (HPDF_ANNOT_INVERT_BOX) */
    tp = HPDF_Page_GetCurrentTextPos (index_page);

    HPDF_Page_ShowText (index_page, "Jump to Page2 (HilightMode=HPDF_ANNOT_INVERT_BOX)");
    rect.left = tp.x - 4;
    rect.bottom = tp.y - 4;
    rect.right = HPDF_Page_GetCurrentTextPos (index_page).x + 4;
    rect.top = tp.y + 10;

    HPDF_Page_MoveToNextLine (index_page);

    dst = HPDF_Page_CreateDestination (page[1]);

    annot = HPDF_Page_CreateLinkAnnot (index_page, rect, dst);

    HPDF_LinkAnnot_SetHighlightMode (annot, HPDF_ANNOT_INVERT_BOX);


    /* page3 (HPDF_ANNOT_INVERT_BORDER) */
    tp = HPDF_Page_GetCurrentTextPos (index_page);

    HPDF_Page_ShowText (index_page, "Jump to Page3 (HilightMode=HPDF_ANNOT_INVERT_BORDER)");
    rect.left = tp.x - 4;
    rect.bottom = tp.y - 4;
    rect.right = HPDF_Page_GetCurrentTextPos (index_page).x + 4;
    rect.top = tp.y + 10;

    HPDF_Page_MoveToNextLine (index_page);

    dst = HPDF_Page_CreateDestination (page[2]);

    annot = HPDF_Page_CreateLinkAnnot (index_page, rect, dst);

    HPDF_LinkAnnot_SetHighlightMode (annot, HPDF_ANNOT_INVERT_BORDER);


    /* page4 (HPDF_ANNOT_DOWN_APPEARANCE) */
    tp = HPDF_Page_GetCurrentTextPos (index_page);

    HPDF_Page_ShowText (index_page, "Jump to Page4 (HilightMode=HPDF_ANNOT_DOWN_APPEARANCE)");
    rect.left = tp.x - 4;
    rect.bottom = tp.y - 4;
    rect.right = HPDF_Page_GetCurrentTextPos (index_page).x + 4;
    rect.top = tp.y + 10;

    HPDF_Page_MoveToNextLine (index_page);

    dst = HPDF_Page_CreateDestination (page[3]);

    annot = HPDF_Page_CreateLinkAnnot (index_page, rect, dst);

    HPDF_LinkAnnot_SetHighlightMode (annot, HPDF_ANNOT_DOWN_APPEARANCE);


    /* page5 (dash border) */
    tp = HPDF_Page_GetCurrentTextPos (index_page);

    HPDF_Page_ShowText (index_page, "Jump to Page5 (dash border)");
    rect.left = tp.x - 4;
    rect.bottom = tp.y - 4;
    rect.right = HPDF_Page_GetCurrentTextPos (index_page).x + 4;
    rect.top = tp.y + 10;

    HPDF_Page_MoveToNextLine (index_page);

    dst = HPDF_Page_CreateDestination (page[4]);

    annot = HPDF_Page_CreateLinkAnnot (index_page, rect, dst);

    HPDF_LinkAnnot_SetBorderStyle (annot, 1, 3, 2);


    /* page6 (no border) */
    tp = HPDF_Page_GetCurrentTextPos (index_page);

    HPDF_Page_ShowText (index_page, "Jump to Page6 (no border)");
    rect.left = tp.x - 4;
    rect.bottom = tp.y - 4;
    rect.right = HPDF_Page_GetCurrentTextPos (index_page).x + 4;
    rect.top = tp.y + 10;

    HPDF_Page_MoveToNextLine (index_page);

    dst = HPDF_Page_CreateDestination (page[5]);

    annot = HPDF_Page_CreateLinkAnnot (index_page, rect, dst);

    HPDF_LinkAnnot_SetBorderStyle (annot, 0, 0, 0);


    /* page7 (bold border) */
    tp = HPDF_Page_GetCurrentTextPos (index_page);

    HPDF_Page_ShowText (index_page, "Jump to Page7 (bold border)");
    rect.left = tp.x - 4;
    rect.bottom = tp.y - 4;
    rect.right = HPDF_Page_GetCurrentTextPos (index_page).x + 4;
    rect.top = tp.y + 10;

    HPDF_Page_MoveToNextLine (index_page);

    dst = HPDF_Page_CreateDestination (page[6]);

    annot = HPDF_Page_CreateLinkAnnot (index_page, rect, dst);

    HPDF_LinkAnnot_SetBorderStyle (annot, 2, 0, 0);


    /* URI link */
    tp = HPDF_Page_GetCurrentTextPos (index_page);

    HPDF_Page_ShowText (index_page, "URI (");
    HPDF_Page_ShowText (index_page, uri);
    HPDF_Page_ShowText (index_page, ")");

    rect.left = tp.x - 4;
    rect.bottom = tp.y - 4;
    rect.right = HPDF_Page_GetCurrentTextPos (index_page).x + 4;
    rect.top = tp.y + 10;

    HPDF_Page_CreateURILinkAnnot (index_page, rect, uri);

    HPDF_Page_EndText (index_page);

    /* save the document to a file */
    HPDF_SaveToFile (pdf, fname);

    /* clean up */
    HPDF_Free (pdf);

    return 0;
}
Ejemplo n.º 17
0
bool Pdf3d::createAdvancedPdf( const char *filepdf, const char *fileprc, const char *filejs, bool bUseCenter, float cenx, float ceny, float cenz )
{
    HPDF_Rect rect = {_rcleft, _rctop, _rcwidth, _rcheight};
  
    HPDF_Doc  pdf;
    HPDF_Page page;
    HPDF_Annotation annot;
    HPDF_U3D u3d;
  
    pdf = HPDF_New (NULL, NULL);
    if (!pdf) 
    {
        printf ("error: cannot create PdfDoc object\n");
        return false;
    }

    // set up some error handling
    if (setjmp(g_env)) 
    {
        HPDF_Free (pdf);
        return false;
    }

    page = HPDF_AddPage (pdf);
  
    HPDF_Page_SetWidth (page, _rcwidth);
    HPDF_Page_SetHeight (page, _rcheight);

    //HPDF_Dict js = NULL;  SALVA
    //js = HPDF_DictStream_New (pdf->mmgr, pdf->xref);
    //js->header.obj_class |= HPDF_OSUBCLASS_XOBJECT;
    //js->filter = HPDF_STREAM_FILTER_NONE;
    //js = HPDF_LoadJSFromFile  (pdf, filejs);
    u3d = HPDF_LoadU3DFromFile (pdf, fileprc);

    // add javeascript  action
    //HPDF_Dict_Add (u3d, "OnInstantiate", js);  SALVA

#define NS2VIEWS 7
    HPDF_Dict views[NS2VIEWS+1];
    const char *view_names[] = {"Front perspective ('1','H')",
                  "Back perspective ('2')",
                  "Right perspective ('3')",
                  "Left perspective ('4')",
                  "Bottom perspective ('5')", 
                  "Top perspective ('6')",
                  "Oblique perspective ('7')"};
    const float view_c2c[][3] = {{0., 0., 1.},
                   {0., 0., -1.},
                   {-1., 0., 0.},
                   {1., 0., 0.},
                   {0., 1., 0.},
                   {0., -1., 0.},
                   {-1., 1., -1.}};
    const float view_roll[] = {0., 180., 90., -90., 0., 0., 60.};
  
    // query camera point to rotate about - sometimes not the same as focus point
    XYZ pr;
    pr.x = 0; 
    pr.y = 0; 
    pr.z = 0;

    // camera focus point
    //XYZ focus;
    //focus.x = 0;
    //focus.y = 0;
    //focus.z = 0;

    if (bUseCenter)
    {
        pr.x = cenx;
        pr.y = ceny;
        pr.z = cenz;
    }

    float camrot = 5.0;

    // create views
    for (int iv = 0; iv < NS2VIEWS; iv++) 
    {
        views[iv] = HPDF_Create3DView(u3d->mmgr, view_names[iv]);
        HPDF_3DView_SetCamera(views[iv], pr.x, pr.y, pr.z, 
              view_c2c[iv][0], view_c2c[iv][1], view_c2c[iv][2],
              camrot, view_roll[iv]);
        HPDF_3DView_SetPerspectiveProjection(views[iv], 45.0);
        HPDF_3DView_SetBackgroundColor(views[iv], _bgr, _bgg, _bgb);
        HPDF_3DView_SetLighting(views[iv], "White");

        HPDF_U3D_Add3DView(u3d, views[iv]);
    }

    // add a psuedo-orthographic for slicing (actually perspective with point at infinity)
    views[NS2VIEWS] = HPDF_Create3DView(u3d->mmgr, "Orthgraphic slicing view");
    HPDF_3DView_SetCamera(views[NS2VIEWS], pr.x, pr.y, pr.z, 
            view_c2c[0][0], view_c2c[0][1], view_c2c[0][2],
            camrot*82.70f, view_roll[0]);
    HPDF_3DView_SetPerspectiveProjection(views[NS2VIEWS], 0.3333f);
    //HPDF_3DView_SetOrthogonalProjection(views[NS2VIEWS], 45.0/1000.0);
    HPDF_3DView_SetBackgroundColor(views[NS2VIEWS], _bgr,  _bgg, _bgb);
    HPDF_3DView_SetLighting(views[NS2VIEWS], "White");
    HPDF_U3D_Add3DView(u3d, views[NS2VIEWS]);


    HPDF_U3D_SetDefault3DView(u3d, "Front perspective");

    //  Create annotation
    annot = HPDF_Page_Create3DAnnot (page, rect, HPDF_TRUE, HPDF_FALSE, u3d, NULL);
  
    // make the toolbar appear by default
  
   // HPDF_Dict action = (HPDF_Dict)HPDF_Dict_GetItem (annot, "3DA", HPDF_OCLASS_DICT);
   // HPDF_Dict_AddBoolean (action, "TB", HPDF_TRUE);
  

    // save the document to a file 
    HPDF_SaveToFile (pdf, filepdf);
  
    // clean up
    HPDF_Free (pdf);

    return true;
}
Ejemplo n.º 18
0
int main (int argc, char **argv)
{
    HPDF_Doc  pdf;
    char fname[256];
    HPDF_Font font;
    const char *font_name;
    int i = 0;
    HPDF_Outline root;

    const char *encodings[] = {
            "StandardEncoding",
            "MacRomanEncoding",
            "WinAnsiEncoding",
            "ISO8859-2",
            "ISO8859-3",
            "ISO8859-4",
            "ISO8859-5",
            "ISO8859-9",
            "ISO8859-10",
            "ISO8859-13",
            "ISO8859-14",
            "ISO8859-15",
            "ISO8859-16",
            "CP1250",
            "CP1251",
            "CP1252",
            "CP1254",
            "CP1257",
            "KOI8-R",
            "Symbol-Set",
            "ZapfDingbats-Set",
            NULL
    };

    pdf = HPDF_NewEx (error_handler, NULL, NULL, 0, NULL);
    if (!pdf) {
        printf ("error: cannot create PdfDoc object\n");
        return 1;
    }

    if (setjmp(env)) {
        HPDF_Free (pdf);
        return 1;
    }

    strcpy (fname, argv[0]);
    strcat (fname, ".pdf");

    /* set compression mode */
    HPDF_SetCompressionMode (pdf, HPDF_COMP_ALL);

    /* Set page mode to use outlines. */
    HPDF_SetPageMode(pdf, HPDF_PAGE_MODE_USE_OUTLINE);

    /* get default font */
    font = HPDF_GetFont (pdf, "Helvetica", NULL);

    /* load font object */
    #ifdef __WIN32__
    font_name = HPDF_LoadType1FontFromFile (pdf, "type1\\a010013l.afm",
            "type1\\a010013l.pfb");
    #else
    font_name = HPDF_LoadType1FontFromFile (pdf, "type1/a010013l.afm",
            "type1/a010013l.pfb");
    #endif

    /* create outline root. */
    root = HPDF_CreateOutline (pdf, NULL, "Encoding list", NULL);
    HPDF_Outline_SetOpened (root, HPDF_TRUE);

    while (encodings[i]) {
        HPDF_Page page = HPDF_AddPage (pdf);
        HPDF_Outline outline;
        HPDF_Destination dst;
        HPDF_Font font2;

        HPDF_Page_SetWidth (page, PAGE_WIDTH);
        HPDF_Page_SetHeight (page, PAGE_HEIGHT);

        outline = HPDF_CreateOutline (pdf, root, encodings[i], NULL);
        dst = HPDF_Page_CreateDestination (page);
        HPDF_Destination_SetXYZ(dst, 0, HPDF_Page_GetHeight(page), 1);
        /* HPDF_Destination_SetFitB(dst); */
        HPDF_Outline_SetDestination(outline, dst);

        HPDF_Page_SetFontAndSize (page, font, 15);
        draw_graph (page);

        HPDF_Page_BeginText (page);
        HPDF_Page_SetFontAndSize (page, font, 20);
        HPDF_Page_MoveTextPos (page, 40, PAGE_HEIGHT - 50);
        HPDF_Page_ShowText (page, encodings[i]);
        HPDF_Page_ShowText (page, " Encoding");
        HPDF_Page_EndText (page);

        if (strcmp (encodings[i], "Symbol-Set") == 0)
            font2 = HPDF_GetFont (pdf, "Symbol", NULL);
        else if (strcmp (encodings[i], "ZapfDingbats-Set") == 0)
            font2 = HPDF_GetFont (pdf, "ZapfDingbats", NULL);
        else
            font2 = HPDF_GetFont (pdf, font_name, encodings[i]);

        HPDF_Page_SetFontAndSize (page, font2, 14);
        draw_fonts (page);

        i++;
    }

    /* save the document to a file */
    HPDF_SaveToFile (pdf, fname);

    /* clean up */
    HPDF_Free (pdf);

    return 0;
}
Ejemplo n.º 19
0
int main (int argc, char **argv)
{
    const char *page_title = "Font Demo";
    HPDF_Doc  pdf;
    char fname[256];
    HPDF_Page page;
    HPDF_Font def_font;
    HPDF_REAL tw;
    HPDF_REAL height;
    HPDF_REAL width;
    HPDF_UINT i;

    strcpy (fname, argv[0]);
    strcat (fname, ".pdf");

    pdf = HPDF_New (error_handler, NULL);
    if (!pdf) {
        printf ("error: cannot create PdfDoc object\n");
        return 1;
    }

    if (setjmp(env)) {
        HPDF_Free (pdf);
        return 1;
    }

    /* Add a new page object. */
    page = HPDF_AddPage (pdf);

    height = HPDF_Page_GetHeight (page);
    width = HPDF_Page_GetWidth (page);

    /* Print the lines of the page. */
    HPDF_Page_SetLineWidth (page, 1);
    HPDF_Page_Rectangle (page, 50, 50, width - 100, height - 110);
    HPDF_Page_Stroke (page);

    /* Print the title of the page (with positioning center). */
    def_font = HPDF_GetFont (pdf, "Helvetica", NULL);
    HPDF_Page_SetFontAndSize (page, def_font, 24);

    tw = HPDF_Page_TextWidth (page, page_title);
    HPDF_Page_BeginText (page);
    HPDF_Page_TextOut (page, (width - tw) / 2, height - 50, page_title);
    HPDF_Page_EndText (page);

    /* output subtitle. */
    HPDF_Page_BeginText (page);
    HPDF_Page_SetFontAndSize (page, def_font, 16);
    HPDF_Page_TextOut (page, 60, height - 80, "<Standerd Type1 fonts samples>");
    HPDF_Page_EndText (page);

    HPDF_Page_BeginText (page);
    HPDF_Page_MoveTextPos (page, 60, height - 105);

    i = 0;
    while (font_list[i]) {
        const char* samp_text = "ÏðèâåòabcdefgABCDEFG12345!#$%&+-@?";
        HPDF_Font font = HPDF_GetFont (pdf, font_list[i], "CP1251");

        /* print a label of text */
        HPDF_Page_SetFontAndSize (page, def_font, 9);
        HPDF_Page_ShowText (page, font_list[i]);
        HPDF_Page_MoveTextPos (page, 0, -18);

        /* print a sample text. */
        HPDF_Page_SetFontAndSize (page, font, 20);
        HPDF_Page_ShowText (page, samp_text);
        HPDF_Page_MoveTextPos (page, 0, -20);

        i++;
    }

    HPDF_Page_EndText (page);

    HPDF_SaveToFile (pdf, fname);

    /* clean up */
    HPDF_Free (pdf);

    return 0;
}
Ejemplo n.º 20
0
int
main (int argc, char **argv)
{
    HPDF_Doc  pdf;
    HPDF_Page page;
    char fname[256];
    HPDF_Font hfont;
    HPDF_ExtGState gstate;
    const HPDF_REAL PAGE_WIDTH = 600;
    const HPDF_REAL PAGE_HEIGHT = 900;

    strcpy (fname, argv[0]);
    strcat (fname, ".pdf");

    pdf = HPDF_New (error_handler, NULL);
    if (!pdf) {
        printf ("error: cannot create PdfDoc object\n");
        return 1;
    }

    if (setjmp(env)) {
        HPDF_Free (pdf);
        return 1;
    }

    hfont = HPDF_GetFont (pdf, "Helvetica-Bold", NULL);

    /* add a new page object. */
    page = HPDF_AddPage (pdf);

    HPDF_Page_SetFontAndSize (page, hfont, 10);

    HPDF_Page_SetHeight (page, PAGE_HEIGHT);
    HPDF_Page_SetWidth (page, PAGE_WIDTH);

    /* normal */
    HPDF_Page_GSave (page);
    draw_circles (page, "normal", 40.0f, PAGE_HEIGHT - 170);
    HPDF_Page_GRestore (page);

    /* transparency (0.8) */
    HPDF_Page_GSave (page);
    gstate = HPDF_CreateExtGState (pdf);
    HPDF_ExtGState_SetAlphaFill (gstate, 0.8);
    HPDF_ExtGState_SetAlphaStroke (gstate, 0.8);
    HPDF_Page_SetExtGState (page, gstate);
    draw_circles (page, "alpha fill = 0.8", 230.0f, PAGE_HEIGHT - 170);
    HPDF_Page_GRestore (page);

    /* transparency (0.4) */
    HPDF_Page_GSave (page);
    gstate = HPDF_CreateExtGState (pdf);
    HPDF_ExtGState_SetAlphaFill (gstate, 0.4);
    HPDF_Page_SetExtGState (page, gstate);
    draw_circles (page, "alpha fill = 0.4", 420.0f, PAGE_HEIGHT - 170);
    HPDF_Page_GRestore (page);

    /* blend-mode=HPDF_BM_MULTIPLY */
    HPDF_Page_GSave (page);
    gstate = HPDF_CreateExtGState (pdf);
    HPDF_ExtGState_SetBlendMode (gstate, HPDF_BM_MULTIPLY);
    HPDF_Page_SetExtGState (page, gstate);
    draw_circles (page, "HPDF_BM_MULTIPLY", 40.0f, PAGE_HEIGHT - 340);
    HPDF_Page_GRestore (page);

    /* blend-mode=HPDF_BM_SCREEN */
    HPDF_Page_GSave (page);
    gstate = HPDF_CreateExtGState (pdf);
    HPDF_ExtGState_SetBlendMode (gstate, HPDF_BM_SCREEN);
    HPDF_Page_SetExtGState (page, gstate);
    draw_circles (page, "HPDF_BM_SCREEN", 230.0f, PAGE_HEIGHT - 340);
    HPDF_Page_GRestore (page);

    /* blend-mode=HPDF_BM_OVERLAY */
    HPDF_Page_GSave (page);
    gstate = HPDF_CreateExtGState (pdf);
    HPDF_ExtGState_SetBlendMode (gstate, HPDF_BM_OVERLAY);
    HPDF_Page_SetExtGState (page, gstate);
    draw_circles (page, "HPDF_BM_OVERLAY", 420.0f, PAGE_HEIGHT - 340);
    HPDF_Page_GRestore (page);

    /* blend-mode=HPDF_BM_DARKEN */
    HPDF_Page_GSave (page);
    gstate = HPDF_CreateExtGState (pdf);
    HPDF_ExtGState_SetBlendMode (gstate, HPDF_BM_DARKEN);
    HPDF_Page_SetExtGState (page, gstate);
    draw_circles (page, "HPDF_BM_DARKEN", 40.0f, PAGE_HEIGHT - 510);
    HPDF_Page_GRestore (page);

    /* blend-mode=HPDF_BM_LIGHTEN */
    HPDF_Page_GSave (page);
    gstate = HPDF_CreateExtGState (pdf);
    HPDF_ExtGState_SetBlendMode (gstate, HPDF_BM_LIGHTEN);
    HPDF_Page_SetExtGState (page, gstate);
    draw_circles (page, "HPDF_BM_LIGHTEN", 230.0f, PAGE_HEIGHT - 510);
    HPDF_Page_GRestore (page);

    /* blend-mode=HPDF_BM_COLOR_DODGE */
    HPDF_Page_GSave (page);
    gstate = HPDF_CreateExtGState (pdf);
    HPDF_ExtGState_SetBlendMode (gstate, HPDF_BM_COLOR_DODGE);
    HPDF_Page_SetExtGState (page, gstate);
    draw_circles (page, "HPDF_BM_COLOR_DODGE", 420.0f, PAGE_HEIGHT - 510);
    HPDF_Page_GRestore (page);


    /* blend-mode=HPDF_BM_COLOR_BUM */
    HPDF_Page_GSave (page);
    gstate = HPDF_CreateExtGState (pdf);
    HPDF_ExtGState_SetBlendMode (gstate, HPDF_BM_COLOR_BUM);
    HPDF_Page_SetExtGState (page, gstate);
    draw_circles (page, "HPDF_BM_COLOR_BUM", 40.0f, PAGE_HEIGHT - 680);
    HPDF_Page_GRestore (page);

    /* blend-mode=HPDF_BM_HARD_LIGHT */
    HPDF_Page_GSave (page);
    gstate = HPDF_CreateExtGState (pdf);
    HPDF_ExtGState_SetBlendMode (gstate, HPDF_BM_HARD_LIGHT);
    HPDF_Page_SetExtGState (page, gstate);
    draw_circles (page, "HPDF_BM_HARD_LIGHT", 230.0f, PAGE_HEIGHT - 680);
    HPDF_Page_GRestore (page);

    /* blend-mode=HPDF_BM_SOFT_LIGHT */
    HPDF_Page_GSave (page);
    gstate = HPDF_CreateExtGState (pdf);
    HPDF_ExtGState_SetBlendMode (gstate, HPDF_BM_SOFT_LIGHT);
    HPDF_Page_SetExtGState (page, gstate);
    draw_circles (page, "HPDF_BM_SOFT_LIGHT", 420.0f, PAGE_HEIGHT - 680);
    HPDF_Page_GRestore (page);

    /* blend-mode=HPDF_BM_DIFFERENCE */
    HPDF_Page_GSave (page);
    gstate = HPDF_CreateExtGState (pdf);
    HPDF_ExtGState_SetBlendMode (gstate, HPDF_BM_DIFFERENCE);
    HPDF_Page_SetExtGState (page, gstate);
    draw_circles (page, "HPDF_BM_DIFFERENCE", 40.0f, PAGE_HEIGHT - 850);
    HPDF_Page_GRestore (page);


    /* blend-mode=HPDF_BM_EXCLUSHON */
    HPDF_Page_GSave (page);
    gstate = HPDF_CreateExtGState (pdf);
    HPDF_ExtGState_SetBlendMode (gstate, HPDF_BM_EXCLUSHON);
    HPDF_Page_SetExtGState (page, gstate);
    draw_circles (page, "HPDF_BM_EXCLUSHON", 230.0f, PAGE_HEIGHT - 850);
    HPDF_Page_GRestore (page);


    /* save the document to a file */
    HPDF_SaveToFile (pdf, fname);

    /* clean up */
    HPDF_Free (pdf);

    return 0;
}
Ejemplo n.º 21
0
// Setup a PDF document with one page
static void
add_a4page(void) {
    pdf_page = HPDF_AddPage (pdf_doc);
    HPDF_Page_SetSize (pdf_page, HPDF_PAGE_SIZE_A4, HPDF_PAGE_PORTRAIT);
}
Ejemplo n.º 22
0
int main (int /* argc */, char **argv)
{
    const char *page_title = "Font Demo";
    HPDF_Doc  pdf;
    char fname[256];
    HPDF_Page page;
    HPDF_Font def_font;
    HPDF_REAL tw;
    HPDF_REAL height;
    HPDF_REAL width;
    HPDF_UINT i;
    HPDF_Image image;
    double x;
    double y;
    double iw;
    double ih;
    HPDF_Stream stream;
    
    strcpy (fname, argv[0]);
    strcat (fname, ".pdf");

    pdf = HPDF_New (error_handler, NULL);
    if (!pdf) {
        printf ("error: cannot create PdfDoc object\n");
        return 1;
    }

    if (setjmp(env)) {
        HPDF_Free (pdf);
        return 1;
    }

    /* Add a new page object. */
    page = HPDF_AddPage (pdf);

    height = HPDF_Page_GetHeight (page);
    width = HPDF_Page_GetWidth (page);

    /* Print the lines of the page. */
    HPDF_Page_SetLineWidth (page, 1);
    HPDF_Page_Rectangle (page, 50, 50, width - 100, height - 110);
    HPDF_Page_Stroke (page);

    /* Print the title of the page (with positioning center). */
    def_font = HPDF_GetFont (pdf, "Helvetica", NULL);
    HPDF_Page_SetFontAndSize (page, def_font, 24);

    tw = HPDF_Page_TextWidth (page, page_title);
    HPDF_Page_BeginText (page);
    HPDF_Page_TextOut (page, (width - tw) / 2, height - 50, page_title);
    HPDF_Page_EndText (page);

    /* output subtitle. */
    HPDF_Page_BeginText (page);
    HPDF_Page_SetFontAndSize (page, def_font, 16);
    HPDF_Page_TextOut (page, 60, height - 80, "<Standerd Type1 fonts samples>");
    HPDF_Page_EndText (page);

    HPDF_Page_BeginText (page);
    HPDF_Page_MoveTextPos (page, 60, height - 105);

    i = 0;
    while (font_list[i]) {
        const char* samp_text = "abcdefgABCDEFG12345!#$%&+-@?";
        HPDF_Font font = HPDF_GetFont (pdf, font_list[i], NULL);

        /* print a label of text */
        HPDF_Page_SetFontAndSize (page, def_font, 9);
        HPDF_Page_ShowText (page, font_list[i]);
        HPDF_Page_MoveTextPos (page, 0, -18);

        /* print a sample text. */
        HPDF_Page_SetFontAndSize (page, font, 20);
        HPDF_Page_ShowText (page, samp_text);
        HPDF_Page_MoveTextPos (page, 0, -20);

        i++;
    }

    HPDF_Page_EndText (page);

    /* Add a new page object. */
    page = HPDF_AddPage (pdf);

    height = HPDF_Page_GetHeight (page);
    width = HPDF_Page_GetWidth (page);
    
    /* load image file. */
    image = HPDF_LoadPngImageFromFile (pdf, "test.png");

    x = 100;
    y = 100;
    iw = HPDF_Image_GetWidth (image);
    ih = HPDF_Image_GetHeight (image);
    
    /* Draw image to the canvas. (normal-mode with actual size.)*/
    HPDF_Page_DrawImage (page, image, x, y, iw, ih);
    
    HPDF_SaveToFile (pdf, fname);
    
    /* write something via zlib */
    stream = HPDF_FileWriter_New( pdf->mmgr, "test2.raw" );    
    HPDF_Stream_WriteToStream( image->stream, stream, HPDF_STREAM_FILTER_FLATE_DECODE, NULL );
    HPDF_Stream_Free (stream);
    
    /* clean up */
    HPDF_Free (pdf);

    return 0;
}
Ejemplo n.º 23
0
int main(int argc, char **argv)
{
    HPDF_Rect rect1 = {50, 350, 150, 400};
    HPDF_Rect rect2 = {210, 350, 350, 400};
    HPDF_Rect rect3 = {50, 250, 150, 300};
    HPDF_Rect rect4 = {210, 250, 350, 300};
    HPDF_Rect rect5 = {50, 150, 150, 200};
    HPDF_Rect rect6 = {210, 150, 350, 200};
    HPDF_Rect rect7 = {50, 50, 150, 100};
    HPDF_Rect rect8 = {210, 50, 350, 100};

    HPDF_Doc  pdf;
    char fname[256];
    HPDF_Page page;
    HPDF_Font font;
    HPDF_Encoder encoding;
    HPDF_Annotation annot;

    strcpy (fname, argv[0]);
    strcat (fname, ".pdf");

    pdf = HPDF_New (error_handler, NULL);
    if (!pdf) {
        printf ("error: cannot create PdfDoc object\n");
        return 1;
    }

    if (setjmp(env)) {
        HPDF_Free (pdf);
        return 1;
    }

    /* use Times-Roman font. */
    font = HPDF_GetFont (pdf, "Times-Roman", "WinAnsiEncoding");

    page = HPDF_AddPage (pdf);

    HPDF_Page_SetWidth (page, 400);
    HPDF_Page_SetHeight (page, 500);

    HPDF_Page_BeginText (page);
    HPDF_Page_SetFontAndSize (page, font, 16);
    HPDF_Page_MoveTextPos (page, 130, 450);
    HPDF_Page_ShowText (page, "Annotation Demo");
    HPDF_Page_EndText (page);


    annot = HPDF_Page_CreateTextAnnot (page, rect1, "Annotation with Comment "
                "Icon. \n This annotation set to be opened initially.",
                NULL);

    HPDF_TextAnnot_SetIcon (annot, HPDF_ANNOT_ICON_COMMENT);
    HPDF_TextAnnot_SetOpened (annot, HPDF_TRUE);

    annot = HPDF_Page_CreateTextAnnot (page, rect2,
                "Annotation with Key Icon", NULL);
    HPDF_TextAnnot_SetIcon (annot, HPDF_ANNOT_ICON_PARAGRAPH);

    annot = HPDF_Page_CreateTextAnnot (page, rect3,
                "Annotation with Note Icon", NULL);
    HPDF_TextAnnot_SetIcon (annot, HPDF_ANNOT_ICON_NOTE);

    annot = HPDF_Page_CreateTextAnnot (page, rect4,
                "Annotation with Help Icon", NULL);
    HPDF_TextAnnot_SetIcon (annot, HPDF_ANNOT_ICON_HELP);

    annot = HPDF_Page_CreateTextAnnot (page, rect5,
                "Annotation with NewParagraph Icon", NULL);
    HPDF_TextAnnot_SetIcon (annot, HPDF_ANNOT_ICON_NEW_PARAGRAPH);

    annot = HPDF_Page_CreateTextAnnot (page, rect6,
                "Annotation with Paragraph Icon", NULL);
    HPDF_TextAnnot_SetIcon (annot, HPDF_ANNOT_ICON_PARAGRAPH);

    annot = HPDF_Page_CreateTextAnnot (page, rect7,
                "Annotation with Insert Icon", NULL);
    HPDF_TextAnnot_SetIcon (annot, HPDF_ANNOT_ICON_INSERT);

    encoding = HPDF_GetEncoder (pdf, "ISO8859-2");

    HPDF_Page_CreateTextAnnot (page, rect8,
                "Annotation with ISO8859 text гдежзий", encoding);

    HPDF_Page_SetFontAndSize (page, font, 11);

    HPDF_Page_BeginText (page);
    HPDF_Page_MoveTextPos (page, rect1.left + 35, rect1.top - 20);
    HPDF_Page_ShowText (page, "Comment Icon.");
    HPDF_Page_EndText (page);

    HPDF_Page_BeginText (page);
    HPDF_Page_MoveTextPos (page, rect2.left + 35, rect2.top - 20);
    HPDF_Page_ShowText (page, "Key Icon");
    HPDF_Page_EndText (page);

    HPDF_Page_BeginText (page);
    HPDF_Page_MoveTextPos (page, rect3.left + 35, rect3.top - 20);
    HPDF_Page_ShowText (page, "Note Icon.");
    HPDF_Page_EndText (page);

    HPDF_Page_BeginText (page);
    HPDF_Page_MoveTextPos (page, rect4.left + 35, rect4.top - 20);
    HPDF_Page_ShowText (page, "Help Icon");
    HPDF_Page_EndText (page);

    HPDF_Page_BeginText (page);
    HPDF_Page_MoveTextPos (page, rect5.left + 35, rect5.top - 20);
    HPDF_Page_ShowText (page, "NewParagraph Icon");
    HPDF_Page_EndText (page);

    HPDF_Page_BeginText (page);
    HPDF_Page_MoveTextPos (page, rect6.left + 35, rect6.top - 20);
    HPDF_Page_ShowText (page, "Paragraph Icon");
    HPDF_Page_EndText (page);

    HPDF_Page_BeginText (page);
    HPDF_Page_MoveTextPos (page, rect7.left + 35, rect7.top - 20);
    HPDF_Page_ShowText (page, "Insert Icon");
    HPDF_Page_EndText (page);

    HPDF_Page_BeginText (page);
    HPDF_Page_MoveTextPos (page, rect8.left + 35, rect8.top - 20);
    HPDF_Page_ShowText (page, "Text Icon(ISO8859-2 text)");
    HPDF_Page_EndText (page);


    /* save the document to a file */
    HPDF_SaveToFile (pdf, fname);

    /* clean up */
    HPDF_Free (pdf);

    return 0;
}
Ejemplo n.º 24
0
int main (int argc, char **argv)
{
    HPDF_Doc  pdf;
    HPDF_Font font;
    HPDF_Page page;
    char fname[256];
    HPDF_Image image;

    HPDF_REAL x, y;

    strcpy (fname, argv[0]);
    strcat (fname, ".pdf");

    pdf = HPDF_New (error_handler, NULL);
    if (!pdf) {
        printf ("error: cannot create PdfDoc object\n");
        return 1;
    }

    /* error-handler */
    if (setjmp(env)) {
        HPDF_Free (pdf);
        return 1;
    }

    HPDF_SetCompressionMode (pdf, HPDF_COMP_ALL);

    /* create default-font */
    font = HPDF_GetFont (pdf, "Helvetica", NULL);

    /* add a new page object. */
    page = HPDF_AddPage (pdf);

    HPDF_Page_SetWidth (page, 172);
    HPDF_Page_SetHeight (page, 80);

    HPDF_Page_BeginText (page);
    HPDF_Page_SetFontAndSize (page, font, 20);
    HPDF_Page_MoveTextPos (page, 220, HPDF_Page_GetHeight (page) - 70);
    HPDF_Page_ShowText (page, "RawImageDemo");
    HPDF_Page_EndText (page);

    /* load RGB raw-image file. */
    #ifndef __WIN32__
    image = HPDF_LoadRawImageFromFile (pdf, "rawimage/32_32_rgb.dat",
            32, 32, HPDF_CS_DEVICE_RGB);
    #else
    image = HPDF_LoadRawImageFromFile (pdf, "rawimage\\32_32_rgb.dat",
            32, 32, HPDF_CS_DEVICE_RGB);
    #endif

    x = 20;
    y = 20;

    /* Draw image to the canvas. (normal-mode with actual size.)*/
    HPDF_Page_DrawImage (page, image, x, y, 32, 32);

    /* load GrayScale raw-image file. */
    #ifndef __WIN32__
    image = HPDF_LoadRawImageFromFile (pdf, "rawimage/32_32_gray.dat",
            32, 32, HPDF_CS_DEVICE_GRAY);
    #else
    image = HPDF_LoadRawImageFromFile (pdf, "rawimage\\32_32_gray.dat",
            32, 32, HPDF_CS_DEVICE_GRAY);
    #endif

    x = 70;
    y = 20;

    /* Draw image to the canvas. (normal-mode with actual size.)*/
    HPDF_Page_DrawImage (page, image, x, y, 32, 32);

    /* load GrayScale raw-image (1bit) file from memory. */
    image = HPDF_LoadRawImageFromMem (pdf, RAW_IMAGE_DATA, 32, 32,
                HPDF_CS_DEVICE_GRAY, 1);

    x = 120;
    y = 20;

    /* Draw image to the canvas. (normal-mode with actual size.)*/
    HPDF_Page_DrawImage (page, image, x, y, 32, 32);

    /* save the document to a file */
    HPDF_SaveToFile (pdf, fname);

    /* clean up */
    HPDF_Free (pdf);

    return 0;
}
Ejemplo n.º 25
0
int main (int argc, char **argv)
{
    const char *page_title = "Text Demo";

    HPDF_Doc  pdf;
    HPDF_Font font;
    HPDF_Page page;
    char fname[256];

    const char* samp_text = "abcdefgABCDEFG123!#$%&+-@?";
    const char* samp_text2 = "The quick brown fox jumps over the lazy dog.";
    float tw;
    float fsize;
    int i;
    int len;

    float angle1;
    float angle2;
    float rad1;
    float rad2;

    float ypos;

    strcpy (fname, argv[0]);
    strcat (fname, ".pdf");

    pdf = HPDF_New (error_handler, NULL);
    if (!pdf) {
        printf ("error: cannot create PdfDoc object\n");
        return 1;
    }

    if (setjmp(env)) {
        HPDF_Free (pdf);
        return 1;
    }

    /* set compression mode */
    HPDF_SetCompressionMode (pdf, HPDF_COMP_ALL);

    /* create default-font */
    font = HPDF_GetFont (pdf, "Helvetica", NULL);

    /* add a new page object. */
    page = HPDF_AddPage (pdf);

    /* draw grid to the page */
    print_grid  (pdf, page);

    /* print the lines of the page.
    HPDF_Page_SetLineWidth (page, 1);
    HPDF_Page_Rectangle (page, 50, 50, HPDF_Page_GetWidth(page) - 100,
                HPDF_Page_GetHeight (page) - 110);
    HPDF_Page_Stroke (page);
    */

    /* print the title of the page (with positioning center). */
    HPDF_Page_SetFontAndSize (page, font, 24);
    tw = HPDF_Page_TextWidth (page, page_title);
    HPDF_Page_BeginText (page);
    HPDF_Page_TextOut (page, (HPDF_Page_GetWidth(page) - tw) / 2,
                HPDF_Page_GetHeight (page) - 50, page_title);
    HPDF_Page_EndText (page);

    HPDF_Page_BeginText (page);
    HPDF_Page_MoveTextPos (page, 60, HPDF_Page_GetHeight(page) - 60);

    /*
     * font size
     */
    fsize = 8;
    while (fsize < 60) {
        char buf[50];
        int len;

        /* set style and size of font. */
        HPDF_Page_SetFontAndSize(page, font, fsize);

        /* set the position of the text. */
        HPDF_Page_MoveTextPos (page, 0, -5 - fsize);

        /* measure the number of characters which included in the page. */
        strcpy(buf, samp_text);
        len = HPDF_Page_MeasureText (page, samp_text,
                        HPDF_Page_GetWidth(page) - 120, HPDF_FALSE, NULL);

        /* truncate the text. */
        buf[len] = 0x00;

        HPDF_Page_ShowText (page, buf);

        /* print the description. */
        HPDF_Page_MoveTextPos (page, 0, -10);
        HPDF_Page_SetFontAndSize(page, font, 8);
        #ifdef __WIN32__
        _snprintf(buf, 50, "Fontsize=%.0f", fsize);
        #else
        snprintf(buf, 50, "Fontsize=%.0f", fsize);
        #endif
        HPDF_Page_ShowText (page, buf);

        fsize *= 1.5;
    }

    /*
     * font color
     */
    HPDF_Page_SetFontAndSize(page, font, 8);
    HPDF_Page_MoveTextPos (page, 0, -30);
    HPDF_Page_ShowText (page, "Font color");

    HPDF_Page_SetFontAndSize (page, font, 18);
    HPDF_Page_MoveTextPos (page, 0, -20);
    len = strlen (samp_text);
    for (i = 0; i < len; i++) {
        char buf[2];
        float r = (float)i / (float)len;
        float g = 1 - ((float)i / (float)len);
        buf[0] = samp_text[i];
        buf[1] = 0x00;

        HPDF_Page_SetRGBFill (page, r, g, 0.0);
        HPDF_Page_ShowText (page, buf);
    }
    HPDF_Page_MoveTextPos (page, 0, -25);

    for (i = 0; i < len; i++) {
        char buf[2];
        float r = (float)i / (float)len;
        float b = 1 - ((float)i / (float)len);
        buf[0] = samp_text[i];
        buf[1] = 0x00;

        HPDF_Page_SetRGBFill (page, r, 0.0, b);
        HPDF_Page_ShowText (page, buf);
    }
    HPDF_Page_MoveTextPos (page, 0, -25);

    for (i = 0; i < len; i++) {
        char buf[2];
        float b = (float)i / (float)len;
        float g = 1 - ((float)i / (float)len);
        buf[0] = samp_text[i];
        buf[1] = 0x00;

        HPDF_Page_SetRGBFill (page, 0.0, g, b);
        HPDF_Page_ShowText (page, buf);
    }

    HPDF_Page_EndText (page);

    ypos = 450;

    /*
     * Font rendering mode
     */
    HPDF_Page_SetFontAndSize(page, font, 32);
    HPDF_Page_SetRGBFill (page, 0.5, 0.5, 0.0);
    HPDF_Page_SetLineWidth (page, 1.5);

     /* PDF_FILL */
    show_description (page,  60, ypos,
                "RenderingMode=PDF_FILL");
    HPDF_Page_SetTextRenderingMode (page, HPDF_FILL);
    HPDF_Page_BeginText (page);
    HPDF_Page_TextOut (page, 60, ypos, "ABCabc123");
    HPDF_Page_EndText (page);

    /* PDF_STROKE */
    show_description (page, 60, ypos - 50,
                "RenderingMode=PDF_STROKE");
    HPDF_Page_SetTextRenderingMode (page, HPDF_STROKE);
    HPDF_Page_BeginText (page);
    HPDF_Page_TextOut (page, 60, ypos - 50, "ABCabc123");
    HPDF_Page_EndText (page);

    /* PDF_FILL_THEN_STROKE */
    show_description (page, 60, ypos - 100,
                "RenderingMode=PDF_FILL_THEN_STROKE");
    HPDF_Page_SetTextRenderingMode (page, HPDF_FILL_THEN_STROKE);
    HPDF_Page_BeginText (page);
    HPDF_Page_TextOut (page, 60, ypos - 100, "ABCabc123");
    HPDF_Page_EndText (page);

    /* PDF_FILL_CLIPPING */
    show_description (page, 60, ypos - 150,
                "RenderingMode=PDF_FILL_CLIPPING");
    HPDF_Page_GSave (page);
    HPDF_Page_SetTextRenderingMode (page, HPDF_FILL_CLIPPING);
    HPDF_Page_BeginText (page);
    HPDF_Page_TextOut (page, 60, ypos - 150, "ABCabc123");
    HPDF_Page_EndText (page);
    show_stripe_pattern (page, 60, ypos - 150);
    HPDF_Page_GRestore (page);

    /* PDF_STROKE_CLIPPING */
    show_description (page, 60, ypos - 200,
                "RenderingMode=PDF_STROKE_CLIPPING");
    HPDF_Page_GSave (page);
    HPDF_Page_SetTextRenderingMode (page, HPDF_STROKE_CLIPPING);
    HPDF_Page_BeginText (page);
    HPDF_Page_TextOut (page, 60, ypos - 200, "ABCabc123");
    HPDF_Page_EndText (page);
    show_stripe_pattern (page, 60, ypos - 200);
    HPDF_Page_GRestore (page);

    /* PDF_FILL_STROKE_CLIPPING */
    show_description (page, 60, ypos - 250,
                "RenderingMode=PDF_FILL_STROKE_CLIPPING");
    HPDF_Page_GSave (page);
    HPDF_Page_SetTextRenderingMode (page, HPDF_FILL_STROKE_CLIPPING);
    HPDF_Page_BeginText (page);
    HPDF_Page_TextOut (page, 60, ypos - 250, "ABCabc123");
    HPDF_Page_EndText (page);
    show_stripe_pattern (page, 60, ypos - 250);
    HPDF_Page_GRestore (page);

    /* Reset text attributes */
    HPDF_Page_SetTextRenderingMode (page, HPDF_FILL);
    HPDF_Page_SetRGBFill (page, 0, 0, 0);
    HPDF_Page_SetFontAndSize(page, font, 30);


    /*
     * Rotating text
     */
    angle1 = 30;                   /* A rotation of 30 degrees. */
    rad1 = angle1 / 180 * 3.141592; /* Calcurate the radian value. */

    show_description (page, 320, ypos - 60, "Rotating text");
    HPDF_Page_BeginText (page);
    HPDF_Page_SetTextMatrix (page, cos(rad1), sin(rad1), -sin(rad1), cos(rad1),
                330, ypos - 60);
    HPDF_Page_ShowText (page, "ABCabc123");
    HPDF_Page_EndText (page);


    /*
     * Skewing text.
     */
    show_description (page, 320, ypos - 120, "Skewing text");
    HPDF_Page_BeginText (page);

    angle1 = 10;
    angle2 = 20;
    rad1 = angle1 / 180 * 3.141592;
    rad2 = angle2 / 180 * 3.141592;

    HPDF_Page_SetTextMatrix (page, 1, tan(rad1), tan(rad2), 1, 320, ypos - 120);
    HPDF_Page_ShowText (page, "ABCabc123");
    HPDF_Page_EndText (page);


    /*
     * scaling text (X direction)
     */
    show_description (page, 320, ypos - 175, "Scaling text (X direction)");
    HPDF_Page_BeginText (page);
    HPDF_Page_SetTextMatrix (page, 1.5, 0, 0, 1, 320, ypos - 175);
    HPDF_Page_ShowText (page, "ABCabc12");
    HPDF_Page_EndText (page);


    /*
     * scaling text (Y direction)
     */
    show_description (page, 320, ypos - 250, "Scaling text (Y direction)");
    HPDF_Page_BeginText (page);
    HPDF_Page_SetTextMatrix (page, 1, 0, 0, 2, 320, ypos - 250);
    HPDF_Page_ShowText (page, "ABCabc123");
    HPDF_Page_EndText (page);


    /*
     * char spacing, word spacing
     */

    show_description (page, 60, 140, "char-spacing 0");
    show_description (page, 60, 100, "char-spacing 1.5");
    show_description (page, 60, 60, "char-spacing 1.5, word-spacing 2.5");

    HPDF_Page_SetFontAndSize (page, font, 20);
    HPDF_Page_SetRGBFill (page, 0.1, 0.3, 0.1);

    /* char-spacing 0 */
    HPDF_Page_BeginText (page);
    HPDF_Page_TextOut (page, 60, 140, samp_text2);
    HPDF_Page_EndText (page);

    /* char-spacing 1.5 */
    HPDF_Page_SetCharSpace (page, 1.5);

    HPDF_Page_BeginText (page);
    HPDF_Page_TextOut (page, 60, 100, samp_text2);
    HPDF_Page_EndText (page);

    /* char-spacing 1.5, word-spacing 3.5 */
    HPDF_Page_SetWordSpace (page, 2.5);

    HPDF_Page_BeginText (page);
    HPDF_Page_TextOut (page, 60, 60, samp_text2);
    HPDF_Page_EndText (page);

    /* save the document to a file */
    HPDF_SaveToFile (pdf, fname);

    /* clean up */
    HPDF_Free (pdf);

    return 0;
}
Ejemplo n.º 26
0
int main (int argc, char **argv)
{
    HPDF_Doc  pdf;
    HPDF_Font font;
    HPDF_Page page;
    char fname[256];
    HPDF_Image image;
	char *png_image_data;
	FILE *fp;

    HPDF_REAL x, y;

    strcpy (fname, argv[0]);
    strcat (fname, ".pdf");

    pdf = HPDF_New (error_handler, NULL);
    if (!pdf) {
        printf ("error: cannot create PdfDoc object\n");
        return 1;
    }

    /* error-handler */
    if (setjmp(env)) {
        HPDF_Free (pdf);
        return 1;
    }

    HPDF_SetCompressionMode (pdf, HPDF_COMP_ALL);

    /* create default-font */
    font = HPDF_GetFont (pdf, "Helvetica", NULL);

    /* add a new page object. */
    page = HPDF_AddPage (pdf);

    HPDF_Page_BeginText (page);
    HPDF_Page_SetFontAndSize (page, font, 20);
    HPDF_Page_MoveTextPos (page, 220, HPDF_Page_GetHeight (page) - 70);
    HPDF_Page_ShowText (page, "RawImageDemo");
    HPDF_Page_EndText (page);

	int n;

	fp = fopen("2.png", "r");
	png_image_data = malloc(1024*1024);
	n = fread(png_image_data, 1, 1024*1024, fp);
	fclose(fp);

    /* load GrayScale raw-image (1bit) file from memory. */
    image = HPDF_LoadPngImageFromMem (pdf, png_image_data, n);

    /* Draw image to the canvas. (normal-mode with actual size.)*/
    HPDF_Page_DrawImage (page, image, 20, 20, 1024, 768);

	free(png_image_data);

    /* save the document to a file */
    HPDF_SaveToFile (pdf, fname);

    /* clean up */
    HPDF_Free (pdf);

    return 0;
}
Ejemplo n.º 27
0
void
generate_pdf (const char *outname, const char *tmpdirname, int num_fonts,
	      int num_input_files, const JBDATA * data,
	      const struct mapping *maps, int debug_draw_borders)
{
  int i, j;
  /* Create the pdf document */
  l_int32 ncomp = numaGetCount (data->naclass);
  HPDF_Doc pdf = HPDF_New (pdf_error_handler, NULL);

  HPDF_SetCompressionMode (pdf, HPDF_COMP_ALL);
  HPDF_Font *fonts = malloc_guarded (num_fonts * (sizeof (HPDF_Font)));

  int dirlen = strlen (tmpdirname);

  /* Load the fonts */
  for (i = 0; i < num_fonts; i++)
    {
      /* 1 for '/', 8 for %08d, 4 for '.ttf' */
      int fontlen = dirlen + 1 + 8 + 4;
      char *font_tfname = malloc_guarded (fontlen + 1);
      sprintf (font_tfname, "%s/%08d.ttf", tmpdirname, i);

      const char *font_name =
	HPDF_LoadTTFontFromFile (pdf, font_tfname, HPDF_TRUE);
      fonts[i] = HPDF_GetFont (pdf, font_name, "KOI8-R");
      free (font_tfname);
    }

  for (j = 0; j < num_input_files; j++)
    {
      /* Add page to document */
      HPDF_Page pg = HPDF_AddPage (pdf);

      HPDF_Page_SetWidth (pg, data->w);
      HPDF_Page_SetHeight (pg, data->h);

      /* TODO: Boost efficiency by making startcomp go to the next page on the next iteration */
      int start_comp = 0;

      for (i = start_comp; i < ncomp; i++)
	{
	  l_int32 ipage;
	  l_int32 iclass;
	  l_int32 x;
	  l_int32 y;

	  numaGetIValue (data->napage, i, &ipage);

	  if (ipage != j)
	    continue;

	  numaGetIValue (data->naclass, i, &iclass);
	  ptaGetIPt (data->ptaul, i, &x, &y);

	  /*double left = x;
	     double top = data->h - y;
	     double right = x + data->latticew;
	     double bottom = data->h - (y + data->latticeh); */

	  char text[2];
	  text[0] = maps[iclass].code_point;
	  text[1] = '\0';

	  HPDF_Font font = fonts[maps[iclass].font_num];

	  HPDF_Page_BeginText (pg);
	  double fontsize = 100;

	  if (fontsize > 300)
	    {
	      error_quit ("This is a known bug.\n"
			  "libharu can't handle fontsizes bigger than 300, which is what is being requested here.\n"
			  "Please report this bug, and the file that produced this error");
	    }

	  HPDF_Page_SetFontAndSize (pg, font, 100);

	  HPDF_Page_MoveTextPos (pg, x, (data->h - y) - data->latticeh);
	  HPDF_Page_ShowText (pg, text);

	  HPDF_Page_EndText (pg);

	  if (debug_draw_borders)
	    {
	      HPDF_Page_SetRGBStroke (pg, 1, 0, 0);
	      /* In this, x, y is the LOWER LEFT, not UPPER LEFT */
	      HPDF_Page_Rectangle (pg, x, (data->h - y) - data->latticeh,
				   data->latticew, data->latticeh);
	      HPDF_Page_Stroke (pg);
	    }
	}
    }

  /* Output */
  HPDF_SaveToFile (pdf, outname);

  /* Cleanup */
  HPDF_Free (pdf);
  free (fonts);
}
Ejemplo n.º 28
0
int
main (int argc, char **argv)
{
    HPDF_Doc  pdf;
    HPDF_Page page;
    char fname[256];
    HPDF_Font font;
    //float angle1;
    //float angle2;
    //float rad1;
    //float rad2;
    //HPDF_REAL page_height;
    HPDF_Rect rect;
    //int i;

    //const char* SAMP_TXT = "Дирк Мюллер: власть над миром принадлежит банкам";


    strcpy (fname, argv[0]);
    strcat (fname, ".pdf");

    pdf = HPDF_New (error_handler, NULL);
    if (!pdf) {
        printf ("error: cannot create PdfDoc object\n");
        return 1;
    }

    if (setjmp(env)) {
        HPDF_Free (pdf);
        return 1;
    }

    //printf("%s\n",HPDF_GetCurrentEncoder (pdf));

    /* add a new page object. */
    page = HPDF_AddPage (pdf);
    HPDF_Page_SetSize (page, HPDF_PAGE_SIZE_A4, HPDF_PAGE_LANDSCAPE); // HPDF_PAGE_PORTRAIT

    //print_grid  (pdf, page);

    //page_height = HPDF_Page_GetHeight (page);

    //page_height += 0;

    font = HPDF_GetFont (pdf, "Courier", "CP1251");
    HPDF_Page_SetTextLeading (page, 20);

    /* text_rect method */

    /* HPDF_TALIGN_LEFT */
    rect.left = 25;
    rect.top = 545;
    rect.right = 200;
    rect.bottom = rect.top - 20;



    //~ HPDF_Page_Rectangle (page, 200 , 300 , 300, 100);
    //~ HPDF_Page_Stroke (page);

    //~ HPDF_Page_BeginText (page);
    //~ HPDF_Page_SetFontAndSize (page, font, 10);


    //~ int cnt =0;
    //~ HPDF_Page_TextRect (page, 10 , 600, 50, 550,
            //~ "123 45 6789 123 45 6789",
                    //~ HPDF_TALIGN_LEFT, &cnt);
    //~ printf("printed %d\n", cnt);
    //~ HPDF_Page_EndText (page);

    HPDF_Page_BeginText (page);



    HPDF_Page_SetFontAndSize (page, font, 11);
    //HPDF_Page_TextOut (page, rect.left, rect.top + 3, "Поставщик");

    echo1(page, "Поставщик", "ООО «РЕКО»", 0);
    echo1(page, "ИНН", "4345363002", 1);
    echo1(page, "КПП", "434501001", 2);
    echo1(page, "Телефон/факс", "62-38-67, 78-88-58", 3);
    echo1(page, "Расчетный счет", "40702810200220090271", 4);
    echo1(page, "Корр. счет", "30101810100000000711", 5);
    echo1(page, "Банк", "ОАО КБ «Хлынов» г. Киров", 6);
    echo1(page, "БИК", "043304711", 7);
    echo1(page, "", "Счет № / от ", 8);
    echo1(page, "Плательщик: КОГКУ «Государственный архив социально-политической истории Кировской области»", "", 10);
    echo1(page, "Юр. г. Киров, ул. Казанская, 16а,", "", 11);
    echo1(page, "Факс: (8332) 35-75-56,", "", 12);
    echo1(page, "ИНН: 4345057460 ", "", 13);

    HPDF_Page_SetFontAndSize (page, font, 12);
    HPDF_Page_EndText (page);

    int collum_size[] = {40, 7, 10, 7, 12, 12, 12};

    char* text[] = {"Наименование товара", "Ед.Изм.", "Количество", "Цена", "Сумма без НДС", "Сумма НДС", "Всего с НДС",
        "1. Оказание услуг хостинга с 01 апреля 2015г. по 30 июня 2015г.", "шт.", "1", "5100=00", "5100=00", "0", "5100=00",
        "Всего к оплате:", "", "", "", "5100=00", "0", "5100=00"
        };

    table(page, font, 3, 7, 10,  HPDF_Page_GetHeight(page)-20 - (17*10), 20, /*!*/
            collum_size, text);

    draw_image (pdf, "shtamp2.png", 100, 0 , "8bit alpha.");

    int collum_size2[] = {50, 50};
    char* text2[] = {"Итого: Пять тысяч сто рублей 00 копеек", "5100=00 ",
            "ООО «РЕКО» применяет упрощенную систему налогообложения", "",
            "Директор ООО «РЕКО» ______________ /Лажинцев П.В./ ", " Главный бухгалтер ______________/_________________/ "
        };
    table(page, font, 3, 2, 10,  HPDF_Page_GetHeight(page)-20 - (25*10), 20, /*!*/
            collum_size2, text2);




    /* HPDF_TALIGN_RIGTH */
    //~ rect.left = 220;
    //~ rect.right = 395;
//~
    //~ HPDF_Page_Rectangle (page, rect.left, rect.bottom, rect.right - rect.left,
                //~ rect.top - rect.bottom);
    //~ HPDF_Page_Stroke (page);
//~
    //~ HPDF_Page_BeginText (page);
//~
    //~ HPDF_Page_SetFontAndSize (page, font, 10);
    //~ HPDF_Page_TextOut (page, rect.left, rect.top + 3, "HPDF_TALIGN_RIGTH");
//~
    //~ HPDF_Page_SetFontAndSize (page, font, 13);
    //~ HPDF_Page_TextRect (page, rect.left, rect.top, rect.right, rect.bottom,
                //~ SAMP_TXT, HPDF_TALIGN_RIGHT, NULL);
//~
//~
    //~ HPDF_Page_EndText (page);

    //~ /* HPDF_TALIGN_CENTER */
    //~ rect.left = 25;
    //~ rect.top = 475;
    //~ rect.right = 200;
    //~ rect.bottom = rect.top - 40;
//~
    //~ HPDF_Page_Rectangle (page, rect.left, rect.bottom, rect.right - rect.left,
                //~ rect.top - rect.bottom);
    //~ HPDF_Page_Stroke (page);
//~
    //~ HPDF_Page_BeginText (page);
//~
    //~ HPDF_Page_SetFontAndSize (page, font, 10);
    //~ HPDF_Page_TextOut (page, rect.left, rect.top + 3, "HPDF_TALIGN_CENTER");
//~
    //~ HPDF_Page_SetFontAndSize (page, font, 13);
    //~ HPDF_Page_TextRect (page, rect.left, rect.top, rect.right, rect.bottom,
                //~ SAMP_TXT, HPDF_TALIGN_CENTER, NULL);
//~
    //~ HPDF_Page_EndText (page);
//~
    //~ /* HPDF_TALIGN_JUSTIFY */
    //~ rect.left = 220;
    //~ rect.right = 395;
//~
    //~ HPDF_Page_Rectangle (page, rect.left, rect.bottom, rect.right - rect.left,
                //~ rect.top - rect.bottom);
    //~ HPDF_Page_Stroke (page);
//~
    //~ HPDF_Page_BeginText (page);
//~
    //~ HPDF_Page_SetFontAndSize (page, font, 10);
    //~ HPDF_Page_TextOut (page, rect.left, rect.top + 3, "HPDF_TALIGN_JUSTIFY");
//~
    //~ HPDF_Page_SetFontAndSize (page, font, 13);
    //~ HPDF_Page_TextRect (page, rect.left, rect.top, rect.right, rect.bottom,
                //~ SAMP_TXT, HPDF_TALIGN_JUSTIFY, NULL);
//~
    //~ HPDF_Page_EndText (page);
//~
//~
//~
    //~ /* Skewed coordinate system */
    //~ HPDF_Page_GSave (page);
//~
    //~ angle1 = 5;
    //~ angle2 = 10;
    //~ rad1 = angle1 / 180 * 3.141592;
    //~ rad2 = angle2 / 180 * 3.141592;
//~
    //~ HPDF_Page_Concat (page, 1, tan(rad1), tan(rad2), 1, 25, 350);
    //~ rect.left = 0;
    //~ rect.top = 40;
    //~ rect.right = 175;
    //~ rect.bottom = 0;
//~
    //~ HPDF_Page_Rectangle (page, rect.left, rect.bottom, rect.right - rect.left,
                //~ rect.top - rect.bottom);
    //~ HPDF_Page_Stroke (page);
//~
    //~ HPDF_Page_BeginText (page);
//~
    //~ HPDF_Page_SetFontAndSize (page, font, 10);
    //~ HPDF_Page_TextOut (page, rect.left, rect.top + 3, "Skewed coordinate system");
//~
    //~ HPDF_Page_SetFontAndSize (page, font, 13);
    //~ HPDF_Page_TextRect (page, rect.left, rect.top, rect.right, rect.bottom,
                //~ SAMP_TXT, HPDF_TALIGN_LEFT, NULL);
//~
    //~ HPDF_Page_EndText (page);
//~
    //~ HPDF_Page_GRestore (page);
//~
//~
    //~ /* Rotated coordinate system */
    //~ HPDF_Page_GSave (page);
//~
    //~ angle1 = 5;
    //~ rad1 = angle1 / 180 * 3.141592;
//~
    //~ HPDF_Page_Concat (page, cos(rad1), sin(rad1), -sin(rad1), cos(rad1), 220, 350);
    //~ rect.left = 0;
    //~ rect.top = 40;
    //~ rect.right = 175;
    //~ rect.bottom = 0;
//~
    //~ HPDF_Page_Rectangle (page, rect.left, rect.bottom, rect.right - rect.left,
                //~ rect.top - rect.bottom);
    //~ HPDF_Page_Stroke (page);
//~
    //~ HPDF_Page_BeginText (page);
//~
    //~ HPDF_Page_SetFontAndSize (page, font, 10);
    //~ HPDF_Page_TextOut (page, rect.left, rect.top + 3, "Rotated coordinate system");
//~
    //~ HPDF_Page_SetFontAndSize (page, font, 13);
    //~ HPDF_Page_TextRect (page, rect.left, rect.top, rect.right, rect.bottom,
                //~ SAMP_TXT, HPDF_TALIGN_LEFT, NULL);
//~
    //~ HPDF_Page_EndText (page);
//~
    //~ HPDF_Page_GRestore (page);
//~
//~
    //~ /* text along a circle */
    //~ HPDF_Page_SetGrayStroke (page, 0);
    //~ HPDF_Page_Circle (page, 210, 190, 145);
    //~ HPDF_Page_Circle (page, 210, 190, 113);
    //~ HPDF_Page_Stroke (page);
//~
    //~ angle1 = 360 / (strlen (SAMP_TXT));
    //~ angle2 = 180;
//~
    //~ HPDF_Page_BeginText (page);
    //~ font = HPDF_GetFont (pdf, "Courier-Bold", NULL);
    //~ HPDF_Page_SetFontAndSize (page, font, 30);
//~
    //~ for (i = 0; i < strlen (SAMP_TXT); i++) {
        //~ char buf[2];
        //~ float x;
        //~ float y;
//~
        //~ rad1 = (angle2 - 90) / 180 * 3.141592;
        //~ rad2 = angle2 / 180 * 3.141592;
//~
        //~ x = 210 + cos(rad2) * 122;
        //~ y = 190 + sin(rad2) * 122;
//~
        //~ HPDF_Page_SetTextMatrix(page, cos(rad1), sin(rad1), -sin(rad1), cos(rad1), x, y);
//~
        //~ buf[0] = SAMP_TXT[i];
        //~ buf[1] = 0;
        //~ HPDF_Page_ShowText (page, buf);
        //~ angle2 -= angle1;
    //~ }
//~
    //~ HPDF_Page_EndText (page);

    /* save the document to a file */
    HPDF_SaveToFile (pdf, fname);

    /* clean up */
    HPDF_Free (pdf);

    return 0;
}
Ejemplo n.º 29
0
int main (int argc, char **argv)
{
    HPDF_Doc  pdf;
    HPDF_Page page;
    HPDF_Font def_font;
    HPDF_REAL height;
    HPDF_REAL width;
    HPDF_UINT i;
    int page_num = 1;
    int done = 0;
    char page_number[MAXSTRING];
    int line_num = 1;
    FILE *input_file = NULL;
    for (i = 1; i < argc; i++)
    {
        if (strcmp(argv[i], "-t") == 0)
        {
            strcpy(page_title, argv[++i]);
        }
        else if (strcmp(argv[i], "-o") == 0)
        {
            strcpy(fname, argv[++i]);
        }
        else if (strcmp(argv[i], "-k") == 0)
        {
            page_margin_odd = page_margin_kindle;
            page_margin_even = page_margin_kindle;
        }
        else if (strcmp(argv[i], "-n") == 0)
        {
            no_line_number = 1;
        }
        else if (strcmp(argv[i], "-h")==0)
        {
            usage();
        }
        else if (strcmp(argv[i], "-l") == 0)
        {
            use_landscape = 1;
            page_margin_odd = page_margin_odd_landscape;
            page_margin_even = page_margin_even_landscape;
            LINES_PER_PAGE=50;
        }
        else if (strcmp(argv[i], "-")==0)
        {
            input_file = stdin;
        }
        else
        {
            input_file = fopen(argv[i], "r");
        }
    }

    if (input_file == NULL)
    {
        printf("error: no input specified\n");
        usage();
    }

    pdf = HPDF_New (error_handler, NULL);
    if (!pdf) {
        printf ("error: cannot create PdfDoc object\n");
        return 1;
    }
    if (setjmp(env)) {
        HPDF_Free (pdf);
        return 1;
    }
    while (!done)
    {
        int n = 0;
        char buf[1000];
        char *p;

        while ((p = fgets(buf, 999, input_file)) && n < LINES_PER_PAGE)
        {
            if (buf[0] == '@')
            {
                if (strncmp(buf, "@title ", 7)==0)
                {
                    strcpy(page_title, buf+7);
                }
                else if (strncmp(buf, "@newpage", 8)==0)
                {
                    if (n != 0 && n != LINES_PER_PAGE-1)
                    {
                        line_num += LINES_PER_PAGE;
                        line_num -= line_num % LINES_PER_PAGE;
                        line_num ++;
                        break;
                    }
                }
                continue;
            }
            lines[n].line_num = line_num++;
            strcpy(lines[n].line, buf);
            n++;
        }

        /* If no more input in future, this is the last page,
         * flag as done.
         */
        if (p == NULL)
            done = 1;

        /* If no lines are read, we are done. */
        if (n == 0)
            break;

        /* Add a new page object. */
        page = HPDF_AddPage (pdf);
        HPDF_Page_SetSize (page, HPDF_PAGE_SIZE_A4, use_landscape?HPDF_PAGE_LANDSCAPE:HPDF_PAGE_PORTRAIT); 
        HPDF_Page_SetRGBFill(page, 0, 0, 0);
        
        height = HPDF_Page_GetHeight (page);
        width = HPDF_Page_GetWidth (page);

        page_margin = EVENPAGE(page_num) ? page_margin_even : page_margin_odd;
        page_size.cx = (int)width;
        page_size.cy = (int)height;

        def_font = HPDF_GetFont (pdf, default_font_name, NULL);
        HPDF_Page_SetFontAndSize (page, def_font, 16);
        print_page_header(pdf, page, page_title);
        print_page_content(pdf, page, lines, n);
        sprintf(page_number, "%d", page_num);
        print_page_footer(pdf, page, page_number);
        page_num++;
    }
    if (page_num > 1)
    {
        HPDF_SaveToFile (pdf, fname);
        printf("Output written to %s\n", fname);
    }
    else
    {
        printf("No output\n");
    }
    
    if (input_file != stdin && input_file != NULL)
        fclose(input_file);

    /* clean up */
    HPDF_Free (pdf);
    return 0;
}
Ejemplo n.º 30
0
int write_pdf(int argc, char ** argv, FILE * pipe_in, FILE * pipe_out, FILE * pipe_err)
{
  char * filename = argc > 1 ? argv[1] : "output.pdf";
  if (argc == 1)
  {
    fprintf(stderr, "no filename specified, using '%s'\n", filename);
  }
  
  float b[3][2] = {
    {FLT_MAX, -FLT_MAX},
    {FLT_MAX, -FLT_MAX},
    {FLT_MAX, -FLT_MAX}
  };
  
  HPDF_Doc pdf;
  
  pdf = HPDF_New(NULL, NULL); 
  if (!pdf)
  {
    fprintf(stderr, "ERROR: cannot create pdf object.\n");
    return 1;
  }
  
  HPDF_SetCompressionMode (pdf, HPDF_COMP_ALL);
  HPDF_SetPageMode (pdf, HPDF_PAGE_MODE_USE_OUTLINE);
  
  int num_shapes = 0;
  struct Shape ** shapes = NULL;
  
  HPDF_Page page;
  page = HPDF_AddPage (pdf);
  
  HPDF_Page_SetSize (page, HPDF_PAGE_SIZE_LETTER, HPDF_PAGE_PORTRAIT);
  
  long i = 0;
  struct Shape * shape = NULL;
  while ((shape = read_shape(pipe_in)))
  {
    num_shapes++;
    shapes = (struct Shape **)realloc(shapes, sizeof(struct Shape*)*num_shapes);
    if (shapes == NULL) { fprintf(stderr, "realloc for shapes failed :(\n"); exit(0); }
    shapes[num_shapes-1] = shape;
    
    long j;
    for (j = 0 ; j < shape->num_vertexs ; j++)
    {
      float * v = get_vertex(shape, 0, j);
      if (v[0] < b[0][0]) b[0][0] = v[0]; if (v[0] > b[0][1]) b[0][1] = v[0];
      if (v[1] < b[1][0]) b[1][0] = v[1]; if (v[1] > b[1][1]) b[1][1] = v[1];
    }
  }
  
  float dx = b[0][1] - b[0][0];
  float dy = b[1][1] - b[1][0];
  float ratio = dy / dx;
  
  HPDF_Page_SetWidth(page, 2000);
  HPDF_Page_SetHeight(page, 2000.0 * ratio);
  
  for (i = 0 ; i < num_shapes ; i++)
  {
    shape = shapes[i];
    //if (shape->vertex_arrays[0].num_dimensions < 2) { fprintf(stderr, "\n"); continue; }
    
    long j;
    for (j = 0 ; j < shape->num_vertexs ; j++)
    {
      float * v = get_vertex(shape, 0, j);
      if (j == 0)
        HPDF_Page_MoveTo(page, (v[0] - b[0][0]) / dx * 2000.0, (v[1] - b[1][0]) / dy * (2000.0 * ratio));
      else
        HPDF_Page_LineTo(page, (float)(v[0] - b[0][0]) / dx * 2000.0, (float)(v[1] - b[1][0]) / dy * (2000.0 * ratio));
    }
    
    if (shape->gl_type == GL_LINE_LOOP)
    {
      float * v = get_vertex(shape, 0, 0);
      HPDF_Page_LineTo(page, (float)(v[0] - b[0][0]) / dx * 2000.0, (float)(v[1] - b[1][0]) / dy * (2000.0 * ratio));
    }
    
    HPDF_Page_Stroke(page);
    free_shape(shape);
  }
  free(shapes);
  
  HPDF_SaveToFile (pdf, filename);
  
  HPDF_Free(pdf);
}