java在一个界面绘制两张图片_java – PDFBox – 将2个肖像页面合并到一个并排的横向页面上...

该博客介绍了如何使用Java的PDFBox库将包含1-up肖像页面的PDF转换为每2页合并为一个2-up横向页面的新文档。作者分享了代码片段,展示了如何缩放页面内容并尝试调整页面方向,但遇到了挑战,希望得到帮助和指导。
摘要由CSDN通过智能技术生成

我正在尝试编写一个pdf转换,它将包含一个包含1-up肖像页面的pdf,并创建一个新文档,但每2页合并为一个2-up横向页面

即.

以下代码将缩小内容50%,但我无法弄清楚如何使新页面成为景观,同时将其他页面作为肖像注入,并注入左上角和右中心

public static void main(String[] args) throws IOException, DocumentException, COSVisitorException {

scalePages("c:/pdf/in.pdf", "c:/pdf/out" + new Date().getTime() + ".pdf", 0.50f);

}

public static void scalePages(String inFile, String outFile, float scale ) throws IOException, COSVisitorException {

PDDocument doc1 = null;

try {

doc1 = PDDocument.load( inFile );

List allPages = doc1.getDocumentCatalog().getAllPages();

for( int i=0; i

PDPage page1 = (PDPage)allPages.get(i );

PDRectangle mediaBox = page1.getMediaBox();

float oldX = mediaBox.getUpperRightX();

float newX = oldX * scale;

float oldY = mediaBox.getUpperRightY();

float newY = oldY * scale;

mediaBox.setUpperRightX(newX);

mediaBox.setUpperRightY(newY);

PDFStreamParser parser = new PDFStreamParser(page1.getContents());

parser.parse();

List tokens = parser.getTokens();

tokens.add(0,new COSFloat(scale));

tokens.add(1,new COSInteger(0));

tokens.add(2,new COSInteger(0));

tokens.add(3,new COSFloat(scale));

tokens.add(4,new COSInteger(0));

tokens.add(5,new COSInteger(0));

tokens.add(6,PDFOperator.getOperator("cm"));

PDStream newContents = new PDStream( doc1 );

ContentStreamWriter writer = new ContentStreamWriter( newContents.createOutputStream() );

writer.writeTokens( tokens );

newContents.addCompression();

page1.setContents(newContents);

//page1.setRotation(90);

mediaBox.setUpperRightX(oldX);

mediaBox.setUpperRightY(oldY);

}

doc1.save( outFile );

} finally {

if( doc1 != null ) {

doc1.close();

}

}

}

结果如下

任何指针将不胜感激

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值