Loading...
Searching...
No Matches
pdftron::PDF::ContentReplacer Class Reference

`#include <ContentReplacer.h>`

## Public Member Functions
| ContentReplacer ()
| ~ContentReplacer ()
void | AddImage (const Rect &target_region, SDF::Obj replacement_image)
void | AddText (const Rect &target_region, const UString &replacement_text)
void | AddString (const UString &template_text, const UString &replacement_text)
void | SetMatchStrings (const UString &start_str, const UString &end_str)
void | Process (Page &page)
void | Destroy ()

## Public Attributes
TRN_ContentReplacer | mp_impl

## Detailed Description

ContentReplacer is a utility class for replacing content (text and images) in existing PDF (template) documents.

Users can replace content in a PDF page using the following operations:

- Replace an image that exists in a target rectangle with a replacement image.
- Replace text that exists in a target rectangle with replacement text.
- Replace all instances of a specially marked string with replacement string.

The following code replaces an image in a target region. This code also replaces the text "[NAME]" and "[JOB_TITLE]" with "John Smith" and "Software Developer" respectively. Notice the square braces ('[' and ']') on the target strings in the original PDFDoc. These square braces are not included in the actual function calls below, as they're implicitly added.

PDFDoc doc("../../TestFiles/BusinessCardTemplate.pdf");
doc.InitSecurityHandler();
ContentReplacer replacer;
Page page = doc.GetPage(1);
Image img = Image::Create(doc, "../../TestFiles/peppers.jpg");
replacer.AddImage(page.GetMediaBox(), img.GetSDFObj());
replacer.AddString("NAME", "John Smith");
replacer.AddString("JOB_TITLE", "Software Developer");
replacer.Process(page);
pdftron::PDF::ContentReplacer::AddImage
void AddImage(const Rect &target_region, SDF::Obj replacement_image)
pdftron::PDF::ContentReplacer::Process
void Process(Page &page)
pdftron::PDF::ContentReplacer::ContentReplacer
ContentReplacer()
pdftron::PDF::ContentReplacer::AddString
void AddString(const UString &template_text, const UString &replacement_text)
pdftron::PDF::Image
Definition Image.h:23
pdftron::PDF::Image::GetSDFObj
SDF::Obj GetSDFObj() const
pdftron::PDF::Image::Create
static Image Create(SDF::SDFDoc &doc, const UString &filename, SDF::Obj encoder_hints=0)
pdftron::PDF::PDFDoc
Definition PDFDoc.h:72
pdftron::PDF::Page
Definition Page.h:32
pdftron::PDF::Page::GetMediaBox
Rect GetMediaBox() const

Definition at line 40 of file ContentReplacer.h.

## Constructor & Destructor Documentation

## ◆ ContentReplacer()

pdftron::PDF::ContentReplacer::ContentReplacer | ( |  | ) |

Create a new ContentReplacer object, to which replacement rules will be added. The same object can be used to 'Process' multiple pages.

## ◆ ~ContentReplacer()

pdftron::PDF::ContentReplacer::~ContentReplacer | ( |  | ) |

## Member Function Documentation

## ◆ AddImage()

void pdftron::PDF::ContentReplacer::AddImage | ( | const Rect & | target_region,
|  | SDF::Obj | replacement_image )

Replace the image that best fits into 'target_region' with 'replacement_image'.

Parameters

  target_region | - The rectangle defining the area in which an image that best fits the rectangle will be replaced by 'replacement_image'.
  replacement_image | - The 'SDF.Obj' of a 'PDF.Image' object.

Note
  The best fit is the image that closest matches 'target_region'. For example if there are two images on the page, one taking up all of the page, and the other smaller, and the smaller one has similar dimensions and position of 'target_region', then the smaller image would be replaced, not the larger. Furthermore, if 'target_region' encloses multiple images, then only the image with the largest area in 'target_region' will be replaced.

## ◆ AddString()

void pdftron::PDF::ContentReplacer::AddString | ( | const UString & | template_text,
|  | const UString & | replacement_text )

Any text of the form "[template_text]" will be replaced by "replacement_text".

Parameters

  template_text | - The text to remove.
  replacement_text | - The new text that will appear in place of 'template_text'.

Note
  Only text wrapped in '[' and ']' will be checked, and if it matches 'template_text', then 'template_text' and the surrounding square braces will be replaced by 'replacement_text'. For example AddString("TITLE", "Doctor") will replace any text consisting of "[TITLE]" with "Doctor".

## ◆ AddText()

void pdftron::PDF::ContentReplacer::AddText | ( | const Rect & | target_region,
|  | const UString & | replacement_text )

All text inside 'target_region' will be deleted and replaced with 'replacement_text'.

Parameters

  target_region | - The rectangle defining the area in which all text will be replaced by 'replacement_text'.
  replacement_text | - The new text that will replace the existing text in 'target_region'.

Note
  The 'replacement_text' will be styled in the same font/color/style that is used by the original text. If there are multiple font styles, the most prevalent style will be used. Also, the 'replacement_text' will wrap within the 'target_region', but if it is too long, the overflow text will not be visible, and no surrounding content will be affected.

## ◆ Destroy()

void pdftron::PDF::ContentReplacer::Destroy | ( |  | ) |

Frees the native memory of the object.

## ◆ Process()

void pdftron::PDF::ContentReplacer::Process | ( | Page & | page | ) |

Apply the replacement instructions to the target page. Subsequent calls to 'Process' can be made on other pages, and it will apply the same rules.

Parameters

  page | - The page to apply the content replacement instructions to.

## ◆ SetMatchStrings()

void pdftron::PDF::ContentReplacer::SetMatchStrings | ( | const UString & | start_str,
|  | const UString & | end_str )

Change the delimiters from '[' and ']' to arbitary strings.

Parameters

  start_str | - The starting delimiter string.
  end_str | - The ending delimiter string.

Note
  While empty strings are allowed as delimiters, a warning is displayed. Otherwise there are no restrictions. For example, after SetMatchStrings("<<", ">>"), AddString("TITLE", "Doctor") will replace any text consisting of "<<TITLE>>" with "Doctor". Similarly, after SetMatchStrings("Beginning...", "...ending."), AddString("TITLE", "Doctor") will replace "Beginning...TITLE...ending." with "Doctor".

## Member Data Documentation

## ◆ mp_impl

TRN_ContentReplacer pdftron::PDF::ContentReplacer::mp_impl

Definition at line 128 of file ContentReplacer.h.

The documentation for this class was generated from the following file:

- PDF/ContentReplacer.h