3

我想完成以下事情。我有一组 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();  
4

1 回答 1

2

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

您需要通过 获取现有内容page.getContents(),并将其包装在您的转换中。就像是:

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

PS:saveGraphicsState()没有相应呼叫的呼叫restoreGraphicsState()是禁止的。

哦,它看起来像“magicFunction ...”被调用appendRawCommands()

于 2011-02-03T00:07:02.130 回答