How can I print images to pdf with page size larger than screen size (r2016b, r2017a)? (Warning: An error occurred while drawing the scene)

9 ビュー (過去 30 日間)
I am having trouble printing figures filled with images to pdf when the paper size is >= screen size. The pdf gets generated but the figure size, placement and content are incorrect. During the print, I get this warning:
Warning: An error occurred while drawing the scene
> In defaulterrorcallback (line 12)
In alternatePrintPath>LocalSetPaintDisabled
In alternatePrintPath>printCleanup
In alternatePrintPath>@()printCleanup(pj,pt)
In onCleanup/delete (line 60)
In alternatePrintPath
In print (line 82)
I am seeing this issue with r2016b and r2017a. I was previously using r2015b and never had this problem. Below is a script that I have used to regenerate the issue:(Note that the goal is to have the image fill the pdf page hence the need for explicitly setting the 'paperposition' property)
% Store original units
originalUnits = get(0,'units');
% Set units to inches
set(0,'units','inches');
% Obtain screen size information
screenSizeInches = get(0,'screensize');
% Scale to desired paper size
largePaperSize = screenSizeInches*1.2;
smallPaperSize = screenSizeInches*0.8;
% Get data
data = rand(9);
% Figure with image only
imageHandle = figure;
imagesc(data);
% Figure with lines only
plotHandle = figure;
plot(data);
% Figure with both image and lines
combinedHandle = figure;
subplot(2,1,1)
imagesc(data);
subplot(2,1,2)
plot(data);
% Print to paper larger than screen
% Print image - *Issue here*
set(imageHandle,'paperunits','inches')
set(imageHandle,'papersize',largePaperSize (3:4))
set(imageHandle,'paperposition',largePaperSize );
print(imageHandle, 'testImagePrintLarge.pdf', '-dpdf', '-r0');
% Print lines - No issue
set(plotHandle,'paperunits','inches')
set(plotHandle,'papersize',largePaperSize (3:4))
set(plotHandle,'paperposition',largePaperSize);
print(plotHandle, 'testLinePrintLarge.pdf', '-dpdf', '-r0');
% Print both - No issue
set(combinedHandle,'paperunits','inches')
set(combinedHandle,'papersize',largePaperSize (3:4))
set(combinedHandle,'paperposition',largePaperSize);
print(combinedHandle, 'testCombinedPrintLarge.pdf', '-dpdf', '-r0');
% Print to paper smaller than screen
% Print image - No issue
set(imageHandle,'paperunits','inches')
set(imageHandle,'papersize',smallPaperSize(3:4))
set(imageHandle,'paperposition',smallPaperSize);
print(imageHandle, 'testImagePrintSmall.pdf', '-dpdf', '-r0');
% Restore original units property
set(0, 'units', originalUnits);

採用された回答

Anand Patel
Anand Patel 2017 年 4 月 24 日
You can use 'opengl' renderer option to generate output. For example,
print(imageHandle, 'testImagePrintLarge.pdf', '-dpdf', '-opengl', '-r0');
To get higher resolution output, use '-r150', '-r300' or larger number.

その他の回答 (1 件)

Ankitha Kollegal Arjun
Ankitha Kollegal Arjun 2017 年 4 月 17 日
The issue is likely caused by the 'paperposition' property. Try removing this option.
Replace this:
set(imageHandle,'paperposition',largePaperSize );
By this:
set(imageHandle);
  1 件のコメント
Sirmwami
Sirmwami 2017 年 4 月 17 日
I should have mentioned that the intention is to have the image fill the pdf page hence the need to specify the 'paperposition' property. Thanks for the input but unfortunately, it does not meet my needs.
My apologies for the lack of clarity, I'll edit the question to be more specific.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeImages についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by