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;
}
Example #2
0
    // 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");
Example #3
0
$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);