function CreateButtonAppearance($doc, $button_down) { // Create a button appearance stream ------------------------------------ $build = new ElementBuilder(); $writer = new ElementWriter(); $writer->Begin($doc->GetSDFDoc()); // Draw background $element = $build->CreateRect(0, 0, 101, 37); $element->SetPathFill(true); $element->SetPathStroke(false); $element->GetGState()->SetFillColorSpace(ColorSpace::CreateDeviceGray()); $element->GetGState()->SetFillColor(new ColorPt(0.75, 0.0, 0.0)); $writer->WriteElement($element); // Draw 'Submit' text $writer->WriteElement($build->CreateTextBegin()); $text = "Submit"; $element = $build->CreateTextRun($text, Font::Create($doc->GetSDFDoc(), Font::e_helvetica_bold), 12.0); $element->GetGState()->SetFillColor(new ColorPt(0.0, 0.0, 0.0)); if ($button_down) { $element->SetTextMatrix(1.0, 0.0, 0.0, 1.0, 33.0, 10.0); } else { $element->SetTextMatrix(1.0, 0.0, 0.0, 1.0, 30.0, 13.0); } $writer->WriteElement($element); $writer->WriteElement($build->CreateTextEnd()); $stm = $writer->End(); // Set the bounding box $stm->PutRect("BBox", 0, 0, 101, 37); $stm->PutName("Subtype", "Form"); return $stm; }
// A bit more advanced example of how to create an OCMD text layer that // is visible only if text, image and path layers are all 'ON'. // An example of how to set 'Visibility Policy' in OCMD. $ocgs = $doc->CreateIndirectArray(); $ocgs->PushBack($image_layer->GetSDFObj()); $ocgs->PushBack($vector_layer->GetSDFObj()); $ocgs->PushBack($text_layer->GetSDFObj()); $text_ocmd = OCMD::Create($doc, $ocgs, OCMD::e_AllOn); $element = $builde->CreateForm(CreateGroup3($doc, $text_ocmd->GetSDFObj())); } else { $element = $builder->CreateForm(CreateGroup3($doc, $text_layer->GetSDFObj())); } $writer->WriteElement($element); // Add some content to the page that does not belong to any layer... // In this case this is a rectangle representing the page border. $element = $builder->CreateRect(0, 0, $page->GetPageWidth(), $page->GetPageHeight()); $element->SetPathFill(false); $element->SetPathStroke(true); $element->GetGState()->SetLineWidth(40); $writer->WriteElement($element); $writer->End(); // save changes to the current page $doc->PagePushBack($page); // Set the default viewing preference to display 'Layer' tab. $prefs = $doc->GetViewPrefs(); $prefs->SetPageMode(PDFDocViewPrefs::e_UseOC); $doc->Save($output_path . "pdf_layers.pdf", SDFDoc::e_linearized); echo nl2br("Done.\n"); // The following is a code snippet shows how to selectively render // and export PDF layers. $doc = new PDFDoc($output_path . "pdf_layers.pdf");
$gs->SetLineWidth(4); // Set the fill color space to the Pattern color space. $gs->SetFillColorSpace(ColorSpace::CreatePattern()); $gs->SetFillColor(new PatternColor(CreateTilingPattern($doc))); $writer->WriteElement($element); $writer->WriteElement($builder->CreateTextEnd()); // Finish the text block $writer->End(); // Save the page $doc->PagePushBack($page); //----------------------------------------------- /// The following sample illustrates how to create and use image tiling pattern $page = $doc->PageCreate(); $writer->Begin($page); $builder->Reset(); $element = $builder->CreateRect(0, 0, 612, 794); // Set the fill color space to the Pattern color space. $gs = $element->GetGState(); $gs->SetFillColorSpace(ColorSpace::CreatePattern()); $gs->SetFillColor(new PatternColor(CreateImageTilingPattern($doc))); $element->SetPathFill(true); $writer->WriteElement($element); $writer->End(); // Save the page $doc->PagePushBack($page); //----------------------------------------------- /// The following sample illustrates how to create and use PDF shadings $page = $doc->PageCreate(); $writer->Begin($page); $builder->Reset(); $element = $builder->CreateRect(0, 0, 612, 794);