PDFBox - 坐标系

时间:2011-02-02 09:31:58

标签: java pdfbox coordinate-systems

我想完成以下事情。我有一套PDF文件,首先我想检查一下坐标系的来源。如果pdf坐标系的原点不是左上角[通常原点是左下方],我想在左上角创建一个带坐标的结果PDF。我试图使用PDFBox [下面的代码片段]来做到这一点,但结果PDF是空白的,我做错了什么。我是PDFBox的新手,因此非常感谢这方面的任何帮助。

        // loading the existing doc             
        PDDocument doc = PDDocument.load("C:\\Users\\test\\workspace\\example1.pdf");  
        List allPages = doc.getDocumentCatalog().getAllPages();  
        PDPageContentStream contentStream = null;  

        for( int i=0; i<allPages.size(); i++ )  
        {  
            PDPage page = (PDPage)allPages.get( i );  
            contentStream = new PDPageContentStream(doc, page);  
             contentStream.concatenate2CTM(1f, 0f, 0f, -1f, 0f,   page.findMediaBox().getHeight());  
             contentStream.saveGraphicsState();  
            contentStream.close();  

        }  
        doc.save("C:\\Users\\test\\workspace\\example2.pdf");  
        doc.close();  

1 个答案:

答案 0 :(得分:2)

您正在创建一个空的,已转换的内容流。

您需要通过page.getContents()获取现有内容,并将其包含在转换中。类似的东西:

contentStream.conactenate2CTM(...);
contentStream.magicFunctionThatSucksUpTheExistingPageContent( page.getContents() );
contentStream.close();

PS:拨打saveGraphicsState()但没有对restoreGraphicsState()进行相应调用的电话是禁忌。

哦,看起来“magicFunction ......”被称为appendRawCommands()