I am trying to create a google doc file and fill it with content from html.
Html contains large table element, so to fit it page orientation of google doc must be landscaped. First I am creating google file using Docs API, change its page style to landscape,
and then trying to update this doc file using drive api. But when I do so the style goes back to portrait and html table does not fit to one page.
So basically I want the google doc file to not change its style,
or apply needed style before updating.Is there a way to do that?
My code
//drive service
class DriveService(){
fun getService(): Drive {
private val httpTransport: NetHttpTransport = GoogleNetHttpTransport.newTrustedTransport()
private val jsonFactory = JacksonFactory.getDefaultInstance()
return Drive.Builder(httpTransport, jsonFactory, getCredentials())
.setApplicationName(applicationName)
.build()
}
}
//update google doc file
val fileMetadata = File()
val filePath: java.io.File = ClassPathResource("files/index.html").file
val mediaContent = FileContent("text/html", filePath)
driveService.getService().files().update(
"google doc file id",fileMetadata, mediaContent)
.execute()
The part of code where I create google doc and changing style works fine, so I don't include it here.
UPDATE:
// google credentials
fun getCredentials(): com.google.api.client.auth.oauth2.Credential {
val classPathResource = ClassPathResource(p12FilePath)
val jsonFactory = JacksonFactory.getDefaultInstance()
val httpTransport = GoogleNetHttpTransport.newTrustedTransport()
return GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(jsonFactory)
.setServiceAccountId(serviceAccountId)
.setServiceAccountPrivateKeyFromP12File(classPathResource.inputStream)
.setServiceAccountScopes(setOf(DocsScopes.DRIVE_FILE, DocsScopes.DRIVE, DocsScopes.DOCUMENTS))
.setServiceAccountUser(email)
.build()
}
Related
I have a question about opening Multiple Revit Model in background to perform some batch automation task. These models were downloaded from BIM360 Design collaboration and placed into a folder.
public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
{
UIApplication uiapp = commandData.Application;
Document rvtDoc = null;
string[] files = Directory.GetFiles(#"C:\Models", "*.rvt");
foreach (string file in files)
{
ModelPath modelPath = ModelPathUtils.ConvertUserVisiblePathToModelPath(Path.GetFileName(file));
if (modelPath != null)
{
OpenOptions openOptions = new OpenOptions();
WorksetConfiguration openConfiguration = new WorksetConfiguration(WorksetConfigurationOption.OpenAllWorksets);
openOptions.SetOpenWorksetsConfiguration(openConfiguration);
openOptions.DetachFromCentralOption = DetachFromCentralOption.ClearTransmittedSaveAsNewCentral;
openOptions.Audit = false;
var currentDoc = uiapp.OpenAndActivateDocument(modelPath, openOptions, false);
}
}
return Result.Succeeded;
}
I couldn't skip the Login screen as shown in below images.
Any suggestion will be highly appreciated.
Do you really want to open and activate the document by?
var currentDoc = uiapp.OpenAndActivateDocument(modelPath, openOptions, false);
How about using the following way:
var currentDoc = uiapp.Application.OpenDocumentFile(modelPath, openOptions);
var uri = new System.Uri("ms-appx:///Assets/FixesViaMail_17Dec.pdf", UriKind.Absolute);
StorageFile file = await Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(uri);
This code is working very well because i m using my system file path but whenever i am using this code
var uri = new System.Uri("http://www.visa.com/assets/upload/11458/Hotel/Voucher114581423144270.pdf", UriKind.Absolute);
StorageFile file = await Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(uri);
then i am getting error that is.....
Value does not fall within the expected range.
Please Help me
GetFileFromApplicationUriAsync is only used for loading a file from within your application. To read a file from the web you'll need to download it. You can do this with either the HttpClient (for small files) or BackgroundDownloader (for large files) classes.
var uri = new Uri("http://www.visa.com/assets/upload/11458/Hotel/Voucher114581423144270.pdf");
var httpClient = new HttpClient();
// Always catch network exceptions for async methods
try
{
var response = await httpClient.GetAsync(uri);
// save response out
}
catch
{
// Details in ex.Message and ex.HResult.
}
See Connecting to an HTTP server using Windows.Web.Http.HttpClient (XAML) for more details.
var uri = new Uri("http://www.visa.com/assets/upload/11458/Hotel/Voucher114581423144270.pdf");
BackgroundDownloader download = new BackgroundDownloader();
DownloadOperation download = downloader.CreateDownload(uri, destinationFile);
See Transferring data in the background for more details.
Can you give me a sample code for crop an Image using Nokia Imaging SDK 1.2 ? As you know the "Editing Session" class, that I use for cropping Image has gone in SDK 1.2.
Thanks for your attention.
This is an excerpt from the nokia api reference documentation which can be found here:
http://developer.nokia.com/resources/library/Imaging_API_Ref/nokiagraphicsimaging-namespace/cropfilter-class.html
This sample takes CameraCaptureTask result photo and applies a [crop] filter to it.
async void CaptureTask_Completed(object sender, PhotoResult e)
{
// Create a source to read the image from PhotoResult stream
using (var source = new StreamImageSource(e.ChosenPhoto))
{
// Create effect collection with the source stream
using (var filters = new FilterEffect(source))
{
// Initialize the filter
var sampleFilter = new CropFilter(new Windows.Foundation.Rect(0, 0, 500, 500));
// Add the filter to the FilterEffect collection
filters.Filters = new IFilter[] { sampleFilter };
// Create a target where the filtered image will be rendered to
var target = new WriteableBitmap((int)ImageControl.ActualWidth, (int)ImageControl.ActualHeight);
// Create a new renderer which outputs WriteableBitmaps
using (var renderer = new WriteableBitmapRenderer(filters, target))
{
// Render the image with the filter(s)
await renderer.RenderAsync();
// Set the output image to Image control as a source
ImageControl.Source = target;
}
}
}
}
Hello everyone I have a small winrt aplication that downloads video from internet and I was trying to implement backgrounddownloader and filesavepicker together but I run on errors for every type of implementation I searched google and I searched microsoft documentation but nothing.I implemented download via HttpClient class but what I want is to get download progress and HttpClient doesn't offer it.Thx in advance
Here's a quick sample, how to do it:
// set download URI
var uri = new Uri("http://s3.amazonaws.com/thetabletshow/thetabletshow_0072_lhotka.mp3");
// get destination file
var picker = new FileSavePicker();
// set allowed extensions
picker.FileTypeChoices.Add("MP3", new List<string> { ".mp3" });
var file = await picker.PickSaveFileAsync();
// create a background download
var downloader = new BackgroundDownloader();
var download = downloader.CreateDownload(uri, file);
// create progress object
var progress = new Progress<DownloadOperation>();
// attach an event handler to get notified on progress
progress.ProgressChanged += (o, operation) =>
{
// use the progress info in Progress.BytesReceived and Progress.TotalBytesToReceive
ProgressText.Text = operation.Progress.BytesReceived.ToString();
};
// start the actual download
await download.StartAsync().AsTask(progress);
You should be able to modify it for your needs from here on.
I sometimes get a VersionConflictException when trying to download a file from Google Docs. I'm guessing this is harmless but why does this happen?
I'm using gdata-media-1.0-1.41.3.jar
com.google.gdata.util.VersionConflictException: Conflict
at com.google.gdata.client.http.HttpGDataRequest.handleErrorResponse(HttpGDataRequest.java:612)
at com.google.gdata.client.http.GoogleGDataRequest.handleErrorResponse(GoogleGDataRequest.java:563)
at com.google.gdata.client.http.HttpGDataRequest.checkResponse(HttpGDataRequest.java:552)
at com.google.gdata.client.http.HttpGDataRequest.execute(HttpGDataRequest.java:530)
at com.google.gdata.client.http.GoogleGDataRequest.execute(GoogleGDataRequest.java:535)
at com.google.gdata.client.media.MediaService.getMediaResource(MediaService.java:234)
at com.google.gdata.client.media.MediaService.getMedia(MediaService.java:276)
at com.google.gdata.client.media.MediaService.getMedia(MediaService.java:302)
The code we are using is as follows:
DocumentListEntry entry = ... // from the feed of changed documents
MediaContent documentContent = (com.google.gdata.data.MediaContent) entry.getContent();
String uri = documentContent.getUri();
MediaContent downloadContent = new MediaContent();
downloadContent.setUri(uri);
MediaSource mediaSource = docsService.getMedia(downloadContent);
InputStream inputStream = mediaSource.getInputStream();
File file = // some file
OutputStream output = new FileOutputStream(file);
try {
IOUtils.copy(inputStream, output);
} finally {
IOUtils.closeQuietly(output);
IOUtils.closeQuietly(inputStream);
}