MCPcopy Create free account
hub / github.com/FreeFem/FreeFem-sources / ~SimplePDFModule

Method ~SimplePDFModule

plugin/seq/plotPDF.cpp:438–599  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

436}
437
438SimplePDFModule::~SimplePDFModule()
439{
440 std::ofstream fout( filename.c_str(), std::ios::app|std::ios::binary );
441
442 //----------------------------------------
443 // PageTree
444 //----------------------------------------
445 std::stringstream strPageTree;
446 strPageTree << "3 0 obj\n"
447 << "<<\n"
448 << " /Kids [";
449
450 for(int i = 0; i < page; i++)
451 strPageTree << ((i == 0)? "": " ") << page_obj_offset+i*2 << " 0 R";
452
453 strPageTree << "]\n"
454 << " /Type /Pages\n"
455 << " /Count " << page << "\n"
456 << ">>\n"
457 << "endobj\n";
458
459 fout << strPageTree.str();
460
461 std::list<int>::iterator itr = xref.begin(); // obj 1 (DocumentInfo)
462 itr++; // obj 2 (DocumentCatalog)
463 itr++; // obj 3 (FontEH at present)
464 itr = xref.insert( itr, byte_offset ); // byte_offset is inserted before itr (FontEH)
465 // and itr indicates byte_offset
466
467 byte_offset += strPageTree.str().length();
468
469 //----------------------------------------
470 // /PageMode \in { /UseNone (default), /UseOutlines, /UseThumbs, /FullScreen, /UseOC, /UseAttachements }
471 //----------------------------------------
472 std::stringstream strPageMode;
473 strPageMode << "4 0 obj\n"
474 << " " << (outline.empty()? "/UseNone\n": "/UseOutlines\n")
475 << "endobj\n";
476
477 fout << strPageMode.str();
478
479 itr++; // obj 3 (FontEH at present)
480 itr = xref.insert( itr, byte_offset ); // byte_offset is inserted before itr (FontEH)
481 // and itr indicates byte_offset
482 byte_offset += strPageMode.str().length();
483
484 //----------------------------------------
485 // Outlines
486 //----------------------------------------
487 std::stringstream strOutlines;
488 strOutlines << "5 0 obj\n"
489 << "<<\n"
490 << " /Type /Outlines\n"
491 << " /Count " << 1+outline.size() << "\n" // 1 : Document Title
492 << " /First 6 0 R\n"
493 << " /Last 6 0 R\n"
494 << ">>\n"
495 << "endobj\n";

Callers

nothing calls this directly

Calls 9

beginMethod · 0.45
insertMethod · 0.45
lengthMethod · 0.45
emptyMethod · 0.45
sizeMethod · 0.45
clearMethod · 0.45
endMethod · 0.45
push_backMethod · 0.45
closeMethod · 0.45

Tested by

no test coverage detected