Operações de conteúdo
Operações de conteúdo
As páginas PDF são renderizadas por uma sequência de operadores armazenados em um fluxo de conteúdo. Aspose.PDF FOSS for .NET exposes these operators through OperatorCollection em cada um dos seguintes: Page, e prevê: ContentStreamBuilder para a construção de novos conteúdo programaticamente.
Operadores de fluxo de conteúdo para leitura
Cada um. Page tem um Contents propriedade que retorna um valor de OperatorCollection. Iterar para inspecionar cada operador.
using var doc = Document.Open(pdfBytes);
var page = doc.Pages[1];
foreach (var op in page.Contents)
{
Console.WriteLine(op.ToString());
}Fluxos de conteúdo da construção
ContentStreamBuilder fornece uma API fluente para a construção de conteúdo-stream sequências de operadores, incluindo gestão gráfica do estado, construção dos caminhos;, saída de texto e configurações de cores.
var builder = new ContentStreamBuilder();
builder.SaveState();
builder.SetFillColor(1.0, 0.0, 0.0); // Red fill
builder.SetMatrix(1, 0, 0, 1, 72, 700); // Translate
// ... add drawing or text operators
builder.RestoreState();Estado dos gráficos
GraphicsState rastreia a matriz de transformação atual, o estado do texto e Valores de cor conforme executados pelos operadores.:
var gs = new GraphicsState();
gs.Save();
gs.ConcatMatrix(new Matrix(1, 0, 0, 1, 100, 200));
gs.Restore();Operadores de cores
SetColor e a) SetColorStroke Colocar cores de preenchimento e traço, respectivamente. Aceitam componentes RGB, CMYK ou escala de cinza.
// RGB fill color (blue)
var fill = new SetColor(0, 0, 1);
// RGB stroke color (red)
var stroke = new SetColorStroke(1, 0, 0);Operadores de texto
ShowText Rende uma cadeia de texto na posição atual do texto usando o fonte e tamanho atuais do estado gráfico.
var textOp = new ShowText("Hello, PDF!");SetTextMatrix posiciona texto definindo uma matriz de transformação para o texto espaço.
Estado de gráficos estendidos
ExtGState Controla propriedades de renderização avançadas como preenchimento e traço alfa (transparência) e modo de mistura.
Dicas e melhores práticas
- Sempre em par .
SaveState/RestoreState(ouq/Qoperadores) para evitar corromper a pilha de estado gráfico. - Utilização:
ContentStreamBuilderpara novos conteúdos, em vez de construir manualmente objetos do operador. - Inspecção
OperatorCollectionsomente leitura antes de modificar Sequências inesperadas do operador podem causar problemas de renderização. - Os operadores de cores devem corresponder ao espaço de cor atual (RGB, CMYK ou escala de cinzas).
- Utilização:
SetAdvancedColorpara espaços de cores com padrões e baseados em ICC.
Problemas comuns
| Emissão | Causa da morte | Correção |
|---|---|---|
| Texto não visível após a adição de operadores | Nenhuma fonte definida no estado de texto | Adicionar um SetFont operador antes de ShowText |
| As cores parecem erradas . | Desconcordância de espaço-cor (RGB vs CMYK) | Use o operador que corresponde ao espaço de cores ativo |
| Desbordamento de pilha do estado gráfico | Desbalanceado Save / Restore pares de animais | Assegurar que todos os SaveState tem um correspondente RestoreState |
| Conteúdo aparece na posição errada | Transformação de matriz inexistente ou incorreta | Verificar SetMatrix ou a) ConcatMatrix valores de |
FAQ
O que é um fluxo de conteúdo PDF?
Um fluxo de conteúdo é uma sequência de operadores que descrevem como renderizar uma página traços de desenho, colocação de texto, configuração de cores e gerenciamento do estado gráfico.
Posso adicionar novo conteúdo a uma página existente?
Sim, acesso. page.Contents e adicionar novos operadores, ou utilizar ContentStreamBuilder para construir uma sequência e anexá-la.
Como faço o texto transparente?
Utilização: ExtGState para definir o alfa de enchimento (ca) a um valor entre 0 (total) transparente) e 1 (totalmente opaco).
Resumo de referência da API
| Classe / Método | Descrição: |
|---|---|
OperatorCollection | Sequência de operadores do fluxo de conteúdo numa página |
ContentStreamBuilder | Construidor fluente para a construção de sequências de operadores |
ContentStreamBuilder.SaveState | Empurrar o estado gráfico atual na pilha |
ContentStreamBuilder.RestoreState | Pop gráficos estado da pilha |
ContentStreamBuilder.SetFillColor | Configurar a cor de preenchimento no espaço de cores atual |
ContentStreamBuilder.SetMatrix | Aplicar uma transformação de coordenadas |
GraphicsState | Rastreia a matriz de transformação, cor e estado do texto |
SetColor | O operador define a cor sem marcas (enchimento) |
SetColorStroke | Operador a definir a cor de traço |
SetAdvancedColor | Operador para espaços de cores baseados em padrões / ICC |
ShowText | Operador que representa uma cadeia de texto |
SetTextMatrix | Texto de posicionamento do operador através de uma matriz |
ExtGState | Estado gráfico estendido (modo alfa, blend) |