chart - pdfptable itextsharp c#
Extrae caminos y formas con iTextSharp (2)
iTextSharp admite la creación de formas y caminos con la clase PdfContentByte
, allí puedes establecer colores y pintar curvas y elementos básicos ... ¿hay algún mecanismo que haga lo contrario? Puedo obtener contenido llamando a PdfReader.GetPageContent(...)
pero no encontré un "analizador" para leer esas operaciones, aplicarlas al contexto de gráficos y, por ejemplo, pintarlas en un panel.
Ejemplo:
1 1 1 RG
1 1 1 rg
0.12 0 0 0.12 16 31 cm
q
480 421 m
4318 421 l
4318 5459 l
480 5459 l
480 421 l W n
0.074509806931 0.074509806931 0.074509806931 RG
0.074509806931 0.074509806931 0.074509806931 rg /OC /oc1 BDC
....
¡Gracias por responder!
Aquí está el punto de partida para extraer los diferentes comandos de una página:
var file = "test.pdf";
var reader = new PdfReader(file);
var streamBytes = reader.GetPageContent(2);
var tokenizer = new PRTokeniser(new RandomAccessFileOrArray(streamBytes));
var ps = new PdfContentParser(tokenizer);
List<PdfObject> operands = new List<PdfObject>();
while (ps.Parse(operands).Count > 0)
{
PdfLiteral oper = (PdfLiteral)operands[operands.Count - 1];
var cmd = oper.ToString();
switch (cmd)
{
case "q":
Console.WriteLine("SaveGraphicsState(); //q");
break;
case "Q":
Console.WriteLine("RestoreGraphicsState(); //Q");
break;
// good luck with the rest!
}
}
Eso no es compatible con iTextSharp. La razón: el análisis para el texto devuelve objetos TextRenderInfo
, el análisis de imágenes devuelve objetos ImageRenderInfo
, pero ¿en qué forma debemos devolver GraphicsRenderInfo
? Es difícil encontrar algo genérico, y pintar en un contexto gráfico es demasiado específico.
La idea es que usted escriba su propio analizador, como lo hice, por ejemplo, para eliminar capas OCG: OCGParser . Esta parte de iText aún no ha sido portada a iTextSharp, pero tal vez puedas usarla como inspiración.
Tenga en cuenta que en realidad está creando PDF a la funcionalidad de la imagen. ¿No hay otros productos que ya admitan esto de la caja?