调整文档大小后,新内容具有相同的大小。如何在 ByteArrayOutputStream 中保存新的大小?
After resize document, new content have as same size. How save new size in ByteArrayOutputStream?
我的文件大小有问题。我通过垂直方向 (595.0x842.0) pdf 并将方向 pdf 更改为水平 (842.0x595.0) 但是当我 return ByteArrayOutputStream
作为 ByteArray 并且我尝试阅读这个 ByteArray 我得到垂直方向( 595.0x842.0) 而不是水平 (842.0x595.0)
为了编写新内容,我使用 PdfWriter 并发送新大小的 Document
和 ByteArrayOutputStream
作为第二个参数。
PdfReader reader = new PdfReader(pdf.getFile());
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
Document document = new Document(PageSize.A4.rotate(), 0, 0, 0, 0);
PdfWriter writer = PdfWriter.getInstance(document, outputStream);
我希望输出水平 (842.0x595.0) 而不是 (595.0x842.0)
我需要此代码中的这个维度:
PdfReader reader = new PdfReader(pdf.getFile());
int n = reader.getNumberOfPages();
PdfStamper stamper = new PdfStamper(reader,outputStream);
PdfContentByte pageContent;
for (int i = 0; i < n;) {
pageContent = stamper.getOverContent(++i);
System.out.println(reader.getPageSize(i));
ColumnText.showTextAligned(pageContent, Element.ALIGN_RIGHT,
new Phrase(String.format("page %s of %s", i, n)),
reader.getPageSize(i).getWidth()- 20, 20, 0);
}
此变量 pdf.getFile()
是来自先前代码的 ByteArray(ByteArrayOutputStream
)。
我希望页码在右下角(x 点 842),但实际是 595。
为了更好地理解我发送截图。
您使用 PdfReader
方法 getPageSize
但您应该使用 getPageSizeWithRotation
,即您应该替换
System.out.println(reader.getPageSize(i));
ColumnText.showTextAligned(pageContent, Element.ALIGN_RIGHT,
new Phrase(String.format("page %s of %s", i, n)),
reader.getPageSize(i).getWidth()- 20, 20, 0);
来自
System.out.println(reader.getPageSizeWithRotation(i));
ColumnText.showTextAligned(pageContent, Element.ALIGN_RIGHT,
new Phrase(String.format("page %s of %s", i, n)),
reader.getPageSizeWithRotation(i).getWidth()- 20, 20, 0);
背景
页面有两个属性负责最终显示的页面尺寸:MediaBox 和 Rotate。 (让我们暂时忽略裁剪框和所有其他也存在的框。)
因此,可以通过两种概念上不同的方式创建横向 A4 页面,作为 0°(或 180°)旋转的 842x595 媒体框或作为 90°(或 270°)旋转的 595x842 媒体框旋转。
如果用 PageSize.A4.rotate()
实例化 Document
,iText 使用后一种方式。 (如果你用 new RectangleReadOnly(842,595)
实例化它,iText 会使用前一种方式。)
PdfReader.getPageSize
只检查媒体盒。因此,对于具有 595x842 媒体框和 90° 旋转的 PDF 页面,它 returns 宽度为 595 的矩形。
PdfReader.getPageSizeWithRotation
还检查页面旋转。因此,对于具有 595x842 媒体框和 90° 旋转的 PDF 页面,它 returns 宽度为 842 的矩形。
我的文件大小有问题。我通过垂直方向 (595.0x842.0) pdf 并将方向 pdf 更改为水平 (842.0x595.0) 但是当我 return ByteArrayOutputStream
作为 ByteArray 并且我尝试阅读这个 ByteArray 我得到垂直方向( 595.0x842.0) 而不是水平 (842.0x595.0)
为了编写新内容,我使用 PdfWriter 并发送新大小的 Document
和 ByteArrayOutputStream
作为第二个参数。
PdfReader reader = new PdfReader(pdf.getFile());
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
Document document = new Document(PageSize.A4.rotate(), 0, 0, 0, 0);
PdfWriter writer = PdfWriter.getInstance(document, outputStream);
我希望输出水平 (842.0x595.0) 而不是 (595.0x842.0)
我需要此代码中的这个维度:
PdfReader reader = new PdfReader(pdf.getFile());
int n = reader.getNumberOfPages();
PdfStamper stamper = new PdfStamper(reader,outputStream);
PdfContentByte pageContent;
for (int i = 0; i < n;) {
pageContent = stamper.getOverContent(++i);
System.out.println(reader.getPageSize(i));
ColumnText.showTextAligned(pageContent, Element.ALIGN_RIGHT,
new Phrase(String.format("page %s of %s", i, n)),
reader.getPageSize(i).getWidth()- 20, 20, 0);
}
此变量 pdf.getFile()
是来自先前代码的 ByteArray(ByteArrayOutputStream
)。
我希望页码在右下角(x 点 842),但实际是 595。
为了更好地理解我发送截图。
您使用 PdfReader
方法 getPageSize
但您应该使用 getPageSizeWithRotation
,即您应该替换
System.out.println(reader.getPageSize(i));
ColumnText.showTextAligned(pageContent, Element.ALIGN_RIGHT,
new Phrase(String.format("page %s of %s", i, n)),
reader.getPageSize(i).getWidth()- 20, 20, 0);
来自
System.out.println(reader.getPageSizeWithRotation(i));
ColumnText.showTextAligned(pageContent, Element.ALIGN_RIGHT,
new Phrase(String.format("page %s of %s", i, n)),
reader.getPageSizeWithRotation(i).getWidth()- 20, 20, 0);
背景
页面有两个属性负责最终显示的页面尺寸:MediaBox 和 Rotate。 (让我们暂时忽略裁剪框和所有其他也存在的框。)
因此,可以通过两种概念上不同的方式创建横向 A4 页面,作为 0°(或 180°)旋转的 842x595 媒体框或作为 90°(或 270°)旋转的 595x842 媒体框旋转。
如果用 PageSize.A4.rotate()
实例化 Document
,iText 使用后一种方式。 (如果你用 new RectangleReadOnly(842,595)
实例化它,iText 会使用前一种方式。)
PdfReader.getPageSize
只检查媒体盒。因此,对于具有 595x842 媒体框和 90° 旋转的 PDF 页面,它 returns 宽度为 595 的矩形。
PdfReader.getPageSizeWithRotation
还检查页面旋转。因此,对于具有 595x842 媒体框和 90° 旋转的 PDF 页面,它 returns 宽度为 842 的矩形。