THotPDF.SetFormUnicodeFontDict metódus

 

THotPDF.SetFormUnicodeFontDict

THotPDF

 

Tetejére

Regisztrál egy hívó által megadott Unicode betűtípust az AcroForm alapértelmezett erőforrások (default-resources) szótárába, így a HotPDF automatikus megjelenítési adatfolyam-generátora (PDF 1.7 ISO 32000-1 12.7.4.3) közvetlenül a /AP-be tudja renderelni a nem-ASCII Tx widget kezdeti értékeit a v2.46.0 üres-AP helyőrző kibocsátása helyett. Párosítsa a CreateIndirectFontDict metódussal a feltöltendő közvetett betűtípus-szótár lefoglalásához

 

Delphi szintaxis:

procedure SetFormUnicodeFontDict(const LogicalName: AnsiString; FontDict: THPDFDictionaryObject);

 

C++ szintaxis:

void SetFormUnicodeFontDict(const AnsiString& LogicalName, THPDFDictionaryObject* FontDict);

 

Leírás

Amint a LogicalName és a FontDict feltöltésre kerül, három dolog változik a későbbi kibocsátásban: (a) az AcroForm-szintű /DA karakterlánc a '/Helv 12 Tf 0 0 0 rg' értékről a '/<LogicalName> 12 Tf 0 0 0 rg' értékre vált; (b) az AcroForm /DR /Font alszótára kap egy /<LogicalName> <FontDict-indirect-ref> bejegyzést a meglévő /Helv + /ZaDb mellett; (c) a AddTextField vagy a AddRichTextField segítségével hozzáadott összes Tx widget mezőnkénti /DA értéke ugyanezen a módon lesz beállítva. Ha az AutoFormAppearances be van kapcsolva, and a widget kezdeti értéke tartalmaz legalább egy >= 0x80 bájtot, a GenerateTextFieldAP kibocsát egy valós /AP /N Form XObject-et, amelynek tartalomfolyama a Tf segítségével kijelöli a regisztrált betűtípust, and a szöveget CID hex-karakterlánc Tj operátorként rendereli; a Form /Resources/Font alszótára ugyanerre a közvetett betűtípusra hivatkozik, így az AP önállóvá válik

Ha a regisztrált betűtípus a RegisterUnicodeTTF-ből származik, a kiegészítő síkú Unicode karakterek (például az U+1F600) egyetlen belsőleg lefoglalt CID-en keresztül kerülnek kibocsátásra, ahelyett, hogy az UTF-16 póttag-párt (surrogate pair) két Identity-H CID-re bontanák fel. A HotPDF a véglegesítéskor frissíti a generált /CIDToGIDMap, /W and /ToUnicode adatfolyamokat, így a belső CID a valós betűtípus glifjére képeződik le, a szövegkinyerés pedig visszaképeződik az eredeti UTF-16BE póttag-párra

Az ASCII Tx mezők továbbra is a /Helv betűtípust használják, and a v2.46.0 hívókkal bájt-azonos /AP kimenetet bocsátanak ki. Adjon meg üres LogicalName-t and nil FontDict-et a regisztráció törléséhez és a csak /Helv viselkedéshez való visszatéréshez. Tipikus munkafolyamat: hívja meg a SetFormUnicodeFontDict metódust egyszer közvetlenül a BeginDoc után, minden AddTextField előtt - a korábban létrehozott widgetek nem frissülnek visszamenőlegesen

 

LogicalName

- a /DR/Font kulcsaként és a /DA karakterláncon belüli Tf operandusaként használt PDF név. Tipikus: 'F0'. Regisztrációkor nem lehet üres; üres név nem-nil FontDict esetén kivételt vált ki

 

FontDict

 

Code Example

// Register a Type 0 / CIDFontType2 + Identity-H composite font for
// AcroForm Tx widget AP rendering. (Real production code adds a
// /FontFile2 stream and a ToUnicode CMap so the glyphs actually
// render - omitted here for brevity.)
var
  F0, Descendant, FontDescriptor, CIDSysInfo: THPDFDictionaryObject;
  Descendants: THPDFArrayObject;
  R: TRect;
begin
  HPDF.BeginDoc;
  HPDF.AutoFormAppearances := True;

  F0 := HPDF.CreateIndirectFontDict;          // empty indirect dict
  F0.AddNameValue('Type', 'Font');
  F0.AddNameValue('Subtype', 'Type0');
  F0.AddNameValue('BaseFont', 'MyCJK');
  F0.AddNameValue('Encoding', 'Identity-H');

  CIDSysInfo := THPDFDictionaryObject.Create(nil);
  CIDSysInfo.AddStringValue('Registry', 'Adobe');
  CIDSysInfo.AddStringValue('Ordering', 'Identity');
  CIDSysInfo.AddNumericValue('Supplement', 0);

  FontDescriptor := THPDFDictionaryObject.Create(nil);
  FontDescriptor.AddNameValue('Type', 'FontDescriptor');
  // ... fill required Ascent / Descent / FontBBox / etc

  Descendant := THPDFDictionaryObject.Create(nil);
  Descendant.AddNameValue('Type', 'Font');
  Descendant.AddNameValue('Subtype', 'CIDFontType2');
  Descendant.AddNameValue('BaseFont', 'MyCJK');
  Descendant.AddValue('CIDSystemInfo', CIDSysInfo);
  Descendant.AddValue('FontDescriptor', FontDescriptor);
  Descendant.AddNumericValue('DW', 1000);

  Descendants := THPDFArrayObject.Create(nil);
  Descendants.AddObject(Descendant);
  F0.AddValue('DescendantFonts', Descendants);

  HPDF.SetFormUnicodeFontDict('F0', F0);

  R.Left := 60; R.Top := 60; R.Right := 280; R.Bottom := 100;
  HPDF.CurrentPage.AddTextField('Greeting', '你好世界', R);

  HPDF.EndDoc;
end;

 

- egy közvetett THPDFDictionaryObject, amely egy érvényes PDF Font erőforrást tartalmaz. A hívó felelős a betűtípus-szótár helyes felépítéséért – jellemzően egy Type 0 / CIDFontType2 + Identity-H + ToUnicode CMap összetett betűtípus; körvonalas vagy egyszerű megjelenítéshez a Type 1 / TrueType részhalmaz is működik. A HotPDF nem ellenőrzi a tartalmat; csak szerializálja a hivatkozást

Hatókör