dxHotPDFExportReportLink

מתאם ייצוא PDF עבור DevExpress ExpressPrinting System‏ (XtraPrinting / XtraReports / cxGrid printable links וכדומה) שמשתמש ב-HotPDF כ-backend ה-PDF הבסיסי במקום ה-emitter הפנימי של DevExpress ‏dxPSExportToPDF / TdxPSPDFExport. מיועד לפרויקטים שכבר מטמיעים HotPDF ורוצים backend PDF יחיד בכל היישום

 

FastReport adapter  QuickReport adapter  ReportBuilder device

מתאם ייצוא PDF עבור DevExpress ExpressPrinting System‏ (XtraPrinting / XtraReports / cxGrid printable links וכדומה) שמשתמש ב-HotPDF כ-backend ה-PDF הבסיסי במקום ה-emitter הפנימי של DevExpress ‏dxPSExportToPDF / TdxPSPDFExport. מיועד לפרויקטים שכבר מטמיעים HotPDF ורוצים backend PDF יחיד בכל היישום

 

Options record:

type

  TdxHotPDFExportOptions = record

    Title, Author, Subject, Keywords: string;

    PDFVersion : TPDFVersType;  // default pdf17

    Compression: TPDFCompressionLevel;  // default clDefault

    RenderDPI  : Integer;  // default 200

  end;

 

function dxHotPDFDefaultOptions: TdxHotPDFExportOptions;

 

File-based entry points:

function dxHotPDFExportReportLinkToFile(

  AReportLink: TBasedxReportLink;

  const AOutputFileName: string;

  const AOptions: TdxHotPDFExportOptions): Boolean; overload;

function dxHotPDFExportReportLinkToFile(

  AReportLink: TBasedxReportLink;

  const AOutputFileName: string): Boolean; overload;

 

Stream-based entry points:

function dxHotPDFExportReportLinkToStream(

  AReportLink: TBasedxReportLink;

  AOutputStream: TStream;

  const AOptions: TdxHotPDFExportOptions): Boolean; overload;

function dxHotPDFExportReportLinkToStream(

  AReportLink: TBasedxReportLink;

  AOutputStream: TStream): Boolean; overload;

 

תיאור

מערכת ההדפסה של DevExpress מתמקדת ב-TBasedxReportLink, הקישור האבסטרקטי שמחבר רכיב printable‏ (cxGrid, cxRichEdit, cxScheduler, cxPivotGrid וכדומה) אל TdxComponentPrinter. ה-printer / link מרכיב עמודים ואז חושף את המתודה המוגנת PaintPage(ACanvas, APageBounds, APageIndex, AContinuousIndex, AZoomFactor), שמציירת עמוד יחיד לכל TCanvas

 

המתאם משקף את הלולאה ב-TdxPSPDFReportExportProvider.Build של DevExpress, אך במקום לנתב את פלט PaintPage לקנבס PDF של DevExpress הוא מנתב אותו אל TMetafileCanvas. ה-metafile שנוצר מועבר לאחר מכן אל importer בעל auto-scaling של ShowEnhancedMetafile ב-HotPDF:

 

1. הקורא מפעיל dxHotPDFExportReportLinkToFile או dxHotPDFExportReportLinkToStream עם TBasedxReportLink מוכן

2. The adapter calls AReportLink.RebuildReport to compose pages.

3. עבור כל page index, הוא מבקש מה-link את RenderInfo.GetActualPageRenderInfo, מחשב את גודל העמוד בנקודות PDF באמצעות היחס PointsPerInch / UnitsPerInch של DevExpress, בונה TMetafile ב-render DPI שנבחר, ומרנדר את העמוד דרך PaintPage(MetaCanvas, ...)

4. נוסף עמוד HotPDF חדש, או שהעמוד הראשון שנוצר אוטומטית מנוצל מחדש, בגודל הממדים המחושבים בנקודות, וה-metafile מנוגן דרך ShowEnhancedMetafile

5. HotPDF.EndDoc כותב את ה-PDF; עבור overloads של stream, הקובץ הזמני מועתק לאחר מכן אל TStream שסיפק הקורא

 

Options

Title / Author / Subject / Keywords - metadata של המסמך. כאשר Title ריק, המתאם נופל חזרה אל AReportLink.ReportTitle.Text ואז אל AReportLink.Name, כך של-PDF תמיד יש כותרת לא ריקה

PDFVersion - רמת מפרט PDF שהמסמך אמור ליעד. ברירת המחדל היא pdf17

Compression - FlateDecode level. Defaults to clDefault.

RenderDPI - צפיפות pixel המשמשת בעת rasterising של כל עמוד דרך TMetafileCanvas. ערך גבוה יותר נותן טקסט וקווים חדים יותר אך מגדיל את ה-metafile ואת ה-PDF. הערך 200, שהוא ברירת המחדל, מספק תוצאה באיכות הדפסה ללא קבצים עצומים. ערכים ≤ 0 מוגבלים ל-200

 

Typical workflow

 

dxComponentPrinter1.CurrentLink := cxGridReportLink1;

dxHotPDFExportReportLinkToFile(cxGridReportLink1, 'Grid.pdf');

 

Or with custom options:

 

Opts := dxHotPDFDefaultOptions;

Opts.Title := 'Q1 Sales';

Opts.RenderDPI := 300;

dxHotPDFExportReportLinkToFile(cxGridReportLink1, 'Grid.pdf', Opts);

 

משפחות link נתמכות

כל צאצא של TBasedxReportLink. זה מכסה cxGrid, cxRichEdit, cxScheduler, cxPivotGrid, וגם links מותאמים שנגזרים מאותה מחלקת בסיס. המתאם אינו תלוי בסוג link ספציפי מפני שחוזה PaintPage מוגדר על מחלקת הבסיס

 

Capabilities preserved

תוכן עמוד וקטורי ו-raster שנפלט מכל משפחות links של DevExpress‏ (cxGrid, cxScheduler, cxRichEdit, cxPivotGrid, custom links). מחרוזות טקסט שנפתרו על ידי GDI, משום ש-DevExpress מרנדר טקסט דרך TCanvas וה-metafile מתעד בנאמנות את קריאות הטקסט של GDI

 

Limitations of the metafile bridge

מפני שהעמודים נלכדים כ-enhanced metafiles, תכונות PDF ייחודיות ל-DevExpress שדורשות מידע מבני, כמו שדות AcroForm אינטראקטיביים, named destinations, bookmarks / outlines ושערי תאימות PDF/A או PDF/X, אינן מועברות. הפלט הוא שחזור חזותי נאמן של מה ש-DevExpress מרנדר, לא PDF מובנה

 

Packaging note

המתאם נמצא ב-Lib\Addons\DevExpress\ ואינו חלק מחבילות HotPDF*.dpk הראשיות, לכן תלות DevExpress ExpressPrinting נמשכת רק על ידי פרויקטים שבוחרים להשתמש במתאם. בדיקת smoke ‏(smoke_dx_hotpdf.dpr) נמצאת לצד היחידה

 

See also: TfrxHotPDFExport, TQRHotPDFExportFilter, TppHotPDFDevice, THPDFPage.ShowMetafile, Enhanced EMF/WMF Support