5#ifndef PDFTRON_H_CPPPDFConvert
6#define PDFTRON_H_CPPPDFConvert
18#include <C/PDF/TRN_Convert.h>
27class ConversionMonitor
33 Filters::Filter Filter();
37 ConversionMonitor(
const ConversionMonitor& copy);
38 ConversionMonitor& operator=(
const ConversionMonitor& other);
43 operator bool () {
return mp_impl!=0;}
45 TRN_ConversionMonitor mp_impl;
46 ConversionMonitor(TRN_ConversionMonitor impl,
bool is_owner);
52class XPSOutputOptions;
53class XODOutputOptions;
54class HTMLOutputOptions;
55class WordOutputOptions;
56class ExcelOutputOptions;
57class PowerPointOutputOptions;
58class EPUBOutputOptions;
59class SVGOutputOptions;
60class TiffOutputOptions;
109 typedef pdftron::PDF::XPSOutputOptions XPSOutputOptions;
110 typedef pdftron::PDF::XODOutputOptions XODOutputOptions;
111 typedef pdftron::PDF::HTMLOutputOptions HTMLOutputOptions;
112 typedef pdftron::PDF::WordOutputOptions WordOutputOptions;
113 typedef pdftron::PDF::ExcelOutputOptions ExcelOutputOptions;
114 typedef pdftron::PDF::PowerPointOutputOptions PowerPointOutputOptions;
115 typedef pdftron::PDF::EPUBOutputOptions EPUBOutputOptions;
116 typedef pdftron::PDF::SVGOutputOptions SVGOutputOptions;
117 typedef pdftron::PDF::TiffOutputOptions TiffOutputOptions;
118 typedef pdftron::PDF::Printer Printer;
120 enum FlattenThresholdFlag {
169 static void FromXps(PDFDoc & in_pdfdoc,
const UString & in_filename);
182 static void FromXps(PDFDoc & in_pdfdoc,
const char* buf,
size_t buf_sz);
194 static void FromEmf(PDFDoc & in_pdfdoc,
const UString & in_filename);
220 static void FromText(PDFDoc & in_pdfdoc,
const UString& in_filename,
const SDF::Obj& in_options = SDF::Obj());
231 static void ToEmf(PDFDoc & in_pdfdoc,
const UString & in_filename);
242 static void ToEmf(Page & in_page,
const UString & in_filename);
254 static void ToSvg(PDFDoc & in_pdfdoc,
const UString & in_filename,
const SVGOutputOptions& in_options);
263 static void ToSvg(PDFDoc & in_pdfdoc,
const UString & in_filename);
274 static void ToSvg(Page & in_page,
const UString & in_filename,
const SVGOutputOptions& in_options);
283 static void ToSvg(Page & in_page,
const UString & in_filename);
297 static void ToXps(PDFDoc & in_pdfdoc,
const UString & in_filename,
const XPSOutputOptions& options);
307 static void ToXps(PDFDoc & in_pdfdoc,
const UString & in_filename);
325 static void ToXps(
const UString & in_inputFilename,
const UString & in_outputFilename,
const XPSOutputOptions& options);
339 static void ToXps(
const UString & in_inputFilename,
const UString & in_outputFilename);
357 static void ToXod(
const UString & in_filename,
const UString & out_filename,
const XODOutputOptions& options);
371 static void ToXod(
const UString & in_filename,
const UString & out_filename);
387 static void ToXod(PDFDoc & in_pdfdoc,
const UString & out_filename,
const XODOutputOptions& options);
399 static void ToXod(PDFDoc & in_pdfdoc,
const UString & out_filename);
422 static void ToHtml(
const UString & in_filename,
const UString & out_path,
const HTMLOutputOptions& options);
437 static void ToHtml(
const UString & in_filename,
const UString & out_path);
448 static UString PageToHtml(
const Page & page);
450 static UString PageToHtmlZoned(
const Page & page,
const UString & json_zones);
470 static void ToHtml(PDFDoc & in_pdfdoc,
const UString & out_path,
const HTMLOutputOptions& options);
482 static void ToHtml(PDFDoc & in_pdfdoc,
const UString & out_path);
499 static void ToWord(
const UString & in_filename,
const UString & out_path,
const WordOutputOptions& options);
512 static void ToWord(
const UString & in_filename,
const UString & out_path);
525 static void ToWord(PDFDoc& in_pdfdoc, Filters::Filter& out_filter);
540 static void ToWord(PDFDoc& in_pdfdoc, Filters::Filter& out_filter,
const WordOutputOptions& options);
559 static void ToWord(PDFDoc & in_pdfdoc,
const UString & out_path,
const WordOutputOptions& options);
574 static void ToWord(PDFDoc & in_pdfdoc,
const UString & out_path);
591 static void ToExcel(
const UString& in_filename,
const UString& out_path,
const ExcelOutputOptions& options);
604 static void ToExcel(
const UString& in_filename,
const UString& out_path);
623 static void ToExcel(PDFDoc& in_pdfdoc,
const UString& out_path,
const ExcelOutputOptions& options);
638 static void ToExcel(PDFDoc& in_pdfdoc,
const UString& out_path);
653 static void ToExcel(PDFDoc& in_pdfdoc, Filters::Filter& out_filter);
670 static void ToExcel(PDFDoc& in_pdfdoc, Filters::Filter& out_filter,
const ExcelOutputOptions& options);
687 static void ToPowerPoint(
const UString& in_filename,
const UString& out_path,
const PowerPointOutputOptions& options);
700 static void ToPowerPoint(
const UString& in_filename,
const UString& out_path);
719 static void ToPowerPoint(PDFDoc& in_pdfdoc,
const UString& out_path,
const PowerPointOutputOptions& options);
734 static void ToPowerPoint(PDFDoc& in_pdfdoc,
const UString& out_path);
749 static void ToPowerPoint(PDFDoc& in_pdfdoc, Filters::Filter& out_filter);
768 static void ToPowerPoint(PDFDoc& in_pdfdoc, Filters::Filter& out_filter,
const PowerPointOutputOptions& options);
790 static void ToEpub(
const UString & in_filename,
const UString & out_path,
const HTMLOutputOptions& html_options,
const EPUBOutputOptions& epub_options);
808 static void ToEpub(
const UString & in_filename,
const UString & out_path,
const HTMLOutputOptions& html_options);
822 static void ToEpub(
const UString & in_filename,
const UString & out_path);
842 static void ToEpub(PDFDoc & in_pdfdoc,
const UString & out_path,
const HTMLOutputOptions& html_options,
const EPUBOutputOptions& epub_options);
858 static void ToEpub(PDFDoc & in_pdfdoc,
const UString & out_path,
const HTMLOutputOptions& html_options);
870 static void ToEpub(PDFDoc & in_pdfdoc,
const UString & out_path);
884 static void ToTiff(
const UString & in_filename,
const UString & out_path,
const TiffOutputOptions& options);
894 static void ToTiff(
const UString & in_filename,
const UString & out_path);
908 static void ToTiff(PDFDoc & in_pdfdoc,
const UString & out_path,
const TiffOutputOptions& options);
918 static void ToTiff(PDFDoc & in_pdfdoc,
const UString & out_path);
932 static void ToTiff(
const UString & in_filename, Filters::Filter& out_filter,
const TiffOutputOptions& options);
942 static void ToTiff(
const UString & in_filename, Filters::Filter& out_filter);
956 static void ToTiff(PDFDoc & in_pdfdoc, Filters::Filter& out_filter,
const TiffOutputOptions& options);
966 static void ToTiff(PDFDoc & in_pdfdoc, Filters::Filter& out_filter);
984 static Filters::Filter ToXod(
const UString & in_filename,
const XODOutputOptions& options);
998 static Filters::Filter ToXod(
const UString & in_filename);
1014 static Filters::Filter ToXod(PDFDoc & in_pdfdoc,
const XODOutputOptions& options);
1026 static Filters::Filter ToXod(PDFDoc & in_pdfdoc);
1029 static ConversionMonitor ToXodWithMonitor(PDFDoc & in_pdfdoc,
const XODOutputOptions& options);
1030 static ConversionMonitor ToXodWithMonitor(PDFDoc & in_pdfdoc);
1054 static void WordToPDF( PDFDoc & in_pdfdoc,
const UString & in_filename, WordToPDFOptions* options);
1082 static DocumentConversion WordToPDFConversion( PDFDoc & in_pdfdoc,
const UString & in_filename, WordToPDFOptions* options);
1105 static void WordToPDF( PDFDoc & in_pdfdoc, Filters::Filter in_stream, WordToPDFOptions* options);
1133 static DocumentConversion WordToPDFConversion( PDFDoc & in_pdfdoc, Filters::Filter in_stream, WordToPDFOptions* options);
1156 static void OfficeToPDF( PDFDoc & in_pdfdoc,
const UString & in_filename, ConversionOptions* options);
1183 static DocumentConversion StreamingPDFConversion( PDFDoc & in_pdfdoc,
const UString & in_filename, ConversionOptions* options);
1208 static DocumentConversion StreamingPDFConversion(
const UString & in_filename, ConversionOptions* options);
1210 static Reflow CreateReflow(Page & in_page,
const UString & json_zones);
1233 static void OfficeToPDF( PDFDoc & in_pdfdoc, Filters::Filter in_stream, ConversionOptions* options);
1260 static DocumentConversion StreamingPDFConversion( PDFDoc & in_pdfdoc, Filters::Filter in_stream, ConversionOptions* options);
1285 static DocumentConversion StreamingPDFConversion(Filters::Filter in_stream, ConversionOptions* options);
1306 static void ToPdf(PDFDoc & in_pdfdoc,
const UString & in_filename);
1318 static void FromCAD(PDFDoc& in_pdfdoc,
const UString& in_filename, CADConvertOptions* opts = 0);
1330 static void FromDICOM(PDFDoc& in_pdfdoc,
const UString& in_filename, AdvancedImagingConvertOptions* opts = 0);
1340 static void FromSVG(PDFDoc& in_pdfdoc,
const UString& in_filename, SVGConvertOptions* opts = 0);
1348 static void FromTiff(PDFDoc& in_pdfdoc, Filters::Filter in_data);
1373 static TemplateDocument CreateOfficeTemplate(
const UString& in_filename, ConversionOptions* options);
1398 static TemplateDocument CreateOfficeTemplate(Filters::Filter in_stream, ConversionOptions* options);
1412 static bool RequiresPrinter(
const UString & in_filename);
1423class XPSOutputCommonOptions
1429 XPSOutputCommonOptions();
1434 void SetPrintMode(
bool print_mode);
1440 void SetDPI(UInt32 dpi);
1446 void SetRenderPages(
bool render);
1452 void SetThickenLines(
bool thicken);
1459 void GenerateURLLinks(
bool generate);
1461 enum OverprintPreviewMode
1476 void SetOverprint(
enum OverprintPreviewMode mode);
1480 friend class Convert;
1481 SDF::ObjSet m_objset;
1487class XPSOutputOptions :
public XPSOutputCommonOptions
1494 void SetOpenXps(
bool openxps);
1500class XODOutputOptions :
public XPSOutputCommonOptions
1504 enum AnnotationOutputFlag {
1515 void SetExtractUsingZorder(
bool use_zorder);
1521 void SetOutputThumbnails(
bool include_thumbs);
1529 void SetThumbnailSize(UInt32 size);
1538 void SetThumbnailSize(UInt32 regular_size, UInt32 large_size);
1545 void SetElementLimit(UInt32 element_limit);
1553 void SetOpacityMaskWorkaround(
bool opacity_render);
1563 void SetMaximumImagePixels(UInt32 max_pixels);
1571 void SetFlattenContent(
enum Convert::FlattenFlag flatten);
1578 void SetFlattenThreshold(
enum Convert::FlattenThresholdFlag threshold);
1585 void SetPreferJPG(
bool prefer_jpg);
1591 void SetJPGQuality(UInt32 quality);
1598 void SetSilverlightTextWorkaround(
bool workaround);
1604 void SetAnnotationOutput(
enum AnnotationOutputFlag annot_output);
1611 void SetExternalParts(
bool generate);
1618 void SetEncryptPassword(
const char* pass);
1627 void UseSilverlightFlashCompatible(
bool compatible);
1633class OutputOptionsOCR
1658 enum PreferredOCREngine
1660 e_engine_default = 0,
1664 static UString LanguageChoiceToString(LanguageChoice language);
1666 static UString PreferredOCRChoiceToString(PreferredOCREngine engine);
1672class StructuredOutputOptions
1675 enum SectionConversionSetting
1682 static StructuredOutputOptions::SectionConversionSetting SectionConversionSettingFromOption(TRN_Obj& obj);
1688class HTMLOutputOptions
1694 HTMLOutputOptions();
1701 void SetPreferJPG(
bool prefer_jpg);
1709 void SetJPGQuality(UInt32 quality);
1717 void SetDPI(UInt32 dpi);
1728 void SetMaximumImagePixels(UInt32 max_pixels);
1730 enum ContentReflowSetting
1732 e_fixed_position = 0,
1733 e_reflow_paragraphs,
1748 void SetContentReflowSetting(ContentReflowSetting reflow);
1755 void SetScale(
double scale);
1762 void SetExternalLinks(
bool enable);
1769 void SetInternalLinks(
bool enable);
1776 void SetSimplifyText(
bool enable);
1783 void SetReportFile(
const UString& path);
1791 void SetTitle(
const UString& title);
1800 void SetImageDPI(UInt32 dpi);
1807 void SetEmbedImages(
bool embed);
1816 void SetFileConversionTimeoutSeconds(
int seconds);
1824 void SetPages(
int page_from,
int page_to);
1831 void SetPDFPassword(
const UString& password);
1833 enum SearchableImageSetting
1835 e_ocr_image_text = 0,
1852 void SetSearchableImageSetting(SearchableImageSetting setting);
1860 void SetSimpleLists(
bool enable);
1867 void SetConnectHyphens(
bool connect);
1876 void SetDisableVerticalSplit(
bool disable);
1884 void SetNoPageWidth(
bool enable);
1891 void SetLanguage(OutputOptionsOCR::LanguageChoice language);
1898 void SetPreferredOCREngine(OutputOptionsOCR::PreferredOCREngine engine);
1905 void SetHeadersAndFootersSetting(StructuredOutputOptions::SectionConversionSetting option);
1912 void SetFootnotesSetting(StructuredOutputOptions::SectionConversionSetting option);
1919 StructuredOutputOptions::SectionConversionSetting GetHeadersAndFootersSetting();
1926 StructuredOutputOptions::SectionConversionSetting GetFootnotesSetting();
1934 void SetTextRecoveryNSE(
bool use_ocr);
1938 friend class Convert;
1939 SDF::ObjSet m_objset;
1945class WordOutputOptions
1951 WordOutputOptions();
1953 enum WordOutputFormat
1968 void SetWordOutputFormat(WordOutputFormat format);
1975 void SetPages(
int page_from,
int page_to);
1981 void SetPDFPassword(
const UString& password);
1983 enum SearchableImageSetting
1985 e_ocr_image_text = 0,
1998 void SetSearchableImageSetting(SearchableImageSetting setting);
2005 void SetTextRecoveryNSE(
bool use_ocr);
2012 void SetDetectTOC(
bool detect_toc);
2018 void SetConnectHyphens(
bool connect);
2024 void SetLanguage(OutputOptionsOCR::LanguageChoice language);
2030 void SetPreferredOCREngine(OutputOptionsOCR::PreferredOCREngine engine);
2037 void SetCustomOCRLanguage(
const UString& ocrlang);
2043 void SetPrioritizeVisualAppearance(
bool replica);
2049 void SetHeadersAndFootersSetting(StructuredOutputOptions::SectionConversionSetting option);
2055 void SetFootnotesSetting(StructuredOutputOptions::SectionConversionSetting option);
2061 StructuredOutputOptions::SectionConversionSetting GetHeadersAndFootersSetting();
2067 StructuredOutputOptions::SectionConversionSetting GetFootnotesSetting();
2071 friend class Convert;
2072 SDF::ObjSet m_objset;
2078class ExcelOutputOptions
2084 ExcelOutputOptions();
2091 void SetPages(
int page_from,
int page_to);
2097 void SetPDFPassword(
const UString& password);
2103 void SetLanguage(OutputOptionsOCR::LanguageChoice language);
2109 void SetPreferredOCREngine(OutputOptionsOCR::PreferredOCREngine engine);
2116 void SetCustomOCRLanguage(
const UString& ocrlang);
2118 enum SearchableImageSetting
2131 void SetSearchableImageSetting(SearchableImageSetting setting);
2138 void SetTextRecoveryNSE(
bool use_ocr);
2144 void SetNonTableContent(
bool non_tables);
2150 void SetSingleSheet(
bool single_sheet);
2156 void SetPageSingleSheet(
bool page_single);
2162 void SetHeadersAndFootersSetting(StructuredOutputOptions::SectionConversionSetting option);
2168 void SetFootnotesSetting(StructuredOutputOptions::SectionConversionSetting option);
2174 StructuredOutputOptions::SectionConversionSetting GetHeadersAndFootersSetting();
2180 StructuredOutputOptions::SectionConversionSetting GetFootnotesSetting();
2184 friend class Convert;
2185 SDF::ObjSet m_objset;
2191class PowerPointOutputOptions
2197 PowerPointOutputOptions();
2204 void SetPages(
int page_from,
int page_to);
2210 void SetPDFPassword(
const UString& password);
2216 void SetLanguage(OutputOptionsOCR::LanguageChoice language);
2222 void SetPreferredOCREngine(OutputOptionsOCR::PreferredOCREngine engine);
2229 void SetCustomOCRLanguage(
const UString& ocrlang);
2231 enum SearchableImageSetting
2244 void SetSearchableImageSetting(SearchableImageSetting setting);
2251 void SetTextRecoveryNSE(
bool use_ocr);
2257 void SetHeadersAndFootersSetting(StructuredOutputOptions::SectionConversionSetting option);
2263 void SetFootnotesSetting(StructuredOutputOptions::SectionConversionSetting option);
2269 StructuredOutputOptions::SectionConversionSetting GetHeadersAndFootersSetting();
2275 StructuredOutputOptions::SectionConversionSetting GetFootnotesSetting();
2279 friend class Convert;
2280 SDF::ObjSet m_objset;
2286class EPUBOutputOptions
2292 EPUBOutputOptions();
2298 void SetExpanded(
bool expanded);
2306 void SetReuseCover(
bool reuse);
2309 friend class Convert;
2310 SDF::ObjSet m_objset;
2316class SVGOutputOptions
2329 void SetEmbedImages(
bool embed_images);
2335 void SetNoFonts(
bool no_fonts);
2342 void SetSvgFonts(
bool svg_fonts);
2350 void SetEmbedFonts(
bool embed_fonts);
2356 void SetNoUnicode(
bool no_unicode);
2362 void SetIndividualCharPlacement(
bool individual_char_placement);
2368 void SetRemoveCharPlacement(
bool remove_char_placement);
2376 void SetFlattenContent(
enum Convert::FlattenFlag flatten);
2383 void SetFlattenThreshold(
enum Convert::FlattenThresholdFlag threshold);
2390 void SetFlattenDPI(UInt32 dpi);
2400 void SetFlattenMaximumImagePixels(UInt32 max_pixels);
2406 void SetCompress(
bool svgz);
2412 void SetOutputThumbnails(
bool include_thumbs);
2419 void SetThumbnailSize(UInt32 size);
2425 void SetCreateXmlWrapper(
bool xml);
2431 void SetDtd(
bool dtd);
2437 void SetAnnots(
bool annots);
2447 void SetOverprint(PDFRasterizer::OverprintPreviewMode mode);
2450 friend class Convert;
2451 SDF::ObjSet m_objset;
2457class TiffOutputOptions
2463 TiffOutputOptions();
2471 void SetBox(
enum Page::Box type);
2479 void SetRotate(
enum Page::Rotate rotation);
2486 void SetClip(
double x1,
double y1,
double x2,
double y2);
2493 void SetPages(
const char* page_desc);
2503 void SetOverprint(
enum PDFRasterizer::OverprintPreviewMode mode);
2510 void SetCMYK(
bool enable);
2518 void SetDither(
bool enable);
2526 void SetGray(
bool enable);
2537 void SetMono(
bool enable);
2545 void SetAnnots(
bool enable);
2551 void SetSmooth(
bool enable);
2561 void SetPrintmode(
bool enable);
2574 void SetTransparentPage(
bool enable);
2582 void SetPalettized(
bool enable);
2590 void SetDPI(
double dpi);
2603 void SetGamma(
double gamma);
2608 void SetHRes(
int hres);
2613 void SetVRes(
int vres);
2618 friend class Convert;
2619 SDF::ObjSet m_objset;
2643 static void Install(
const UString & in_printerName =
"PDFTron PDFNet");
2652 static void Uninstall();
2662 static const UString GetPrinterName();
2672 static void SetPrinterName(
const UString & in_printerName =
"PDFTron PDFNet");
2685 static bool IsInstalled(
const UString & in_printerName =
"PDFTron PDFNet");
2703 e_prefer_builtin_converter
2711 static void SetMode(Mode mode);
2718 static Mode GetMode();
2723#include <Impl/Convert.inl>