多页面方向 - Adobe Postscript 工具
Multiple Page Orientions - Tools for Adobe Postscript
我正在研究 Adobe Postscript 工具,并试图找到一种方法来生成具有多个方向的文档。
示例:
第 1 页的方向是纵向,第 2 页的方向是横向。
下面我尝试创建一个新页面,然后将页面尺寸设置为与之前相反的尺寸,以便高度变为宽度,宽度变为高度 - 有效地创建横向视图。但是,这不起作用,我想知道是否有办法做到这一点。
OutputStream out = new java.io.FileOutputStream(outputFile);
out = new java.io.BufferedOutputStream(out);
try {
//Instantiate the EPSDocumentGraphics2D instance
PSDocumentGraphics2D g2d = new PSDocumentGraphics2D(false);
g2d.setGraphicContext(new org.apache.xmlgraphics.java2d.GraphicContext());
//Set up the document size
g2d.setupDocument(out, pageWidthPT, pageHeightPT);
g2d.setFont(new Font(font, Font.PLAIN, fontSize));
g2d.drawString(" !", 10, 10);
g2d.nextPage();
g2d.setViewportDimension(pageHeightPT, pageWidthPT);
g2d.drawString("Hello World!", 10, 20);
System.out.println("Creating the document");
g2d.finish();//Cleanup
} finally {
IOUtils.closeQuietly(out);
}
在 nextPage()
之后,而不是 setViewportDimension()
使用 setupDocument()
,传入相同的 OutputStream
并交换宽度和高度:g2d.setupDocument(out, pageHeightPT, pageWidthPT);
编辑
调用 setupDocument()
的问题在于它会重置页数并再次生成文件头。相反,您可以扩展 PSDocumentGraphics2D
并添加您自己的 setDimension()
方法:
public class MyPSDocumentGraphics2D extends PSDocumentGraphics2D {
public MyPSDocumentGraphics2D(PSDocumentGraphics2D psDocumentGraphics2D) {
super(psDocumentGraphics2D);
}
public MyPSDocumentGraphics2D(boolean b, OutputStream outputStream, int i, int i1) throws IOException {
super(b, outputStream, i, i1);
}
public MyPSDocumentGraphics2D(boolean b) {
super(b);
}
public void setDimension(int width, int height) {
this.width = width;
this.height = height;
}
}
在MyPSDocumentGraphics2D
中,this.width
和this.height
指的是AbstractPSDocumentGraphics2D
的受保护成员属性。
您可以通过实例化 MyPSDocumentGraphics2D
然后将 g2d.setViewportDimension(pageHeightPT, pageWidthPT);
替换为 g2d.setDimension(pageHeightPT, pageWidthPT);
:
将其与您的示例联系起来
OutputStream out = new java.io.FileOutputStream(outputFile);
out = new java.io.BufferedOutputStream(out);
try {
//Instantiate my extension of the EPSDocumentGraphics2D instance
MyPSDocumentGraphics2D g2d = new MyPSDocumentGraphics2D(false);
g2d.setGraphicContext(new org.apache.xmlgraphics.java2d.GraphicContext());
//Set up the document size
g2d.setupDocument(out, pageWidthPT, pageHeightPT);
g2d.setFont(new Font(font, Font.PLAIN, fontSize));
g2d.drawString(" !", 10, 10);
g2d.nextPage();
// change the page orientation
g2d.setDimension(pageHeightPT, pageWidthPT);
g2d.drawString("Hello World!", 10, 20);
System.out.println("Creating the document");
g2d.finish();//Cleanup
} finally {
IOUtils.closeQuietly(out);
}
我正在研究 Adobe Postscript 工具,并试图找到一种方法来生成具有多个方向的文档。
示例:
第 1 页的方向是纵向,第 2 页的方向是横向。
下面我尝试创建一个新页面,然后将页面尺寸设置为与之前相反的尺寸,以便高度变为宽度,宽度变为高度 - 有效地创建横向视图。但是,这不起作用,我想知道是否有办法做到这一点。
OutputStream out = new java.io.FileOutputStream(outputFile);
out = new java.io.BufferedOutputStream(out);
try {
//Instantiate the EPSDocumentGraphics2D instance
PSDocumentGraphics2D g2d = new PSDocumentGraphics2D(false);
g2d.setGraphicContext(new org.apache.xmlgraphics.java2d.GraphicContext());
//Set up the document size
g2d.setupDocument(out, pageWidthPT, pageHeightPT);
g2d.setFont(new Font(font, Font.PLAIN, fontSize));
g2d.drawString(" !", 10, 10);
g2d.nextPage();
g2d.setViewportDimension(pageHeightPT, pageWidthPT);
g2d.drawString("Hello World!", 10, 20);
System.out.println("Creating the document");
g2d.finish();//Cleanup
} finally {
IOUtils.closeQuietly(out);
}
在 nextPage()
之后,而不是 setViewportDimension()
使用 setupDocument()
,传入相同的 OutputStream
并交换宽度和高度:g2d.setupDocument(out, pageHeightPT, pageWidthPT);
编辑
调用 setupDocument()
的问题在于它会重置页数并再次生成文件头。相反,您可以扩展 PSDocumentGraphics2D
并添加您自己的 setDimension()
方法:
public class MyPSDocumentGraphics2D extends PSDocumentGraphics2D {
public MyPSDocumentGraphics2D(PSDocumentGraphics2D psDocumentGraphics2D) {
super(psDocumentGraphics2D);
}
public MyPSDocumentGraphics2D(boolean b, OutputStream outputStream, int i, int i1) throws IOException {
super(b, outputStream, i, i1);
}
public MyPSDocumentGraphics2D(boolean b) {
super(b);
}
public void setDimension(int width, int height) {
this.width = width;
this.height = height;
}
}
在MyPSDocumentGraphics2D
中,this.width
和this.height
指的是AbstractPSDocumentGraphics2D
的受保护成员属性。
您可以通过实例化 MyPSDocumentGraphics2D
然后将 g2d.setViewportDimension(pageHeightPT, pageWidthPT);
替换为 g2d.setDimension(pageHeightPT, pageWidthPT);
:
OutputStream out = new java.io.FileOutputStream(outputFile);
out = new java.io.BufferedOutputStream(out);
try {
//Instantiate my extension of the EPSDocumentGraphics2D instance
MyPSDocumentGraphics2D g2d = new MyPSDocumentGraphics2D(false);
g2d.setGraphicContext(new org.apache.xmlgraphics.java2d.GraphicContext());
//Set up the document size
g2d.setupDocument(out, pageWidthPT, pageHeightPT);
g2d.setFont(new Font(font, Font.PLAIN, fontSize));
g2d.drawString(" !", 10, 10);
g2d.nextPage();
// change the page orientation
g2d.setDimension(pageHeightPT, pageWidthPT);
g2d.drawString("Hello World!", 10, 20);
System.out.println("Creating the document");
g2d.finish();//Cleanup
} finally {
IOUtils.closeQuietly(out);
}