mirror of
https://github.com/UglyToad/PdfPig.git
synced 2026-03-10 00:23:29 +08:00
81 lines
3.2 KiB
C#
81 lines
3.2 KiB
C#
namespace UglyToad.Pdf.Util
|
|
{
|
|
using Filters;
|
|
using Fonts.Parser;
|
|
using Graphics;
|
|
using Logging;
|
|
using Parser;
|
|
using Parser.PageTree;
|
|
using Parser.Parts;
|
|
using Parser.Parts.CrossReference;
|
|
|
|
internal static class Bootstrapper
|
|
{
|
|
private static IContainer _testContainer;
|
|
|
|
internal static void SetTestContainer(IContainer container)
|
|
{
|
|
_testContainer = container;
|
|
}
|
|
|
|
public static IContainer GenerateContainer(ILog logger)
|
|
{
|
|
if (_testContainer != null)
|
|
{
|
|
return _testContainer;
|
|
}
|
|
|
|
if (logger == null)
|
|
{
|
|
logger = new NoOpLog();
|
|
}
|
|
|
|
var headerParser = new FileHeaderParser(logger);
|
|
var trailerParser = new FileTrailerParser();
|
|
var nameParser = new CosNameParser();
|
|
var dictionaryParser = new CosDictionaryParser(nameParser, logger);
|
|
var baseParser = new CosBaseParser(nameParser, new CosStringParser(), dictionaryParser, new CosArrayParser());
|
|
var streamParser = new CosStreamParser(logger);
|
|
var filterProvider = new MemoryFilterProvider(new DecodeParameterResolver(logger), new PngPredictor(), logger);
|
|
var crossReferenceParser = new CrossReferenceStreamParser(filterProvider);
|
|
var objectStreamParser = new ObjectStreamParser(logger, filterProvider, baseParser);
|
|
var dynamicParser = new DynamicParser(logger, baseParser, streamParser, objectStreamParser);
|
|
|
|
var crossReferenceTableParser = new FileCrossReferenceTableParser(logger, dictionaryParser, baseParser, streamParser, crossReferenceParser,
|
|
new CrossReferenceTableParser(logger, dictionaryParser, baseParser));
|
|
|
|
var resourceDictionaryParser = new ResourceDictionaryParser();
|
|
var pageParser = new PageParser();
|
|
var simpleFontParser = new SimpleFontParser();
|
|
var compositeFontParser = new CompositeFontParser();
|
|
var fontParser = new FontParser();
|
|
var pageContentParser = new PageContentParser();
|
|
var operationFactory = new ReflectionGraphicsStateOperationFactory();
|
|
|
|
var cmapParser = new CMapParser();
|
|
|
|
var container = new Container();
|
|
container.Register(headerParser);
|
|
container.Register(trailerParser);
|
|
container.Register(nameParser);
|
|
container.Register(dictionaryParser);
|
|
container.Register(baseParser);
|
|
container.Register(streamParser);
|
|
container.Register(crossReferenceParser);
|
|
container.Register(crossReferenceTableParser);
|
|
container.Register(dynamicParser);
|
|
container.Register(objectStreamParser);
|
|
container.Register(filterProvider);
|
|
container.Register(resourceDictionaryParser);
|
|
container.Register(pageParser);
|
|
container.Register(simpleFontParser);
|
|
container.Register(compositeFontParser);
|
|
container.Register(fontParser);
|
|
container.Register(pageContentParser);
|
|
container.Register(operationFactory);
|
|
container.Register(cmapParser);
|
|
|
|
return container;
|
|
}
|
|
}
|
|
} |