我有以下代码,但此代码仅将最后一个图像添加到pdf中。
try {
filePath = (filePath != null && filePath.endsWith(".pdf")) ? filePath
: filePath + ".pdf";
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document,
new FileOutputStream(filePath));
document.open();
// document.add(new Paragraph("Image Example"));
for (String imageIpath : imagePathsList) {
// Add Image
Image image1 = Image.getInstance(imageIpath);
// Fixed Positioning
image1.setAbsolutePosition(10f, 10f);
// Scale to new height and new width of image
image1.scaleAbsolute(600, 800);
// image1.scalePercent(0.5f);
// Add to document
document.add(image1);
//document.bottom();
}
writer.close();
} catch (Exception e) {
LOGGER.error(e.getMessage());
}
您是否会告诉我如何更新代码以便将所有图片添加到导出的pdf中? imagePathsList包含我想要添加到单个pdf中的所有图像路径。
最诚挚的问候, 奥勒利安
答案 0 :(得分:4)
查看MultipleImages示例,您会发现代码中存在两个错误:
看看我的代码:
public void createPdf(String dest) throws IOException, DocumentException {
Image img = Image.getInstance(IMAGES[0]);
Document document = new Document(img);
PdfWriter.getInstance(document, new FileOutputStream(dest));
document.open();
for (String image : IMAGES) {
img = Image.getInstance(image);
document.setPageSize(img);
document.newPage();
img.setAbsolutePosition(0, 0);
document.add(img);
}
document.close();
}
我使用第一张图片的大小创建一个Document
实例。然后我循环遍历图像数组,将下一页的页面大小设置为每个图像的大小之前我触发newPage()
[*] 。然后我在坐标0,0处添加图像,因为现在图像的大小将与每个页面的大小相匹配。
[*] 只有在当前页面添加了某些内容时,newPage()
方法才会生效。第一次进入循环时,尚未添加任何内容,因此没有任何反应。这就是您在创建Document
实例时需要将页面大小设置为第一个图像大小的原因。
答案 1 :(得分:0)
Android具有" PdfDocument"实现这一目标,
Grid>
<Grid.RowDefinitions>
<RowDefinition Height="150"/>
</Grid.RowDefinitions>
<ListView Grid.Row="0" ItemsSource="{Binding Person}" ScrollViewer.VerticalScrollBarVisibility="Visible" ScrollViewer.CanContentScroll="True" >
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding Path=Id}" Header="Id" Width="100"/>
<GridViewColumn DisplayMemberBinding="{Binding Path=Name}" Header="Name" Width="Auto" />
</GridView>
</ListView.View>
</ListView>
<Grid>
}
最后在清单中启用存储权限,这应该有效