Crate pdf_canvas

Source
Expand description

A library for creating pdf files.

Currently, simple vector graphics and text set in the 14 built-in fonts are supported. The main entry point of the crate is the struct Pdf, representing a PDF file being written.

§Example

use pdf_canvas::{Pdf, BuiltinFont, FontSource};
use pdf_canvas::graphicsstate::Color;

let mut document = Pdf::create("example.pdf")
    .expect("Create pdf file");
// The 14 builtin fonts are available
let font = BuiltinFont::Times_Roman;

// Add a page to the document.  This page will be 180 by 240 pt large.
document.render_page(180.0, 240.0, |canvas| {
    // This closure defines the content of the page
    let hello = "Hello World!";
    let w = font.get_width(24.0, hello) + 8.0;

    // Some simple graphics
    canvas.set_stroke_color(Color::rgb(0, 0, 248))?;
    canvas.rectangle(90.0 - w / 2.0, 194.0, w, 26.0)?;
    canvas.stroke()?;

    // Some text
    canvas.center_text(90.0, 200.0, font, 24.0, hello)
}).expect("Write page");
// Write all pending content, including the trailer and index
document.finish().expect("Finish pdf document");

To use this library you need to add it as a dependency in your Cargo.toml:

[dependencies]
pdf-canvas = "*"

Some more working usage examples exists in [the examples directory] (https://github.com/kaj/rust-pdf/tree/master/examples).

Modules§

  • Types for representing details in the graphics state.

Structs§

  • A visual area where content can be drawn (a page).
  • Represent a text encoding used in PDF. An encoding maintains the connection between unicode code points, bytes in PDF strings, and glyph names.
  • Relevant data that can be loaded from an AFM (Adobe Font Metrics) file. A FontMetrics object is specific to a given encoding.
  • A font ready to be used in a TextObject.
  • The top-level object for writing a PDF.
  • A text object is where text is put on the canvas.

Enums§

  • The “Base14” built-in fonts in PDF. Underscores in these names are hyphens in the real names.

Traits§

  • This trait is implemented by any kind of font that the pdf library supports.