http://developer.android.com/training/printing/index.html文档介绍了如何通过在 PDF 画布上呈现自定义内容并发送由此创建的 PDF 文档进行打印来打印自定义内容。但是没有关于如果我们已经有一个 PDF 文档,如何发送它进行打印的信息?
类似于位图打印,有类似printHelper.printPDF的方法吗?
printing pdf android android-4.4-kitkat android-print-framework
我正在尝试实现或多或少有效的打印API。我可以使用api级别19中引入的打印框架将文件发送到Google Cloud Print应用程序并进行打印。但是如果我不必一直用手发送纸格式,那将是很好的,因为它以纸格式开始索引卡4x6,这不是我想要的,我想要A4。如果GCP应用程序会记住配置,我可能会接受它,但是我必须为每个单独的printjob设置它,这有点令人沮丧。
我发现我可以通过设置PrintAttributes来对此进行归档。但是,无论我将它们设置为什么,它始终是纸质格式的索引卡4x6。如果我在打印对话框中将格式手动设置为A4,则效果很好
PrintManager printManager = (PrintManager) ctx.getSystemService(Context.PRINT_SERVICE);
String jobName = "Jobname";
PrintAttributes.Builder builder = new PrintAttributes.Builder();
builder.setMediaSize(PrintAttributes.MediaSize.ISO_A4);
builder.setColorMode(PrintAttributes.COLOR_MODE_MONOCHROME);
PrintAttributes attr = builder.build();
printManager.print(jobName, new PrintDocumentAdapterForFiles(ctx, new File(filePath), jobName), attr );
Run Code Online (Sandbox Code Playgroud)
万一重要:打印机是Canon Pixma IP 110
有没有办法在打印框架中将默认纵向预览更改为横向?
我试过下面 -
PrintAttributes attrib = new PrintAttributes.Builder()
.setMediaSize(PrintAttributes.MediaSize.NA_LETTER.asLandscape())
.setMinMargins(PrintAttributes.Margins.NO_MARGINS)
. build();
Run Code Online (Sandbox Code Playgroud)
并尝试下面 -
PrintAttributes attrib = new PrintAttributes.Builder()
.setMediaSize(PrintAttributes.MediaSize.UNKNOWN_LANDSCAPE)
.setMinMargins(PrintAttributes.Margins.NO_MARGINS)
. build();
Run Code Online (Sandbox Code Playgroud)
我注意到它没有将页面方向更改为Landscape
在上面的打印设置对话框中,如果我确实将方向更改为横向,则只有打印预览页面才会将方向更改为横向.这可以通过编程方式完成吗?我希望在Landscape中进行默认预览.
我想在我的应用程序中按下按钮并将 pdf 文档发送到打印机直接打印(不显示来自打印框架 Android 4.4 的系统 android 预览)。我该怎么做?我试图通过 Socket 连接到打印机。没关系,无一例外,但我的打印机没有响应,也没有打印任何内容。
也许我需要在手机上为混凝土打印机设置驱动程序?但是怎么做,我在哪里可以得到这样的驱动程序?
已编辑
在我的应用程序中,我在按钮单击事件上创建了一个 PDF 文档。并且我使用了打印框架来打印该文档。所有这些都工作正常。我需要的是,我想将该 pdf 文档保存到手机存储中的文件夹中.如何做到这一点,我不知道如何将此 pdf 保存到文件中。有人可以帮我吗?提前谢谢。
我的生成pdf的代码
public class CustomPrintActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_custom_print);
}
public void printDocument(View view)
{
PrintManager printManager = (PrintManager) this
.getSystemService(Context.PRINT_SERVICE);
String jobName = this.getString(R.string.app_name) +
" Document";
printManager.print(jobName, new MyPrintDocumentAdapter(this),
null);
}
public class MyPrintDocumentAdapter extends PrintDocumentAdapter {
Context context;
private int pageHeight;
private int pageWidth;
public PdfDocument myPdfDocument;
public int totalpages = 1;
public MyPrintDocumentAdapter(Context context) {
this.context = context;
}
@Override
public void onLayout(PrintAttributes …Run Code Online (Sandbox Code Playgroud) android android-file android-print-framework android-pdf-api
我在我的应用程序中使用默认的android打印机我已经按照此链接打印Web视图.
它得到打印但我的问题是打印对话框打开时默认页面大小是A4,可以将纸张大小更改为A5默认值?我试过谷歌,但我找不到答案,任何人都可以帮助我