itext 旋转 pdf 文档但不旋转图像
itext Rotate pdf document but not image
我正在使用 itext 库,我必须在其中放置在横向模式下正确缩放的图像。但是,如果我将页面更改为横向模式,那里的图像也会旋转。我不希望 that.And 如果我旋转图像,它的行为会有所不同,它不会从中心旋转。
但是,我想要的图像不应该旋转,应该如下所示
这是我的代码
Document document=new Document();
try {
File file=new File(Environment.getExternalStorageDirectory(),"mypdfimage.pdf");
PdfWriter.getInstance(document, new FileOutputStream(file));
document.open();
Image image = null;
try {
image = Image.getInstance (Environment.getExternalStorageDirectory()+"/image.jpg");
int identation=0;
//Rectangle rectangle=document.getPageSize();
Rotation rotation=new Rotation();
pdfwriter.setPageEvent(rotation);
//image.scalePercent(scalerX, scalerY);
//PdfDictionary pageDict=null;
// pageDict.put(PdfName.ROTATE, new PdfNumber(90));
//pdfwriter.addPageDictEntry(PdfName.ROTATE, PdfPage.LANDSCAPE);
image.scaleToFit(PageSize.A4.getWidth() - document.leftMargin() - document.rightMargin(), PageSize.A4.getHeight() - document.topMargin() - document.bottomMargin());
// image.setRotationDegrees(90);
// image.setAlignment(Element.ALIGN_CENTER);
document.add(image);
document.close();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public class Rotation extends PdfPageEventHelper
{
@Override
public void onStartPage(PdfWriter writer, Document document) {
writer.addPageDictEntry(PdfName.ROTATE,PdfPage.LANDSCAPE);
}
}
您旋转页面的方式有误。您可能举了一个例子来回答如何旋转页面 和 其内容的问题。那就是例外。如果您遵循有关如何旋转页面的正常示例,页面将旋转,但图像不会旋转。
请看一下ImageOnRotatedPage例子:
public void createPdf(String dest) throws IOException, DocumentException {
Document document = new Document(PageSize.A4.rotate());
PdfWriter.getInstance(document, new FileOutputStream(dest));
document.open();
Image img = Image.getInstance(IMAGE);
img.scaleToFit(770, 523);
float offsetX = (770 - img.getScaledWidth()) / 2;
float offsetY = (523 - img.getScaledHeight()) / 2;
img.setAbsolutePosition(36 + offsetX, 36 + offsetY);
document.add(img);
document.close();
}
如您所见,我使用 rotate()
方法创建了一个旋转的 A4 页面:
Document document = new Document(PageSize.A4.rotate());
我还缩放了图像以使其适合页面,并计算了一个偏移量以使其很好地位于页面的中心。见 cardiogram.pdf:
这看起来正是您想要的样子,您不需要求助于使用页面事件和更改页面字典。
我正在使用 itext 库,我必须在其中放置在横向模式下正确缩放的图像。但是,如果我将页面更改为横向模式,那里的图像也会旋转。我不希望 that.And 如果我旋转图像,它的行为会有所不同,它不会从中心旋转。
但是,我想要的图像不应该旋转,应该如下所示
这是我的代码
Document document=new Document();
try {
File file=new File(Environment.getExternalStorageDirectory(),"mypdfimage.pdf");
PdfWriter.getInstance(document, new FileOutputStream(file));
document.open();
Image image = null;
try {
image = Image.getInstance (Environment.getExternalStorageDirectory()+"/image.jpg");
int identation=0;
//Rectangle rectangle=document.getPageSize();
Rotation rotation=new Rotation();
pdfwriter.setPageEvent(rotation);
//image.scalePercent(scalerX, scalerY);
//PdfDictionary pageDict=null;
// pageDict.put(PdfName.ROTATE, new PdfNumber(90));
//pdfwriter.addPageDictEntry(PdfName.ROTATE, PdfPage.LANDSCAPE);
image.scaleToFit(PageSize.A4.getWidth() - document.leftMargin() - document.rightMargin(), PageSize.A4.getHeight() - document.topMargin() - document.bottomMargin());
// image.setRotationDegrees(90);
// image.setAlignment(Element.ALIGN_CENTER);
document.add(image);
document.close();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public class Rotation extends PdfPageEventHelper
{
@Override
public void onStartPage(PdfWriter writer, Document document) {
writer.addPageDictEntry(PdfName.ROTATE,PdfPage.LANDSCAPE);
}
}
您旋转页面的方式有误。您可能举了一个例子来回答如何旋转页面 和 其内容的问题。那就是例外。如果您遵循有关如何旋转页面的正常示例,页面将旋转,但图像不会旋转。
请看一下ImageOnRotatedPage例子:
public void createPdf(String dest) throws IOException, DocumentException {
Document document = new Document(PageSize.A4.rotate());
PdfWriter.getInstance(document, new FileOutputStream(dest));
document.open();
Image img = Image.getInstance(IMAGE);
img.scaleToFit(770, 523);
float offsetX = (770 - img.getScaledWidth()) / 2;
float offsetY = (523 - img.getScaledHeight()) / 2;
img.setAbsolutePosition(36 + offsetX, 36 + offsetY);
document.add(img);
document.close();
}
如您所见,我使用 rotate()
方法创建了一个旋转的 A4 页面:
Document document = new Document(PageSize.A4.rotate());
我还缩放了图像以使其适合页面,并计算了一个偏移量以使其很好地位于页面的中心。见 cardiogram.pdf:
这看起来正是您想要的样子,您不需要求助于使用页面事件和更改页面字典。