Печать PDF на Android без функции сохранения PDF

#java #android #pdf #printing

Вопрос:

Я тестирую функцию PDF-принтера на Android, мне удалось распечатать, следуя примеру на официальном сайте Android.

Но я хочу избавиться от функции сохранения PDF. Я просматриваю библиотеку, но не знаю, где я могу удалить эту функцию.

пожалуйста, скажите мне, как удалить функцию сохранения pdf

введите описание изображения здесь

Ниже приведен мой исходный код

Пользовательская печать (основная)

 package com.android.customprint;  import android.app.Activity; import android.os.Bundle; import android.view.View; import android.content.Context; import android.print.PrintManager;  import java.io.FileOutputStream; import java.io.IOException;  public class CustomPrintActivity extends Activity {   @Override  protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_main);  }   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);  }  }  

MyPrintDocumentAdapter (Implement)

 package com.android.customprint;   import android.os.Bundle; import android.os.CancellationSignal; import android.os.ParcelFileDescriptor; import android.print.PageRange; import android.print.PrintAttributes; import android.print.PrintDocumentAdapter; import android.content.Context; import android.print.PrintDocumentInfo; import android.print.pdf.PrintedPdfDocument; import android.graphics.pdf.PdfDocument; import android.graphics.pdf.PdfDocument.PageInfo; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint;  import java.io.FileOutputStream; import java.io.IOException;  public class MyPrintDocumentAdapter extends PrintDocumentAdapter {  Context context;  private int nPageHeight;  private int nPageWidth;  public PdfDocument myPdfDocument;  public int nTotalPages = 2;   public MyPrintDocumentAdapter(Context context)  {  this.context = context;  }   @Override  public void onLayout(PrintAttributes oldAttributes, PrintAttributes newAttributes, CancellationSignal cancellationSignal, LayoutResultCallback callback, Bundle metadata)  {  myPdfDocument = new PrintedPdfDocument(context, newAttributes);   nPageHeight = newAttributes.getMediaSize().getHeightMils()/1000 * 72;  nPageWidth = newAttributes.getMediaSize().getWidthMils()/1000 * 72;   if(cancellationSignal.isCanceled())  {  callback.onLayoutCancelled();  return;  }   if(nTotalPages gt; 0)  {  PrintDocumentInfo.Builder builder =  new PrintDocumentInfo.Builder("print_out.pdf")  .setContentType(PrintDocumentInfo.CONTENT_TYPE_DOCUMENT)  .setPageCount(nTotalPages);   PrintDocumentInfo info = builder.build();  callback.onLayoutFinished(info, true);  }else{  callback.onLayoutFailed("Page Count is Zero");  }  }   @Override  public void onWrite(final PageRange[] pageRanges, final ParcelFileDescriptor destination, final CancellationSignal cancellationSignal, final WriteResultCallback callback)  {  for(int nIndex=0; nIndexlt;nTotalPages; nIndex  )  {  if(pageInRange(pageRanges, nIndex))  {  PageInfo newPage = new PdfDocument.PageInfo.Builder(nPageWidth, nPageHeight, nIndex).create();   PdfDocument.Page page = myPdfDocument.startPage(newPage);   if(cancellationSignal.isCanceled())  {  callback.onWriteCancelled();  myPdfDocument.close();  myPdfDocument = null;  return;  }   drawPage(page, nIndex);  myPdfDocument.finishPage(page);  }  }   try{  myPdfDocument.writeTo(new FileOutputStream(destination.getFileDescriptor()));  }catch (IOException e){  callback.onWriteFailed(e.toString());  }finally {  myPdfDocument.close();  myPdfDocument = null;  }  callback.onWriteFinished(pageRanges);  }   private boolean pageInRange(PageRange[] pageRanges, int nPage)  {  for(int nIndex=0; nIndexlt;pageRanges.length; nIndex  )  {  if((nPage gt;= pageRanges[nIndex].getStart()) amp;amp; (nPage lt;= pageRanges[nIndex].getEnd()))  {  return true;  }  }  return false;  }    /*  2021-10-27 신정원  페이지 캔버스에 필요한 콘텐츠를 그리는 메서드  */  private void drawPage(PdfDocument.Page page, int nPageNumber)  {  //캔버스 객체에 대한 참조  Canvas canvas = page.getCanvas();   //페이지 번호가 0부터 시작하기 때문에 1을 증가하여 1페이지부터 시작으로 만든다.  nPageNumber  ;   //여백과 기준값 선언  int nTitleBaseLine = 72;  int nLeftMargin = 54;   //그리기에 사용할 paint 와 color 개체 생성과 텍스트 사이즈 설정  Paint paint = new Paint();  paint.setColor(Color.BLACK);  paint.setTextSize(40);   //제목 텍스트 그리기  canvas.drawText(  "Test Print Document Page "    nPageNumber, nLeftMargin, nTitleBaseLine, paint);   //본문 사이지 14, 본문 텍스트 그리기  paint.setTextSize(14);  canvas.drawText("인쇄 테스트", nLeftMargin, nTitleBaseLine   35, paint);   if(nPageNumber % 2 == 0)  {  paint.setColor(Color.RED);  }  else  {  paint.setColor(Color.GREEN);  }   PageInfo pageInfo = page.getInfo();   canvas.drawCircle(pageInfo.getPageWidth()/2, pageInfo.getPageHeight()/2, 150, paint);  } }