gpt4 book ai didi

android - 在空白页面中使用 android 结果创建 PDF

转载 作者:行者123 更新时间:2023-11-29 01:25:44 25 4
gpt4 key购买 nike

我正在尝试从我以编程方式创建的 View 创建 PDF 文件。似乎仅当将 View 添加到我的主布局时才能正确创建 pdf,但我不希望这样。这是我的测试代码:

RelativeLayout layout;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

ImageView imgView = (ImageView) findViewById(R.id.imageView);
mainView = (RelativeLayout) findViewById(R.id.main_layout);

layout = new RelativeLayout(this);

RelativeLayout.LayoutParams imgParams = new RelativeLayout.LayoutParams(800, 800);
imgParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
imgParams.addRule(RelativeLayout.ALIGN_PARENT_START);

ImageView newImg = new ImageView(this);
newImg.setLayoutParams(imgParams);
newImg.setImageDrawable(imgView.getDrawable());

layout.addView(newImg);
}

private void create() {
layout.layout(0, 0, 1000, 1000);

layout.post(new Runnable() {
@Override
public void run() {
createPdf();
}
});
}

private void createPdf() {
OutputStream os = null;
File file = null;

PdfDocument pdfDoc = new PdfDocument();
PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(1000, 1000, 1).create();
PdfDocument.Page page = pdfDoc.startPage(pageInfo);

layout.draw(page.getCanvas());

pdfDoc.finishPage(page);

try {
file = new File(Environment.getExternalStorageDirectory(), "page.pdf");
os = new BufferedOutputStream(new FileOutputStream(file));
pdfDoc.writeTo(os);
pdfDoc.close();
os.close();

} catch (IOException e) {

}
}

这将创建一个空的 pdf。如果我在 create() 中添加这两行代码,它就起作用了:

    mainView.removeAllViews();
mainView.addView(layout);

但我不想删除主视图上的内容。我怎样才能使这项工作?

编辑:

我找到了一个可能的解决方案。无论出于何种原因,它想要附加到在 xml 中静态定义的 View 。因此,在具有 id 的 xml 中定义一个空的 View 组。您在 onCreate() 中获得一个引用,然后您基本上可以使用上面的代码,但您可以在此 View 上使用 addView()。哦,将 View 组设置为不可见,因为您不想显示它。不过,我只在一台设备上进行了测试。

最佳答案

layout.measure(1000, 1000);layout.layout(0, 0, 1000, 1000);

我遇到了类似的问题,这为我解决了。

Android: inflating a layout and writting it to PDF produces a blank PDF

关于android - 在空白页面中使用 android 结果创建 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34201543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com