github.com/signintech/pdft@v0.5.0/minigopdf/device_rgb_obj.go (about)

     1  package gopdf
     2  
     3  import (
     4  	"bytes"
     5  	"strconv"
     6  )
     7  
     8  // DeviceRGBObj  DeviceRGB
     9  type DeviceRGBObj struct {
    10  	buffer  bytes.Buffer
    11  	data    []byte
    12  	getRoot func() *GoPdf
    13  }
    14  
    15  func (d *DeviceRGBObj) init(funcGetRoot func() *GoPdf) {
    16  	d.getRoot = funcGetRoot
    17  }
    18  
    19  func (d *DeviceRGBObj) protection() *PDFProtection {
    20  	return d.getRoot().protection()
    21  }
    22  
    23  func (d *DeviceRGBObj) getType() string {
    24  	return "devicergb"
    25  }
    26  func (d *DeviceRGBObj) getObjBuff() *bytes.Buffer {
    27  	return &d.buffer
    28  }
    29  
    30  // สร้าง ข้อมูลใน pdf
    31  func (d *DeviceRGBObj) build(objID int) error {
    32  
    33  	d.buffer.WriteString("<<\n")
    34  	d.buffer.WriteString("/Length " + strconv.Itoa(len(d.data)) + "\n")
    35  	d.buffer.WriteString(">>\n")
    36  	d.buffer.WriteString("stream\n")
    37  	if d.protection() != nil {
    38  		tmp, err := rc4Cip(d.protection().objectkey(objID), d.data)
    39  		if err != nil {
    40  			return err
    41  		}
    42  		d.buffer.Write(tmp)
    43  		d.buffer.WriteString("\n")
    44  	} else {
    45  		d.buffer.Write(d.data)
    46  	}
    47  	d.buffer.WriteString("endstream\n")
    48  
    49  	return nil
    50  }