---
name: "Games::Go::Sgf2Dg::Dg2PDF"
section: "3pm"
platform: "linux"
package: "sgf2dg"
version: "4.252-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Games::Go::Sgf2Dg::Dg2PDF"
---

# Games::Go::Sgf2Dg::Dg2PDF(3pm)

convert Games::Go::Sgf2Dg::Diagrams to PDF

## NAME

Games::Go::Sgf2Dg::Dg2PDF - convert Games::Go::Sgf2Dg::Diagrams to PDF

## SYNOPSIS

use Games::Go::Sgf2Dg::Dg2PDF

```
 my $dg2pdf = B<Games::Go::Sgf2Dg::Dg2PDF-E<gt>new> (options);
 $dg2pdf->convertDiagram($diagram);
```

## DESCRIPTION

A Games::Go::Sgf2Dg::Dg2PDF object converts a Games::Go::Sgf2Dg::Diagram object into a PDF file.

## NEW

- my $dg2pdf = **Games::Go::Sgf2Dg::Dg2PDF-\>new** (?options?)

  A **new** Games::Go::Sgf2Dg::Dg2PDF takes the following options:

- **boardSizeX** =\> number

  - **boardSizeY** =\> number

  Sets the size of the board.

  Default: 19

- **doubleDigits** =\> true \| false

  Numbers on stones are wrapped back to 1 after they reach 100. Numbers associated with comments and diagram titles are not affected.

  Default: false

- **coords** =\> true \| false

  Generates a coordinate grid.

  Default: false

- **topLine** =\> number (Default: 1)

  - **bottomLine** =\> number (Default: 19)

  - **leftLine** =\> number (Default: 1)

  - **rightLine** =\> number (Default: 19)

  The edges of the board that should be displayed.  Any portion of the board that extends beyond these numbers is not included in the output.

- **diaCoords** =\> sub { # convert $x, $y to Diagram coordinates }

  This callback defines a subroutine to convert coordinates from `$x`, `$y` to whatever coordinates are used in the Games::Go::Sgf2Dg::Diagram object.  The default **diaCoords** converts 1-based `$x`, `$y` to the same coordinates used in SGF format files.  You only need to define this if you're using a different coordinate system in the Diagram.

  Default:\
       sub { my ($x, `$y`) = `@_`;\
             `$x` = chr($x - 1 + ord('a')); # convert 1 to 'a', etc\
             `$y` = chr($y - 1 + ord('a'));\
             return("$x$y"); },           # concatenate two letters

  See also the **diaCoords** method below.

- **print** =\> sub { my ($dg2tex, @tex) = @\_; ... }

  A user defined subroutine to replace the default printing method. This callback is called from the **print** method (below) with the reference to the **Dg2TeX** object and a list of lines that are part of the TeX diagram source.

- **pageSize** =\> 'page size'

  May be one of:

  - . a0 - a6

    - . letter

    - . broadsheet

    - . ledger

    - . tabloid

    - . legal

    - . executive

    - . 36x36

    Default: 'letter'

- **topMargin** =\> points

  - **bottomMargin** =\> points

  - **leftMargin** =\> points

  - **rightMargin** =\> points

  Margins are set in PDF 'user space units' which are approximately equivilent to points (1/72 of an inch).

  Default for all margins: 72 \* .70 (7/10s of an inch)

- **text\_fontName** =\> 'font' Default: 'Times-Roman',

  - **stone\_fontName** =\> 'font' Default: 'Courier-Bold'

  Text and stone fonts names may be one of these (case sensitive):

  - . Courier

    - . Courier-Bold

    - . Courier-BoldOblique

    - . Courier-Oblique

    - . Helvetica

    - . Helvetica-Bold

    - . Helvetica-BoldOblique

    - . Helvetica-Oblique

    - . Times-Roman

    - . Times-Bold

    - . Times-Italic

    - . Times-BoldItalic

    - **text\_fontSize** =\> points

  The point size for the comment text.  Diagram titles use this size plus 4, and the game title uses this size plus 6.

  Default: 11

- **stone\_fontSize** =\> points

  The **stone\_fontSize** determines the size of the text inside stones, and may also determine the size of the stones and diagrams (see **lineHeight** and **lineWidth** below).

  Default: 5

- **lineWidth** =\> points

  - **lineHeight** =\> points

  The **lineWidth** and **lineHeight** determine the size of the stones and diagrams.

  If **lineWidth** is not explicitly set, it is calculated from the **stone\_fontSize** to allow up to three digits on a stone .  The default **stone\_fontSize** allows for three diagrams (with -coords) per 'letter' page if comments don't take up extra space below diagrams.  If **doubleDigits** is specified, the stones and board are slightly smaller (stone 100 may look a bit cramped).

  If **lineHeight** is not explicitly set, it will be 1.05 \* **lineWidth**, creating a slightly rectangular diagram.

  Default: undef - determined from **stone\_fontSize**

## METHODS

- $dg2pdf-\>**configure** (option =\> value, ?...?)

  Change Dg2PDF options from values passed at **new** time.

- my $coord = $dg2mp-\>**diaCoords** ($x, $y)

  Provides access to the **diaCoords** option (see above).  Returns coordinates in the converter's coordinate system for board coordinates ($x, `$y`).  For example, to get a specific intersection structure:

  ```
      my $int = $diagram->get($dg2mp->diaCoords(3, 4));
  ```

- $dg2pdf-\>**print** ($text ? , ... ?)

  **print**s raw PDF code to **file** as defined at **new** time. Whether or not **file** was defined, **print** accumulates the PDF code for later retrieval with **converted**.

- $dg2pdf-\>**printComment** ($text ? , ... ?)

  Adds `$text` to the diagram comments.

- $dg2pdf-\>**comment** ($comment ? , ... ?)

  Inserts the PDF comment character ('%') in front of each line of each comment and **print**s it to **file**.

  Note that this is *not* the same as the **printComment** method.

- my $canvas = $dg2pdf-\>**convertDiagram** ($diagram)

  Converts a *Games::Go::Sgf2Dg::Diagram* into PDF.

- my $converted\_text = $dg2pdf-\>**convertText** ($text)

  Converts `$text` into text for display.

  Returns the converted text.

- $title = $dg2pdf-\>**convertGameProps** (\\%sgfHash)

  **convertGameProps** takes a reference to a hash of properties as extracted from an SGF file.  Each hash key is a property ID and the hash value is a reference to an array of property values: `$hash`-\>{propertyId}-\>\[values\].  The following SGF properties are recognized:

  - . GN GameName

    - . EV EVent

    - . RO ROund

    - . DT DaTe

    - . PW PlayerWhite

    - . WR WhiteRank

    - . PB PlayerBlack

    - . BR BlackRank

    - . PC PlaCe

    - . KM KoMi

    - . RU RUles

    - . TM TiMe

    - . OT OverTime (byo-yomi)

    - . RE REsult

    - . AN ANnotator

    - . SO Source

    - . US USer (entered by)

    - . CP CoPyright

    - . GC GameComment

    Both long and short property names are recognized, and all unrecognized properties are ignored with no warnings.  Note that these properties are all intended as game-level notations.

- $dg2pdf-\>**close**

  **print**s some final PDF code to the diagram and closes the pdf object (file).

## SEE ALSO

- sgf2dg(1)

  Script to convert SGF format files to Go diagrams

## BUGS

You think I'd admit it?
