Odwołanie do opcji konfiguracyjnych
Odwołanie do opcji konfiguracyjnych
Większość operacji ładowania, zapisywania i konwersji w Aspose.PDF FOSS dla .NET akceptuje *Options obiekt, który konfiguruje zachowanie tej operacji. LoadOptions and SaveOptions są dwoma abstrakcyjnymi korzeniami tej rodziny: każdy loader specyficzny dla formatu (HtmlLoadOptions, MdLoadOptions, TxtLoadOptions, SvgLoadOptions) dziedziczy po LoadOptions, a każdy writer specyficzny dla formatu (PdfSaveOptions, HtmlSaveOptions, SvgSaveOptions) dziedziczy po SaveOptions. Ta strona wyjaśnia, jak rodzina się ze sobą łączy i dokumentuje klasy opcji, które nie zostały już omówione w Konwersji i Optymalizacji przewodnik.
Ładowanie dokumentów za pomocą LoadOptions
Każda podklasa *LoadOptions dziedziczy WarningHandler, WarningHandlerName, DisableFontLicenseVerifications i LoadFormat z klasy bazowej LoadOptions, a następnie dodaje właściwości specyficzne dla swojego formatu źródłowego.
// HTML: resolve relative images/CSS against a base path
var htmlOptions = new HtmlLoadOptions("assets/");
htmlOptions.IsEmbedFonts = true;
using var htmlDoc = new Document("input.html", htmlOptions);
// Markdown: apply custom CSS while rendering to PDF
var mdOptions = new MdLoadOptions();
mdOptions.CssStyles = "body { font-family: sans-serif; }";
using var mdDoc = new Document("input.md", mdOptions);
// Plain text: control the rendered font size
var txtOptions = new TxtLoadOptions();
txtOptions.FontSize = 11;
using var txtDoc = Document.Open("input.txt", txtOptions);
// SVG: let the page size follow the artwork dimensions
var svgOptions = new SvgLoadOptions();
svgOptions.AdjustPageSize = true;
using var svgDoc = new Document("input.svg", svgOptions);Zapisywanie do PDF za pomocą PdfSaveOptions
PdfSaveOptions kontroluje obsługę czcionek i umiejscowienie plików tymczasowych podczas zapisywania Document jako PDF. Dziedziczy CloseResponse, SaveFullPath, WarningHandler, CacheGlyphs i SaveFormat ze wspólnej klasy bazowej SaveOptions.
using var doc = Document.Open("input.pdf");
var pdfOptions = new PdfSaveOptions();
pdfOptions.DefaultFontName = "Arial";
pdfOptions.TempPath = "temp/";
doc.Save("output.pdf", pdfOptions);Eksportowanie do HTML i SVG
HtmlSaveOptions i SvgSaveOptions oba pochodzą od UnifiedSaveOptions. Poza kontrolami obrazu/czcionki/układu opisanymi w przewodniku konwersji, HtmlSaveOptions pozwala również wybrać wariant dokumentu i strategię paginacji, podczas gdy SvgSaveOptions opiera się w pełni na odziedziczonych członkach SaveOptions/UnifiedSaveOptions.
using var doc = Document.Open("input.pdf");
// Fixed-layout HTML5 output, split one file per page
var htmlOptions = new HtmlSaveOptions(HtmlDocumentType.Html5, fixedLayout: true);
htmlOptions.SplitIntoPages = true;
htmlOptions.ImageResolution = 150;
htmlOptions.Title = "Converted Document";
doc.Save("output.html", htmlOptions);
// SVG export configured through the shared SaveOptions members
var svgOptions = new SvgSaveOptions();
svgOptions.SaveFullPath = false;
doc.Save("output.svg", svgOptions);Jednoetapowa konwersja przy użyciu Document.Convert
Document.Convert przyjmuje źródłowy LoadOptions i docelowy SaveOptions razem w jednym statycznym wywołaniu, dzięki czemu możesz konwertować między formatami bez ręcznego otwierania, konwertowania i usuwania Document.
var loadOptions = new HtmlLoadOptions();
var saveOptions = new PdfSaveOptions();
Document.Convert("input.html", loadOptions, "output.pdf", saveOptions);Opcje ekstrakcji tekstu
TextExtractionOptions kontroluje sposób formatowania wyodrębnionego tekstu przez TextAbsorber (oraz TextDevice), niezależnie od tego, który absorber lub klasa urządzenia wykonuje ekstrakcję.
using var doc = Document.Open("input.pdf");
var extractionOptions = new TextExtractionOptions(TextFormattingMode.Raw);
extractionOptions.ScaleFactor = 1.0;
extractionOptions.IgnoreResourceFontErrors = true;
var absorber = new TextAbsorber(extractionOptions);
doc.Pages[1].Accept(absorber);
string text = absorber.Text;Optymalizacja wyjścia przy użyciu OptimizationOptions
OptimizationOptions jest odrębnym, niezależnym od formatu mechanizmem zmniejszania rozmiaru pliku. Jest stosowany poprzez Document.OptimizeResources, a nie poprzez klasę *SaveOptions, więc może być łączony z dowolną ścieżką zapisu.
using var doc = Document.Open("input.pdf");
var optimizationOptions = new OptimizationOptions();
optimizationOptions.RemoveUnusedObjects = true;
optimizationOptions.CompressObjects = true;
optimizationOptions.SubsetFonts = true;
optimizationOptions.ImageCompressionOptions.CompressImages = true;
optimizationOptions.ImageCompressionOptions.ImageQuality = 80;
doc.OptimizeResources(optimizationOptions);
doc.Save("optimized.pdf");Wskazówki i najlepsze praktyki
- Każda podklasa
*LoadOptionsi*SaveOptionsdziedziczyWarningHandler/WarningHandlerName– ustaw oba razem, aby przechwycić diagnostykę możliwą do odzyskania. - Preferuj instancję
*LoadOptions/*SaveOptionsspecyficzną dla formatu zamiast polegać na wnioskowaniu formatu na podstawie rozszerzenia, szczególnie przy pracy ze strumieniami zamiast ścieżek do plików. - Użyj
Document.Convert(srcFileName, loadOptions, dstFileName, saveOptions)do jednorazowych konwersji zamiast ręcznego otwierania i ponownego zapisywaniaDocument. OptimizationOptionsjest niezależny od rodziny*SaveOptions– wywołajOptimizeResourcesprzedSave, aby zmniejszyć rozmiar wyjścia niezależnie od docelowego formatu.- Używaj jednej instancji opcji w wielu dokumentach, gdy obowiązują te same ustawienia, zamiast tworzyć ją na nowo za każdym razem.
Częste problemy
| Problem | Przyczyna | Naprawa |
|---|---|---|
| Ścieżki względne do obrazów/CSS nie są rozwiązywane przy ładowaniu HTML | HtmlLoadOptions.BasePath nigdy nie został ustawiony | Przekaż ścieżkę bazową przez konstruktor HtmlLoadOptions(basePath) |
| Wygenerowano nieprawidłowy format wyjściowy | Niezgodna podklasa *SaveOptions lub SaveFormat została użyta dla docelowego rozszerzenia | Użyj podklasy *SaveOptions, która pasuje do formatu docelowego |
OptimizeResources nie zmniejsza rozmiaru pliku | OptimizationOptions pozostawiono w ustawieniach domyślnych bez włączonych flag redukcji | Jawnie ustaw RemoveUnusedObjects, CompressObjects i SubsetFonts |
| Ostrzeżenia generowane podczas ładowania/zapisywania są cicho pomijane | WarningHandler ustawiono bez podania nazwy obsługi | Ustaw WarningHandler i WarningHandlerName razem |
FAQ
Jaka jest różnica między LoadOptions a SaveOptions?
LoadOptions konfiguruje sposób, w jaki dokument jest odczytywany z formatu źródłowego niebędącego PDF (HTML, Markdown, tekst, SVG); SaveOptions konfiguruje sposób, w jaki Document jest zapisywany do formatu wyjściowego (PDF, HTML, SVG). Każda klasa opcji specyficznych dla formatu dziedziczy dokładnie od jednej z tych dwóch korzeni.
Czy muszę określić LoadOptions przy otwieraniu natywnego PDF?
Nie. Document.Open oraz konstruktor Document akceptują zwykłą ścieżkę do pliku lub strumień jako wejście natywnego PDF. Podklasy *LoadOptions są wymagane tylko przy importowaniu formatu źródłowego niebędącego PDF, takiego jak HTML, Markdown, tekst lub SVG.
Czy mogę ponownie używać tej samej instancji SaveOptions w wielu wywołaniach Save?
Tak. Instancja opcji jest po prostu zwykłym obiektem konfiguracyjnym; nie przechowuje żadnego stanu zależnego od dokumentu, więc ta sama instancja PdfSaveOptions lub HtmlSaveOptions może być przekazana do Save dla kilku dokumentów, które korzystają z tych samych ustawień.
Jak OptimizationOptions różni się od formatowo-specyficznych klas SaveOptions?
OptimizationOptions jest konsumowane przez Document.OptimizeResources, osobny krok od zapisywania. Usuwa nieużywane obiekty/strumienie i ponownie kompresuje obrazy w miejscu, i może być zastosowane przed wywołaniem Save z dowolną podklasą *SaveOptions.
Czy każdy format źródłowy/docelowy posiada zarówno klasę LoadOptions, jak i SaveOptions?
Nie musi być symetryczne. Na przykład, Markdown i zwykły tekst obecnie udostępniają MdLoadOptions/TxtLoadOptions do importu, ale nie mają odpowiadającego *SaveOptions, co odzwierciedla, w którym kierunku każdy format jest obsługiwany przy konwersji.
API Reference Podsumowanie
| Klasa / Metoda | Opis |
|---|---|
LoadOptions | Klasa bazowa dla wszystkich typów opcji ładowania dokumentów |
SaveOptions | Klasa bazowa dla wszystkich typów opcji zapisywania dokumentów |
HtmlLoadOptions | Opcje importowania HTML jako dokumentu PDF |
MdLoadOptions | Opcje importowania Markdown jako dokumentu PDF |
TxtLoadOptions | Opcje importowania zwykłego tekstu jako dokument PDF |
SvgLoadOptions | Opcje importowania SVG jako dokument PDF |
PdfSaveOptions | Opcje zapisywania dokumentu jako PDF |
HtmlSaveOptions | Opcje zapisywania dokumentu jako HTML |
SvgSaveOptions | Opcje zapisywania dokumentu jako SVG |
UnifiedSaveOptions | Wspólna podstawa dla HtmlSaveOptions i SvgSaveOptions |
Document.Convert | Statyczna jednoczynnikowa konwersja przy użyciu pary LoadOptions/SaveOptions |
TextExtractionOptions | Konfiguracja formatowania dla wyodrębniania tekstu TextAbsorber |
OptimizationOptions | Ustawienia optymalizacji rozmiaru dokumentu i zasobów niezależne od formatu |
Document.OptimizeResources | Stosuje instancję OptimizationOptions do dokumentu |