2

iTextSharp 支持使用PdfContentByte类创建形状和路径,您可以在那里设置颜色并绘制曲线和基本元素......是否有另一种方式的机制?我可以通过调用获取内容,PdfReader.GetPageContent(...)但我没有找到“解析器”来读取这些操作,将它们应用于图形上下文,例如在面板上绘制它。

例子:

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
....

谢谢您的回复!

4

2 回答 2

2

这是提取页面不同命令的起点:

    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!

        }
    }
于 2013-06-22T13:56:19.960 回答
1

这在 iTextSharp 中不受支持。原因:解析文本返回TextRenderInfo对象,解析图像返回ImageRenderInfo对象,但是我们应该以哪种形式返回GraphicsRenderInfo呢?很难找到通用的东西,而且绘制到图形上下文太具体了。

这个想法是您编写自己的解析器,就像我为删除 OCG 层所做的那样:OCGParser。iText 的这一部分还没有移植到 iTextSharp,但也许你可以用它来获得灵感。

请注意,您实际上是在构建 PDF 到图像功能。没有其他产品已经支持这个开箱即用吗?

于 2013-06-06T12:19:35.830 回答